PCI DSS 4.0 readiness for one site
const url = 'https://api.us.headerhawk.com/v1/compliance/pci-dss?siteId=2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://api.us.headerhawk.com/v1/compliance/pci-dss?siteId=2489E9AD-2EE2-8E00-8EC9-32D5F69181C0' \ --header 'Authorization: Bearer <token>'Requirements 6.4.3 (payment page scripts) and 11.6.1 (change and
tamper detection) for one site: each one’s verdict, the facts it rests
on, what is missing, and the evidence rows. Every plan can read it:
where a plan cannot meet a requirement, plan.requiredFor names the
plan that can. Reads reported data, so it spends the tenant’s budget
too.
The script evidence covers your plan’s whole retention period, named
in evidence.window, and the change evidence the last 30 days: the
same reads as the dashboard’s Compliance page, so the two verdicts
agree. A shorter window would leave out a rejected script last
reported on a payment page before it. Measured worst case: 11–36 ms
reading 16,395 script reports of one site in 90 days, the longest
retention on a published plan (an Enterprise contract can set its
own).
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”The site. A verdict is per site, never across sites.
Responses
Section titled “Responses”The site’s readiness
object
object
6.4.3, then 11.6.1.
object
A PCI DSS requirement’s verdict.
object
Scripts reported from the payment pages.
object
Includes scripts reported without integrity metadata that the inventory does not hold.
The site reports integrity violations, so protected
means something. False while every script is unknown.
One reason a requirement is not met. count is set for
unreviewed_scripts, rejected_scripts_running,
unprotected_scripts, integrity_unmeasured (the scripts whose
integrity nothing has measured) and no_recent_scan (the payment pages without
a complete scan in the last 7 days), eventType for no_rule; each
is null otherwise.
object
object
A PCI DSS requirement’s verdict.
object
daily while the plan scans payment pages and every one had a
complete scan in the last 7 days.
The least recent of the payment pages’ last complete scans; null while any payment page has none.
object
The alert catalog’s name for the change type.
Enabled rules with a destination whose scope reaches the site’s payment pages.
object
Of those, how many had an immediate alert delivered.
One reason a requirement is not met. count is set for
unreviewed_scripts, rejected_scripts_running,
unprotected_scripts, integrity_unmeasured (the scripts whose
integrity nothing has measured) and no_recent_scan (the payment pages without
a complete scan in the last 7 days), eventType for no_rule; each
is null otherwise.
object
object
The scripts reported from the payment pages.
object
A script’s current decision. unreviewed until someone
authorizes or rejects it.
any_content or pinned_hashes for an authorized script;
null otherwise.
object
Rejected, and reported on a payment page since the rejection.
object
The site’s payment pages and their last complete scan.
object
The plan scans payment pages and this one’s last complete scan is under 7 days old.
Scans of a payment page in the last 30 days that found a watched header changed or the grade dropped, newest first.
object
An immediate alert about this page’s change was delivered within a day. A digest is never matched: its delivery record cannot say which change it carried.
The window the script inventory was read over: your plan’s whole retention period. Null when the site has no payment page, so no inventory was read.
object
With no payment page, the busiest pages the site reported from in the last 30 days, as candidates. Empty otherwise.
object
object
A HeaderHawk plan. An open enum.
The plan each step needs, or null when the current plan has it.
object
A plan id.
A plan id.
A plan id.
Example
{ "data": { "requirements": [ { "id": "6.4.3", "status": "met", "gaps": [ { "kind": "no_payment_pages" } ] } ], "evidence": { "scripts": [ { "status": "unreviewed", "coverage": "protected" } ] }, "plan": { "current": "free" } }}Headers
Section titled “Headers”The budget nearest to running out, per minute.
What is left of that budget this minute.
Seconds until that budget starts again.
A parameter was refused, or one the operation does not take was sent. The message names it.
object
object
What went wrong. An open enum: treat a code you do not know by its HTTP status.
For people. Branch on code.
Quote it when you write to us about this request.
Example
{ "error": { "code": "bad_request" }}invalid_api_key: no key, or one that is malformed, unknown, revoked
or expired. One answer for all of them.
object
object
What went wrong. An open enum: treat a code you do not know by its HTTP status.
For people. Branch on code.
Quote it when you write to us about this request.
Example
{ "error": { "code": "bad_request" }}plan_upgrade_required: the tenant’s plan does not include API access
(the key works again when it does), or does not include what this
operation reads.
object
object
What went wrong. An open enum: treat a code you do not know by its HTTP status.
For people. Branch on code.
Quote it when you write to us about this request.
Example
{ "error": { "code": "bad_request" }}No such resource in your tenant.
object
object
What went wrong. An open enum: treat a code you do not know by its HTTP status.
For people. Branch on code.
Quote it when you write to us about this request.
Example
{ "error": { "code": "bad_request" }}rate_limited: over a budget. Wait Retry-After seconds.
object
object
What went wrong. An open enum: treat a code you do not know by its HTTP status.
For people. Branch on code.
Quote it when you write to us about this request.
Example
{ "error": { "code": "bad_request" }}Headers
Section titled “Headers”Seconds to wait before trying again.
rate_limit_unavailable or upstream_unavailable: HeaderHawk could
not serve this now. Nothing is wrong with the request; try again after
Retry-After seconds.
object
object
What went wrong. An open enum: treat a code you do not know by its HTTP status.
For people. Branch on code.
Quote it when you write to us about this request.
Example
{ "error": { "code": "bad_request" }}Headers
Section titled “Headers”Seconds to wait before trying again.