Optionaladcp_Release-precision AdCP version (VERSION.RELEASE, e.g. "3.0", "3.1", "3.1-beta"). On a request: the buyer's release pin — the seller validates against its supported_versions and returns VERSION_UNSUPPORTED on cross-major mismatch, or downshifts to the highest supported release within the same major. On a response: the release the seller actually served — clients SHOULD validate the response against that release's schema, not against their pin. Patches are not negotiated; surface them as build_version on capabilities for operational visibility. When omitted, falls back to adcp_major_version (deprecated) or server default. Buyers SHOULD emit both adcp_version and adcp_major_version through 3.x to remain compatible with sellers that only read the legacy field. NORMALIZATION: SDKs that read full-semver values from bundle metadata (e.g. ComplianceIndex.published_version = "3.1.0-beta.1") MUST normalize to release-precision ("3.1-beta.1") before emitting on the wire — meta-field values are NOT valid wire values.
Optionaladcp_DEPRECATED in favor of adcp_version (release-precision string). Servers MUST continue to honor this field through 3.x. Removed in 4.0. Original semantics: the AdCP major version the buyer's payloads conform to. Sellers validate against their supported major_versions and return VERSION_UNSUPPORTED if unsupported. When omitted, the seller assumes its highest supported version.
Client-generated unique key for at-most-once execution. Natural per-account upsert keys handle resource-level dedup, but the envelope triggers onboarding webhooks, billing setup, and audit events — this key prevents those side effects from firing twice on retry. MUST be unique per (seller, request) pair. Use a fresh UUID v4 for each request.
Per-account sync entries. Each entry uses one of two key shapes: the account field (AccountRef) for settings-update mode, or the flat brand + operator + billing trio for provisioning mode. An operator_identity settings update MUST carry the latest account revision.
Optionaldelete_When true, accounts previously synced by this agent but not included in this request will be deactivated. Scoped to the authenticated agent — does not affect accounts managed by other agents. Use with caution.
Optionaldry_When true, preview what would change without applying. Returns what would be created/updated/deactivated.
Optionalpush_OptionalcontextOptionalext
Sync advertiser account state with a seller. Two modes, distinguished by the key on each per-account entry:
Provisioning mode (
brand+operator+billingat the entry root): the agent declares the advertiser identity, operator, optional operator-owned buying unit, optional fixed account currency, conditionally required buyer-selected account timezone, sandbox disposition, and billing model. The seller provisions or links the corresponding advertiser object via upsert.brand.countries,operator_unit.id,currency, buyer-selectedtimezone, andsandboxparticipate in the buyer-declared natural key when present;operator_unit.nameis display metadata only. The seller MAY echo a seller-assigned account_id but MUST continue accepting the complete natural-key AccountRef.Settings-update mode (
accountfield carrying anAccountRef): targets an existing account by seller/storefrontaccount_idor buyer-declared natural key. The seller updates settable state without provisioning side effects. A completeoperator_identityvalue reconciles the existing account to the buyer's desired operator domain and optional operator unit; omission leaves identity unchanged.Exactly one key shape is allowed per entry. Sellers that do not implement one mode return
UNSUPPORTED_PROVISIONINGfor that mode. Identity reconciliation is additionally gated byget_adcp_capabilities.account.identity_updates.