feat(protocol): adopt AdCP 3.2 beta.9 - #1096
Conversation
| @@ -65,6 +65,7 @@ async def capabilities(params, context=None): | |||
| "get_signals": "signals", | |||
| "activate_signal": "signals", | |||
| # Account | |||
| "list_account_changes": "account", | |||
There was a problem hiding this comment.
MUST FIX: list_account_changes maps to domain "account", but its three sibling account operations (list_accounts, sync_accounts, get_account_financials) all map to "media_buy" — and for good reason. "account" is not a valid supported_protocols value: the capabilities schema enum is [media_buy, signals, governance, sponsored_intelligence, creative, brand, measurement] (verified in schemas/cache/3.2.0-beta.9/protocol/get-adcp-capabilities-response.json:871); account management is a separate top-level account capability block, not a protocol.
_detect_domains() feeds these values straight into capabilities_response(domains), so any server that registers list_account_changes and relies on auto-generated capabilities (the documented default) advertises supported_protocols: ["account", ...] on the wire — an out-of-enum value that fails buyer-side validation and the compliance runner. Map it to "media_buy".
| "list_account_changes": "account", | |
| "list_account_changes": "media_buy", |
Summary
list_account_changesThis release includes upstream adcp#6794.
Validation
make check-schema-driftmake typecheck-alluv run python scripts/generate_versioned_stubs.py --checkuv run pytest -q(7,338 passed, 77 skipped, 9 deselected, 1 xfailed)