adcp.major_versions, and, over time, the
get_products / create_media_buy / update_media_buy facades. AdCP 3.2
already carries what replaces them. We read the capabilities your agent
declares and tell you which of those replacements you are missing, so you can
upgrade before 4.0 rather than after it breaks.
This is a warning, not a gate. Your readiness does not change your
certification, block any buy, or affect how buyers reach you today.
Where you see it
Your Agent’s readiness is returned asadcpReadiness when you read your Agent
with get (kind: "agent"). Only your organization and Apostra staff see it.
It is null until we have read your capabilities at least once.
The verdict
No agent can reach
READY_FOR_4 yet. The compact-lifecycle check passes only
once you pass our compact-lifecycle certification, which is not available yet.
When the AdCP release that carries the rest of 4.0 ships, we will add its
checks to this page.
Each check in adcpReadiness.checks carries the field we read
(sourceFieldPath), what we found (whatWeSaw), and what to change
(howToFix).
The checks
Release versions (supported_versions)
What we read: adcp.supported_versions.
Why it matters: AdCP 4.0 removes adcp.major_versions. Buyers then pin a
release from supported_versions alone, so an agent that does not declare it
cannot be called at the right release.
To pass: list every release you speak, for example ["3.1", "3.2"].
Reliable Reporting (reliable_reporting)
What we read: media_buy.reporting_delivery and experimental_features.
Why it matters: Reliable Reporting is how
a buyer learns, from an authoritative record, whether a report is due,
complete, or late. It is the AdCP 3.2 reporting contract that 4.0 builds on.
To pass: declare a complete media_buy.reporting_delivery block with
supported: true and reliable_reporting_version: "1.0", and list
"media_buy.reporting_delivery" in experimental_features.
Request signing (request_signing)
What we read: request_signing.
Why it matters: AdCP 4.0 makes signed requests mandatory on every
operation that commits spend. Apostra already signs the requests it sends you;
Verifying our signed requests
explains how to check them.
To pass: declare request_signing with supported: true,
covers_content_digest: "required", and at least one spend-committing
operation (create_media_buy, update_media_buy, buy_products,
accept_proposal, or control_media_buy) in supported_for or
required_for.
Webhook signing (webhook_signing)
What we read: webhook_signing.
Why it matters: AdCP 4.0 removes HMAC and Bearer webhook authentication,
including webhook_signing.legacy_hmac_fallback. After that, only webhooks
signed with the AdCP webhook profile can be verified.
To pass: sign the webhooks you send and declare
webhook_signing.supported: true. If you declare profile, it must be
adcp/webhook-signing/v1. See
Signing the webhooks you send us.
Operator identity (operator_identity)
What we read: identity.brand_json_url.
Why it matters: buyers find your signing keys through your brand.json.
AdCP 4.0 requires you to declare its URL whenever you sign requests or
webhooks; the well-known fallback no longer applies.
To pass: publish a brand.json that lists your agent and its jwks_uri,
and declare its https URL in identity.brand_json_url.
Compact lifecycle (compact_lifecycle)
What we read: media_buy.lifecycle_tools.
Why it matters: the AdCP 3.2 compact lifecycle (list_products,
request_proposals, accept_proposal or buy_products, control_media_buy)
is the foundation of buying in 4.0. It is not a drop-in replacement for
get_products, so we will certify it separately.
To pass: implement the compact lifecycle and list the tools you serve in
media_buy.lifecycle_tools. Until our compact-lifecycle certification is
available, a declared lifecycle shows null rather than PASSED.
How we read your agent
- We read the capabilities we last stored from your
get_adcp_capabilitiesresponse, and each block must be valid under the AdCP 3.2 schema to pass. A declaration AdCP would reject, such as a Reliable Reporting block missing required fields, showsFAILED. We never call your agent to compute the verdict.capabilitiesRefreshedAtsays when we last read them. See Keep capabilities current. - If your Agent backs more than one inventory source, the verdict is for the least-ready of them.