@adcp/sdk 6.9.0 → 6.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/adcp.js +285 -5
- package/compliance/cache/3.0.6.previous/domains/brand/index.yaml +163 -0
- package/compliance/cache/3.0.6.previous/domains/creative/index.yaml +412 -0
- package/compliance/cache/3.0.6.previous/domains/governance/index.yaml +683 -0
- package/compliance/cache/3.0.6.previous/domains/media-buy/creative-reception.yaml +247 -0
- package/compliance/cache/3.0.6.previous/domains/media-buy/index.yaml +769 -0
- package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/create_media_buy_async.yaml +232 -0
- package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
- package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/delivery_reporting.yaml +205 -0
- package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/governance_approved.yaml +211 -0
- package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/governance_conditions.yaml +196 -0
- package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/governance_denied.yaml +192 -0
- package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/governance_denied_recovery.yaml +244 -0
- package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/invalid_transitions.yaml +284 -0
- package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
- package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/inventory_list_targeting.yaml +271 -0
- package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/measurement_terms_rejected.yaml +195 -0
- package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
- package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/proposal_finalize.yaml +243 -0
- package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/refine_products.yaml +148 -0
- package/compliance/cache/3.0.6.previous/domains/media-buy/state-machine.yaml +442 -0
- package/compliance/cache/3.0.6.previous/domains/signals/index.yaml +266 -0
- package/compliance/cache/3.0.6.previous/domains/sponsored-intelligence/index.yaml +256 -0
- package/compliance/cache/3.0.6.previous/index.json +324 -0
- package/compliance/cache/3.0.6.previous/protocols/brand/index.yaml +163 -0
- package/compliance/cache/3.0.6.previous/protocols/creative/index.yaml +412 -0
- package/compliance/cache/3.0.6.previous/protocols/governance/index.yaml +683 -0
- package/compliance/cache/3.0.6.previous/protocols/media-buy/creative-reception.yaml +247 -0
- package/compliance/cache/3.0.6.previous/protocols/media-buy/index.yaml +769 -0
- package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/create_media_buy_async.yaml +232 -0
- package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
- package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/delivery_reporting.yaml +205 -0
- package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/governance_approved.yaml +211 -0
- package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/governance_conditions.yaml +196 -0
- package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/governance_denied.yaml +192 -0
- package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/governance_denied_recovery.yaml +244 -0
- package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/invalid_transitions.yaml +284 -0
- package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
- package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/inventory_list_targeting.yaml +271 -0
- package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +195 -0
- package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
- package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/proposal_finalize.yaml +243 -0
- package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/refine_products.yaml +148 -0
- package/compliance/cache/3.0.6.previous/protocols/media-buy/state-machine.yaml +442 -0
- package/compliance/cache/3.0.6.previous/protocols/signals/index.yaml +266 -0
- package/compliance/cache/3.0.6.previous/protocols/sponsored-intelligence/index.yaml +256 -0
- package/compliance/cache/3.0.6.previous/specialisms/audience-sync/index.yaml +280 -0
- package/compliance/cache/3.0.6.previous/specialisms/brand-rights/index.yaml +350 -0
- package/compliance/cache/3.0.6.previous/specialisms/brand-rights/scenarios/governance_denied.yaml +204 -0
- package/compliance/cache/3.0.6.previous/specialisms/collection-lists/index.yaml +359 -0
- package/compliance/cache/3.0.6.previous/specialisms/content-standards/index.yaml +572 -0
- package/compliance/cache/3.0.6.previous/specialisms/creative-ad-server/index.yaml +383 -0
- package/compliance/cache/3.0.6.previous/specialisms/creative-generative/generative-seller.yaml +758 -0
- package/compliance/cache/3.0.6.previous/specialisms/creative-generative/index.yaml +746 -0
- package/compliance/cache/3.0.6.previous/specialisms/creative-template/index.yaml +413 -0
- package/compliance/cache/3.0.6.previous/specialisms/governance-aware-seller/index.yaml +136 -0
- package/compliance/cache/3.0.6.previous/specialisms/governance-delivery-monitor/index.yaml +441 -0
- package/compliance/cache/3.0.6.previous/specialisms/governance-spend-authority/denied.yaml +221 -0
- package/compliance/cache/3.0.6.previous/specialisms/governance-spend-authority/index.yaml +330 -0
- package/compliance/cache/3.0.6.previous/specialisms/property-lists/index.yaml +482 -0
- package/compliance/cache/3.0.6.previous/specialisms/sales-broadcast-tv/index.yaml +689 -0
- package/compliance/cache/3.0.6.previous/specialisms/sales-catalog-driven/index.yaml +779 -0
- package/compliance/cache/3.0.6.previous/specialisms/sales-guaranteed/index.yaml +504 -0
- package/compliance/cache/3.0.6.previous/specialisms/sales-non-guaranteed/index.yaml +428 -0
- package/compliance/cache/3.0.6.previous/specialisms/sales-proposal-mode/index.yaml +520 -0
- package/compliance/cache/3.0.6.previous/specialisms/sales-social/index.yaml +584 -0
- package/compliance/cache/3.0.6.previous/specialisms/signal-marketplace/index.yaml +415 -0
- package/compliance/cache/3.0.6.previous/specialisms/signal-marketplace/scenarios/governance_denied.yaml +207 -0
- package/compliance/cache/3.0.6.previous/specialisms/signal-owned/index.yaml +316 -0
- package/compliance/cache/3.0.6.previous/test-kits/acme-outdoor.yaml +210 -0
- package/compliance/cache/3.0.6.previous/test-kits/bistro-oranje.yaml +126 -0
- package/compliance/cache/3.0.6.previous/test-kits/nova-motors.yaml +262 -0
- package/compliance/cache/3.0.6.previous/test-kits/osei-natural.yaml +126 -0
- package/compliance/cache/3.0.6.previous/test-kits/signed-requests-runner.yaml +155 -0
- package/compliance/cache/3.0.6.previous/test-kits/substitution-observer-runner.yaml +690 -0
- package/compliance/cache/3.0.6.previous/test-kits/summit-foods.yaml +125 -0
- package/compliance/cache/3.0.6.previous/test-kits/webhook-receiver-runner.yaml +265 -0
- package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/001-minimal-plan.json +43 -0
- package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/002-full-plan.json +217 -0
- package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/003-bookkeeping-stripped.json +60 -0
- package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/004a-human-review-omitted.json +43 -0
- package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/004b-human-review-explicit-null.json +49 -0
- package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/005a-policy-categories-order-1.json +53 -0
- package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/005b-policy-categories-order-2.json +57 -0
- package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/006a-ext-trace-v1.json +49 -0
- package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/006b-ext-trace-v2.json +53 -0
- package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/007-unicode-objectives.json +43 -0
- package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/008-numeric-canonicalization.json +65 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/README.md +219 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/canonicalization.json +241 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/keys.json +60 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/001-no-signature-header.json +24 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/002-wrong-tag.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/003-expired-signature.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/004-window-too-long.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/005-alg-not-allowed.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/006-missing-covered-component.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/007-missing-content-digest.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/008-unknown-keyid.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +27 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/010-content-digest-mismatch.json +33 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/011-malformed-header.json +27 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/012-missing-expires-param.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/013-expires-le-created.json +27 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/014-missing-nonce-param.json +27 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/015-signature-invalid.json +28 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/016-replayed-nonce.json +35 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/017-key-revoked.json +38 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +28 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/019-signature-without-signature-input.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/020-rate-abuse.json +34 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +31 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/022-multi-valued-content-type.json +31 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +32 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/024-unquoted-string-param.json +31 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +43 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/026-non-ascii-host.json +31 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +25 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/001-basic-post.json +30 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/002-post-with-content-digest.json +31 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/003-es256-post.json +30 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/004-multiple-signature-labels.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/005-default-port-stripped.json +30 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/006-dot-segment-path.json +30 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/007-query-byte-preserved.json +30 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/008-percent-encoded-path.json +30 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +30 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +30 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/011-ipv6-authority.json +30 -0
- package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +30 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/README.md +211 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/keys.json +61 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/001-wrong-tag.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/002-expired-signature.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/003-window-too-long.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/005-missing-authority-component.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/006-missing-content-digest.json +25 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/007-unknown-keyid.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/011-signature-without-input.json +25 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/012-missing-expires-param.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/013-expires-le-created.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/015-signature-invalid.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/016-replayed-nonce.json +37 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/017-key-revoked.json +32 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/018-rate-abuse.json +33 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/019-revocation-stale.json +32 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +41 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +26 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/001-basic-post.json +24 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/002-es256-post.json +24 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +24 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/004-default-port-stripped.json +24 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +24 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +24 -0
- package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +25 -0
- package/compliance/cache/3.0.6.previous/universal/capability-discovery.yaml +125 -0
- package/compliance/cache/3.0.6.previous/universal/collection-lists-pagination-integrity.yaml +306 -0
- package/compliance/cache/3.0.6.previous/universal/content-standards-pagination-integrity.yaml +326 -0
- package/compliance/cache/3.0.6.previous/universal/deterministic-testing.yaml +1343 -0
- package/compliance/cache/3.0.6.previous/universal/error-compliance.yaml +474 -0
- package/compliance/cache/3.0.6.previous/universal/fictional-entities.yaml +307 -0
- package/compliance/cache/3.0.6.previous/universal/get-media-buys-pagination-integrity.yaml +160 -0
- package/compliance/cache/3.0.6.previous/universal/get-signals-pagination-integrity.yaml +211 -0
- package/compliance/cache/3.0.6.previous/universal/idempotency.yaml +593 -0
- package/compliance/cache/3.0.6.previous/universal/pagination-integrity-creative-formats.yaml +258 -0
- package/compliance/cache/3.0.6.previous/universal/pagination-integrity-list-accounts.yaml +262 -0
- package/compliance/cache/3.0.6.previous/universal/pagination-integrity.yaml +263 -0
- package/compliance/cache/3.0.6.previous/universal/property-lists-pagination-integrity.yaml +307 -0
- package/compliance/cache/3.0.6.previous/universal/runner-output-contract.yaml +358 -0
- package/compliance/cache/3.0.6.previous/universal/schema-validation.yaml +526 -0
- package/compliance/cache/3.0.6.previous/universal/security.yaml +431 -0
- package/compliance/cache/3.0.6.previous/universal/signed-requests.yaml +205 -0
- package/compliance/cache/3.0.6.previous/universal/storyboard-schema.yaml +1176 -0
- package/compliance/cache/3.0.6.previous/universal/v3-envelope-integrity.yaml +106 -0
- package/compliance/cache/3.0.6.previous/universal/webhook-emission.yaml +337 -0
- package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
- package/dist/lib/server/create-adcp-server.d.ts +33 -0
- package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
- package/dist/lib/server/create-adcp-server.js +127 -1
- package/dist/lib/server/create-adcp-server.js.map +1 -1
- package/dist/lib/server/credential-policy.d.ts +221 -0
- package/dist/lib/server/credential-policy.d.ts.map +1 -0
- package/dist/lib/server/credential-policy.js +260 -0
- package/dist/lib/server/credential-policy.js.map +1 -0
- package/dist/lib/server/dynamic-registry.d.ts +219 -0
- package/dist/lib/server/dynamic-registry.d.ts.map +1 -0
- package/dist/lib/server/dynamic-registry.js +245 -0
- package/dist/lib/server/dynamic-registry.js.map +1 -0
- package/dist/lib/server/index.d.ts +8 -0
- package/dist/lib/server/index.d.ts.map +1 -1
- package/dist/lib/server/index.js +15 -4
- package/dist/lib/server/index.js.map +1 -1
- package/dist/lib/server/operational-platform.d.ts +239 -0
- package/dist/lib/server/operational-platform.d.ts.map +1 -0
- package/dist/lib/server/operational-platform.js +94 -0
- package/dist/lib/server/operational-platform.js.map +1 -0
- package/dist/lib/server/wire-safe.d.ts +211 -0
- package/dist/lib/server/wire-safe.d.ts.map +1 -0
- package/dist/lib/server/wire-safe.js +231 -0
- package/dist/lib/server/wire-safe.js.map +1 -0
- package/dist/lib/server/wire-spec-fields.generated.d.ts +168 -0
- package/dist/lib/server/wire-spec-fields.generated.d.ts.map +1 -0
- package/dist/lib/server/wire-spec-fields.generated.js +172 -0
- package/dist/lib/server/wire-spec-fields.generated.js.map +1 -0
- package/dist/lib/testing/compliance/index.d.ts +2 -0
- package/dist/lib/testing/compliance/index.d.ts.map +1 -1
- package/dist/lib/testing/compliance/index.js +6 -1
- package/dist/lib/testing/compliance/index.js.map +1 -1
- package/dist/lib/testing/compliance/summary.d.ts +77 -0
- package/dist/lib/testing/compliance/summary.d.ts.map +1 -0
- package/dist/lib/testing/compliance/summary.js +176 -0
- package/dist/lib/testing/compliance/summary.js.map +1 -0
- package/dist/lib/testing/storyboard/compliance.d.ts +26 -0
- package/dist/lib/testing/storyboard/compliance.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/compliance.js +51 -0
- package/dist/lib/testing/storyboard/compliance.js.map +1 -1
- package/dist/lib/testing/storyboard/index.d.ts +2 -2
- package/dist/lib/testing/storyboard/index.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/index.js +4 -2
- package/dist/lib/testing/storyboard/index.js.map +1 -1
- package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/runner.js +58 -5
- package/dist/lib/testing/storyboard/runner.js.map +1 -1
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.d.ts.map +1 -1
- package/dist/lib/version.js +3 -3
- package/dist/lib/version.js.map +1 -1
- package/package.json +2 -2
package/compliance/cache/3.0.6.previous/specialisms/brand-rights/scenarios/governance_denied.yaml
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
id: brand_rights/governance_denied
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
title: "Brand agent rejects rights acquisition when governance denies"
|
|
4
|
+
category: brand_rights
|
|
5
|
+
summary: "Verifies that a brand agent propagates GOVERNANCE_DENIED when the buyer's governance plan denies a rights license."
|
|
6
|
+
track: brand
|
|
7
|
+
required_tools:
|
|
8
|
+
- sync_governance
|
|
9
|
+
- get_rights
|
|
10
|
+
- acquire_rights
|
|
11
|
+
|
|
12
|
+
narrative: |
|
|
13
|
+
Acquiring rights is a spending event. The brand agent must consult the buyer's
|
|
14
|
+
governance agent before issuing a license and deny the acquisition when governance
|
|
15
|
+
returns denied. This keeps licensing authority consistent with media buy spending
|
|
16
|
+
authority — a buyer cannot commit to a generative campaign budget that exceeds the
|
|
17
|
+
plan even when the spending flows to a brand agent instead of a seller.
|
|
18
|
+
|
|
19
|
+
This scenario sets up a strict $50 governance plan, registers governance with the
|
|
20
|
+
brand agent via sync_governance, then attempts to acquire rights whose pricing
|
|
21
|
+
exceeds the plan. The brand agent must return GOVERNANCE_DENIED with findings
|
|
22
|
+
propagated from the governance agent.
|
|
23
|
+
|
|
24
|
+
By default, the governance agent is the training agent at test-agent.adcontextprotocol.org.
|
|
25
|
+
Override with --governance-agent-url to use a custom governance agent.
|
|
26
|
+
|
|
27
|
+
agent:
|
|
28
|
+
interaction_model: brand_rights_holder
|
|
29
|
+
capabilities:
|
|
30
|
+
- rights_licensing
|
|
31
|
+
- governance_aware
|
|
32
|
+
examples:
|
|
33
|
+
- "Any brand rights agent that honors governance before licensing"
|
|
34
|
+
|
|
35
|
+
caller:
|
|
36
|
+
role: buyer_agent
|
|
37
|
+
example: "Pinnacle Agency (buyer)"
|
|
38
|
+
|
|
39
|
+
prerequisites:
|
|
40
|
+
description: |
|
|
41
|
+
A governance agent that supports sync_plans and check_governance, and a brand
|
|
42
|
+
agent that supports sync_governance + acquire_rights.
|
|
43
|
+
test_kit: "test-kits/acme-outdoor.yaml"
|
|
44
|
+
|
|
45
|
+
phases:
|
|
46
|
+
- id: governance_plan_setup
|
|
47
|
+
title: "Set up strict governance plan"
|
|
48
|
+
steps:
|
|
49
|
+
- id: sync_plans
|
|
50
|
+
title: "Create strict governance plan"
|
|
51
|
+
task: sync_plans
|
|
52
|
+
schema_ref: "governance/sync-plans-request.json"
|
|
53
|
+
response_schema_ref: "governance/sync-plans-response.json"
|
|
54
|
+
doc_ref: "/governance/campaign/tasks/sync_plans"
|
|
55
|
+
stateful: true
|
|
56
|
+
expected: |
|
|
57
|
+
The governance agent acknowledges the plan.
|
|
58
|
+
sample_request:
|
|
59
|
+
plans:
|
|
60
|
+
- plan_id: "comply-rights-gov-denied"
|
|
61
|
+
brand:
|
|
62
|
+
domain: "acmeoutdoor.example"
|
|
63
|
+
objectives: "Restricted plan — rights licensing test"
|
|
64
|
+
budget:
|
|
65
|
+
total: 50
|
|
66
|
+
currency: "USD"
|
|
67
|
+
reallocation_threshold: 25
|
|
68
|
+
flight:
|
|
69
|
+
start: "2026-04-01T00:00:00Z"
|
|
70
|
+
end: "2026-06-30T23:59:59Z"
|
|
71
|
+
countries: ["US"]
|
|
72
|
+
idempotency_key: "$generate:uuid_v4#brand_rights_governance_denied_governance_plan_setup_sync_plans"
|
|
73
|
+
validations:
|
|
74
|
+
- check: response_schema
|
|
75
|
+
description: "Response matches sync-plans-response.json schema"
|
|
76
|
+
|
|
77
|
+
- id: brand_agent_setup
|
|
78
|
+
title: "Register account and governance with the brand agent"
|
|
79
|
+
steps:
|
|
80
|
+
- id: sync_accounts
|
|
81
|
+
title: "Establish account with brand agent"
|
|
82
|
+
task: sync_accounts
|
|
83
|
+
schema_ref: "account/sync-accounts-request.json"
|
|
84
|
+
response_schema_ref: "account/sync-accounts-response.json"
|
|
85
|
+
doc_ref: "/accounts/tasks/sync_accounts"
|
|
86
|
+
stateful: true
|
|
87
|
+
expected: |
|
|
88
|
+
Brand agent returns the account with account_id active.
|
|
89
|
+
sample_request:
|
|
90
|
+
accounts:
|
|
91
|
+
- brand:
|
|
92
|
+
domain: "acmeoutdoor.example"
|
|
93
|
+
operator: "pinnacle-agency.example"
|
|
94
|
+
billing: "operator"
|
|
95
|
+
payment_terms: "net_30"
|
|
96
|
+
idempotency_key: "$generate:uuid_v4#brand_rights_governance_denied_brand_agent_setup_sync_accounts"
|
|
97
|
+
validations:
|
|
98
|
+
- check: response_schema
|
|
99
|
+
description: "Response matches sync-accounts-response.json schema"
|
|
100
|
+
- check: field_present
|
|
101
|
+
path: "accounts[0].account_id"
|
|
102
|
+
description: "Account has a platform-assigned ID"
|
|
103
|
+
|
|
104
|
+
- id: sync_governance
|
|
105
|
+
title: "Register governance agent with brand agent"
|
|
106
|
+
task: sync_governance
|
|
107
|
+
schema_ref: "account/sync-governance-request.json"
|
|
108
|
+
response_schema_ref: "account/sync-governance-response.json"
|
|
109
|
+
doc_ref: "/accounts/tasks/sync_governance"
|
|
110
|
+
stateful: true
|
|
111
|
+
expected: |
|
|
112
|
+
Brand agent acknowledges governance registration.
|
|
113
|
+
sample_request:
|
|
114
|
+
accounts:
|
|
115
|
+
- account:
|
|
116
|
+
brand:
|
|
117
|
+
domain: "acmeoutdoor.example"
|
|
118
|
+
operator: "pinnacle-agency.example"
|
|
119
|
+
governance_agents:
|
|
120
|
+
- url: "$context.governance_agent_url"
|
|
121
|
+
authentication:
|
|
122
|
+
schemes: ["Bearer"]
|
|
123
|
+
credentials: "gov-token-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
|
124
|
+
categories: ["budget_authority"]
|
|
125
|
+
idempotency_key: "$generate:uuid_v4#brand_rights_governance_denied_brand_agent_setup_sync_governance"
|
|
126
|
+
validations:
|
|
127
|
+
- check: response_schema
|
|
128
|
+
description: "Response matches sync-governance-response.json schema"
|
|
129
|
+
|
|
130
|
+
- id: rights_denied
|
|
131
|
+
title: "Attempt rights acquisition — governance denies"
|
|
132
|
+
steps:
|
|
133
|
+
- id: get_rights_catalog
|
|
134
|
+
title: "Discover rights to license"
|
|
135
|
+
task: get_rights
|
|
136
|
+
schema_ref: "brand/get-rights-request.json"
|
|
137
|
+
response_schema_ref: "brand/get-rights-response.json"
|
|
138
|
+
doc_ref: "/brand-protocol/tasks/get_rights"
|
|
139
|
+
stateful: false
|
|
140
|
+
expected: |
|
|
141
|
+
Return rights available for licensing, each with pricing_options.
|
|
142
|
+
sample_request:
|
|
143
|
+
buyer:
|
|
144
|
+
domain: "pinnacle-agency.example"
|
|
145
|
+
query: "licensed commercial rights for a regional outdoor retail campaign"
|
|
146
|
+
uses:
|
|
147
|
+
- "commercial"
|
|
148
|
+
- "endorsement"
|
|
149
|
+
context_outputs:
|
|
150
|
+
- path: "rights[0].rights_id"
|
|
151
|
+
key: "rights_id"
|
|
152
|
+
- path: "rights[0].pricing_options[0].pricing_option_id"
|
|
153
|
+
key: "pricing_option_id"
|
|
154
|
+
validations:
|
|
155
|
+
- check: response_schema
|
|
156
|
+
description: "Response matches get-rights-response.json schema"
|
|
157
|
+
|
|
158
|
+
- id: acquire_rights_denied
|
|
159
|
+
title: "acquire_rights — governance denies"
|
|
160
|
+
task: acquire_rights
|
|
161
|
+
schema_ref: "brand/acquire-rights-request.json"
|
|
162
|
+
response_schema_ref: "brand/acquire-rights-response.json"
|
|
163
|
+
doc_ref: "/brand-protocol/tasks/acquire_rights"
|
|
164
|
+
expect_error: true
|
|
165
|
+
negative_path: payload_well_formed
|
|
166
|
+
stateful: true
|
|
167
|
+
expected: |
|
|
168
|
+
Brand agent rejects with:
|
|
169
|
+
- code: GOVERNANCE_DENIED
|
|
170
|
+
- findings propagated from the governance agent
|
|
171
|
+
|
|
172
|
+
sample_request:
|
|
173
|
+
account:
|
|
174
|
+
brand:
|
|
175
|
+
domain: "acmeoutdoor.example"
|
|
176
|
+
operator: "pinnacle-agency.example"
|
|
177
|
+
rights_id: "$context.rights_id"
|
|
178
|
+
pricing_option_id: "$context.pricing_option_id"
|
|
179
|
+
buyer:
|
|
180
|
+
domain: "pinnacle-agency.example"
|
|
181
|
+
campaign:
|
|
182
|
+
description: "Governance-denied rights acquisition probe"
|
|
183
|
+
uses:
|
|
184
|
+
- "likeness"
|
|
185
|
+
- "commercial"
|
|
186
|
+
start_date: "2026-04-01"
|
|
187
|
+
end_date: "2026-06-30"
|
|
188
|
+
revocation_webhook:
|
|
189
|
+
url: "https://pinnacle-agency.example/webhooks/revocation"
|
|
190
|
+
authentication:
|
|
191
|
+
schemes:
|
|
192
|
+
- "Bearer"
|
|
193
|
+
credentials: "pinnacle-revocation-webhook-secret-token"
|
|
194
|
+
idempotency_key: "$generate:uuid_v4#brand_rights_governance_denied_acquire_rights_denied"
|
|
195
|
+
|
|
196
|
+
context:
|
|
197
|
+
correlation_id: "brand_rights--governance_denied--acquire"
|
|
198
|
+
validations:
|
|
199
|
+
- check: error_code
|
|
200
|
+
value: "GOVERNANCE_DENIED"
|
|
201
|
+
description: "Error code is GOVERNANCE_DENIED"
|
|
202
|
+
- check: field_present
|
|
203
|
+
path: "context"
|
|
204
|
+
description: "Response echoes back the context object even on errors"
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
id: collection_lists
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
title: "Collection lists"
|
|
4
|
+
protocol: governance
|
|
5
|
+
category: collection_lists
|
|
6
|
+
summary: "Curated collection lists for program-level brand safety and content targeting — create, query, update, and delete lists of content programs (shows, series, podcasts)."
|
|
7
|
+
track: governance
|
|
8
|
+
required_tools:
|
|
9
|
+
- create_collection_list
|
|
10
|
+
|
|
11
|
+
# Cross-step assertion (adcp#2664). status.monotonic rejects resource
|
|
12
|
+
# status transitions observed across steps that aren't on the spec
|
|
13
|
+
# lifecycle graph. Silent on collection-list-only runs (no tracked
|
|
14
|
+
# lifecycle resource), but wired so phases that touch media_buy /
|
|
15
|
+
# account status are automatically gated.
|
|
16
|
+
invariants:
|
|
17
|
+
- status.monotonic
|
|
18
|
+
|
|
19
|
+
narrative: |
|
|
20
|
+
You run a governance agent that manages collection lists for brand safety. Unlike
|
|
21
|
+
property lists which operate on technical surfaces (domains, apps), collection lists
|
|
22
|
+
operate on content programs (shows, series, podcasts) identified by platform-independent
|
|
23
|
+
IDs like IMDb, Gracenote, or EIDR.
|
|
24
|
+
|
|
25
|
+
Buyers create inclusion and exclusion lists that define which programs their ads can
|
|
26
|
+
and cannot appear against. Your agent resolves the base collections and filters into a
|
|
27
|
+
concrete list of program identifiers that sellers can cache and enforce at bid time.
|
|
28
|
+
|
|
29
|
+
Collection lists are setup-time resources: the governance agent resolves them once and
|
|
30
|
+
sellers cache the result. Unlike property lists, there is no post-delivery validation
|
|
31
|
+
task yet — enforcement happens at serve time via the cached list, not via after-the-fact
|
|
32
|
+
compliance checks. This storyboard therefore exercises the full CRUD lifecycle (create,
|
|
33
|
+
query, update, delete) but does not test delivery validation.
|
|
34
|
+
|
|
35
|
+
agent:
|
|
36
|
+
interaction_model: governance_agent
|
|
37
|
+
capabilities:
|
|
38
|
+
- collection_lists
|
|
39
|
+
- brand_safety
|
|
40
|
+
examples:
|
|
41
|
+
- "IAS"
|
|
42
|
+
- "DoubleVerify"
|
|
43
|
+
- "GARM-aligned platforms"
|
|
44
|
+
- "Brand safety services"
|
|
45
|
+
|
|
46
|
+
caller:
|
|
47
|
+
role: buyer_agent
|
|
48
|
+
example: "Nova Motors (buyer)"
|
|
49
|
+
|
|
50
|
+
prerequisites:
|
|
51
|
+
description: |
|
|
52
|
+
The caller needs a brand identity and content-program knowledge (distribution IDs,
|
|
53
|
+
publisher identifiers, or genre taxonomies). The test kit provides a sample brand
|
|
54
|
+
with campaign context.
|
|
55
|
+
test_kit: "test-kits/nova-motors.yaml"
|
|
56
|
+
|
|
57
|
+
phases:
|
|
58
|
+
- id: capability_discovery
|
|
59
|
+
title: "Capability discovery"
|
|
60
|
+
narrative: |
|
|
61
|
+
The buyer calls get_adcp_capabilities to confirm the agent supports governance
|
|
62
|
+
before creating or fetching collection lists.
|
|
63
|
+
|
|
64
|
+
steps:
|
|
65
|
+
- id: get_capabilities
|
|
66
|
+
title: "Check agent capabilities"
|
|
67
|
+
narrative: |
|
|
68
|
+
Verify that the agent declares the expected protocol support before
|
|
69
|
+
proceeding with domain-specific operations.
|
|
70
|
+
task: get_adcp_capabilities
|
|
71
|
+
schema_ref: "protocol/get-adcp-capabilities-request.json"
|
|
72
|
+
response_schema_ref: "protocol/get-adcp-capabilities-response.json"
|
|
73
|
+
doc_ref: "/protocol/get_adcp_capabilities"
|
|
74
|
+
comply_scenario: capability_discovery
|
|
75
|
+
stateful: false
|
|
76
|
+
expected: |
|
|
77
|
+
Return capabilities declaring governance in supported_protocols, confirming
|
|
78
|
+
the agent provides governance services.
|
|
79
|
+
sample_request:
|
|
80
|
+
context:
|
|
81
|
+
correlation_id: "collection_lists--get_capabilities"
|
|
82
|
+
validations:
|
|
83
|
+
- check: response_schema
|
|
84
|
+
description: "Response matches get-adcp-capabilities-response.json schema"
|
|
85
|
+
- check: field_present
|
|
86
|
+
path: "supported_protocols"
|
|
87
|
+
description: "Agent declares supported protocols"
|
|
88
|
+
- check: field_present
|
|
89
|
+
path: "context"
|
|
90
|
+
description: "Response echoes back the context object"
|
|
91
|
+
- check: field_value
|
|
92
|
+
path: "context.correlation_id"
|
|
93
|
+
value: "collection_lists--get_capabilities"
|
|
94
|
+
description: "Context correlation_id returned unchanged"
|
|
95
|
+
|
|
96
|
+
- id: create_list
|
|
97
|
+
title: "Create collection lists"
|
|
98
|
+
narrative: |
|
|
99
|
+
The buyer creates an inclusion collection list for the campaign. The list defines
|
|
100
|
+
which content programs the brand is willing to advertise against, selected by
|
|
101
|
+
platform-independent distribution identifiers.
|
|
102
|
+
|
|
103
|
+
steps:
|
|
104
|
+
- id: create_inclusion_list
|
|
105
|
+
title: "Create an inclusion collection list"
|
|
106
|
+
narrative: |
|
|
107
|
+
The buyer creates an inclusion list of programs the brand considers safe to
|
|
108
|
+
advertise against, referenced by distribution IDs (e.g. IMDb) so the selection
|
|
109
|
+
is portable across publishers.
|
|
110
|
+
task: create_collection_list
|
|
111
|
+
schema_ref: "collection/create-collection-list-request.json"
|
|
112
|
+
response_schema_ref: "collection/create-collection-list-response.json"
|
|
113
|
+
doc_ref: "/governance/collection/tasks/collection_lists"
|
|
114
|
+
comply_scenario: governance_collection_lists
|
|
115
|
+
stateful: true
|
|
116
|
+
expected: |
|
|
117
|
+
Return the created collection list:
|
|
118
|
+
- list_id: platform-assigned identifier
|
|
119
|
+
- collection_count reflecting the resolved programs
|
|
120
|
+
- auth_token issued for sellers to fetch the list
|
|
121
|
+
- Timestamps populated
|
|
122
|
+
|
|
123
|
+
sample_request:
|
|
124
|
+
account:
|
|
125
|
+
brand:
|
|
126
|
+
domain: "novamotors.example"
|
|
127
|
+
operator: "pinnacle-agency.example"
|
|
128
|
+
brand:
|
|
129
|
+
domain: "novamotors.example"
|
|
130
|
+
name: "Nova Motors approved programs"
|
|
131
|
+
base_collections:
|
|
132
|
+
- selection_type: "distribution_ids"
|
|
133
|
+
identifiers:
|
|
134
|
+
- type: "imdb_id"
|
|
135
|
+
value: "tt9999901"
|
|
136
|
+
- type: "imdb_id"
|
|
137
|
+
value: "tt9999902"
|
|
138
|
+
- type: "imdb_id"
|
|
139
|
+
value: "tt9999903"
|
|
140
|
+
filters:
|
|
141
|
+
kinds: ["series"]
|
|
142
|
+
|
|
143
|
+
idempotency_key: "$generate:uuid_v4#collection_lists_create_list_create_inclusion_list"
|
|
144
|
+
context:
|
|
145
|
+
correlation_id: "collection_lists--create_inclusion_list"
|
|
146
|
+
context_outputs:
|
|
147
|
+
- path: "list.list_id"
|
|
148
|
+
key: "collection_list_id"
|
|
149
|
+
|
|
150
|
+
validations:
|
|
151
|
+
- check: response_schema
|
|
152
|
+
description: "Response matches create-collection-list-response.json schema"
|
|
153
|
+
- check: field_present
|
|
154
|
+
path: "list.list_id"
|
|
155
|
+
description: "Governance agent assigns list_id — must be echoed in get/update/delete"
|
|
156
|
+
- check: field_present
|
|
157
|
+
path: "auth_token"
|
|
158
|
+
description: "Agent issues an auth_token at creation time for seller fetches"
|
|
159
|
+
- check: field_present
|
|
160
|
+
path: "context"
|
|
161
|
+
description: "Response echoes back the context object"
|
|
162
|
+
- check: field_value
|
|
163
|
+
path: "context.correlation_id"
|
|
164
|
+
value: "collection_lists--create_inclusion_list"
|
|
165
|
+
description: "Context correlation_id returned unchanged"
|
|
166
|
+
|
|
167
|
+
- id: list_and_get
|
|
168
|
+
title: "Query collection lists"
|
|
169
|
+
narrative: |
|
|
170
|
+
The buyer lists all collection lists for the brand and retrieves a specific list
|
|
171
|
+
with resolved collections.
|
|
172
|
+
|
|
173
|
+
steps:
|
|
174
|
+
- id: list_collection_lists
|
|
175
|
+
title: "List all collection lists"
|
|
176
|
+
narrative: |
|
|
177
|
+
The buyer lists all collection lists for the brand. The response includes
|
|
178
|
+
list metadata without full resolved collection details.
|
|
179
|
+
task: list_collection_lists
|
|
180
|
+
schema_ref: "collection/list-collection-lists-request.json"
|
|
181
|
+
response_schema_ref: "collection/list-collection-lists-response.json"
|
|
182
|
+
doc_ref: "/governance/collection/tasks/collection_lists"
|
|
183
|
+
comply_scenario: governance_collection_lists
|
|
184
|
+
stateful: true
|
|
185
|
+
expected: |
|
|
186
|
+
Return collection list summaries:
|
|
187
|
+
- Array of lists with list_id, name, collection_count
|
|
188
|
+
- Includes the list created in the prior phase
|
|
189
|
+
|
|
190
|
+
sample_request:
|
|
191
|
+
account:
|
|
192
|
+
brand:
|
|
193
|
+
domain: "novamotors.example"
|
|
194
|
+
operator: "pinnacle-agency.example"
|
|
195
|
+
name_contains: "Nova Motors"
|
|
196
|
+
|
|
197
|
+
context:
|
|
198
|
+
correlation_id: "collection_lists--list_collection_lists"
|
|
199
|
+
validations:
|
|
200
|
+
- check: response_schema
|
|
201
|
+
description: "Response matches list-collection-lists-response.json schema"
|
|
202
|
+
- check: field_present
|
|
203
|
+
path: "context"
|
|
204
|
+
description: "Response echoes back the context object"
|
|
205
|
+
- check: field_value
|
|
206
|
+
path: "context.correlation_id"
|
|
207
|
+
value: "collection_lists--list_collection_lists"
|
|
208
|
+
description: "Context correlation_id returned unchanged"
|
|
209
|
+
|
|
210
|
+
- id: get_collection_list
|
|
211
|
+
title: "Get a specific collection list with resolved collections"
|
|
212
|
+
narrative: |
|
|
213
|
+
The buyer retrieves a specific collection list with resolve:true to confirm
|
|
214
|
+
the agent can materialize the programs the list references.
|
|
215
|
+
task: get_collection_list
|
|
216
|
+
schema_ref: "collection/get-collection-list-request.json"
|
|
217
|
+
response_schema_ref: "collection/get-collection-list-response.json"
|
|
218
|
+
doc_ref: "/governance/collection/tasks/collection_lists"
|
|
219
|
+
comply_scenario: governance_collection_lists
|
|
220
|
+
stateful: true
|
|
221
|
+
expected: |
|
|
222
|
+
Return the full collection list:
|
|
223
|
+
- list_id, name, collection_count
|
|
224
|
+
- Resolved collections with distribution_ids, content_rating, genre
|
|
225
|
+
- cache_valid_until timestamp for seller caching
|
|
226
|
+
|
|
227
|
+
sample_request:
|
|
228
|
+
list_id: "$context.collection_list_id"
|
|
229
|
+
resolve: true
|
|
230
|
+
account:
|
|
231
|
+
brand:
|
|
232
|
+
domain: "novamotors.example"
|
|
233
|
+
operator: "pinnacle-agency.example"
|
|
234
|
+
|
|
235
|
+
context:
|
|
236
|
+
correlation_id: "collection_lists--get_collection_list"
|
|
237
|
+
validations:
|
|
238
|
+
- check: response_schema
|
|
239
|
+
description: "Response matches get-collection-list-response.json schema"
|
|
240
|
+
- check: field_present
|
|
241
|
+
path: "list.list_id"
|
|
242
|
+
description: "List id returned"
|
|
243
|
+
- check: field_present
|
|
244
|
+
path: "collections"
|
|
245
|
+
description: "Resolved collections returned when resolve:true"
|
|
246
|
+
- check: field_present
|
|
247
|
+
path: "context"
|
|
248
|
+
description: "Response echoes back the context object"
|
|
249
|
+
- check: field_value
|
|
250
|
+
path: "context.correlation_id"
|
|
251
|
+
value: "collection_lists--get_collection_list"
|
|
252
|
+
description: "Context correlation_id returned unchanged"
|
|
253
|
+
|
|
254
|
+
- id: update_list
|
|
255
|
+
title: "Update collection lists"
|
|
256
|
+
narrative: |
|
|
257
|
+
The buyer modifies an existing collection list — replacing the base collections
|
|
258
|
+
as the campaign's content preferences evolve.
|
|
259
|
+
|
|
260
|
+
steps:
|
|
261
|
+
- id: update_collection_list
|
|
262
|
+
title: "Update a collection list"
|
|
263
|
+
narrative: |
|
|
264
|
+
The buyer replaces the base collections on an existing list with a new set
|
|
265
|
+
of distribution identifiers.
|
|
266
|
+
task: update_collection_list
|
|
267
|
+
schema_ref: "collection/update-collection-list-request.json"
|
|
268
|
+
response_schema_ref: "collection/update-collection-list-response.json"
|
|
269
|
+
doc_ref: "/governance/collection/tasks/collection_lists"
|
|
270
|
+
comply_scenario: governance_collection_lists
|
|
271
|
+
stateful: true
|
|
272
|
+
expected: |
|
|
273
|
+
Return the updated collection list:
|
|
274
|
+
- Same list_id
|
|
275
|
+
- Updated collection_count reflecting the replaced base collections
|
|
276
|
+
- Updated updated_at timestamp
|
|
277
|
+
|
|
278
|
+
sample_request:
|
|
279
|
+
list_id: "$context.collection_list_id"
|
|
280
|
+
account:
|
|
281
|
+
brand:
|
|
282
|
+
domain: "novamotors.example"
|
|
283
|
+
operator: "pinnacle-agency.example"
|
|
284
|
+
base_collections:
|
|
285
|
+
- selection_type: "distribution_ids"
|
|
286
|
+
identifiers:
|
|
287
|
+
- type: "imdb_id"
|
|
288
|
+
value: "tt9999901"
|
|
289
|
+
- type: "imdb_id"
|
|
290
|
+
value: "tt9999904"
|
|
291
|
+
- type: "imdb_id"
|
|
292
|
+
value: "tt9999905"
|
|
293
|
+
- type: "imdb_id"
|
|
294
|
+
value: "tt9999906"
|
|
295
|
+
|
|
296
|
+
idempotency_key: "$generate:uuid_v4#collection_lists_update_list_update_collection_list"
|
|
297
|
+
context:
|
|
298
|
+
correlation_id: "collection_lists--update_collection_list"
|
|
299
|
+
validations:
|
|
300
|
+
- check: response_schema
|
|
301
|
+
description: "Response matches update-collection-list-response.json schema"
|
|
302
|
+
- check: field_present
|
|
303
|
+
path: "list.list_id"
|
|
304
|
+
description: "Updated list retains its list_id"
|
|
305
|
+
- check: field_present
|
|
306
|
+
path: "context"
|
|
307
|
+
description: "Response echoes back the context object"
|
|
308
|
+
- check: field_value
|
|
309
|
+
path: "context.correlation_id"
|
|
310
|
+
value: "collection_lists--update_collection_list"
|
|
311
|
+
description: "Context correlation_id returned unchanged"
|
|
312
|
+
|
|
313
|
+
- id: delete_list
|
|
314
|
+
title: "Delete a collection list"
|
|
315
|
+
narrative: |
|
|
316
|
+
The buyer removes a collection list that is no longer needed. Deleting a list
|
|
317
|
+
revokes the associated auth_token.
|
|
318
|
+
|
|
319
|
+
steps:
|
|
320
|
+
- id: delete_collection_list
|
|
321
|
+
title: "Delete a collection list"
|
|
322
|
+
narrative: |
|
|
323
|
+
The buyer deletes a collection list. The governance agent removes the list
|
|
324
|
+
and returns confirmation.
|
|
325
|
+
task: delete_collection_list
|
|
326
|
+
schema_ref: "collection/delete-collection-list-request.json"
|
|
327
|
+
response_schema_ref: "collection/delete-collection-list-response.json"
|
|
328
|
+
doc_ref: "/governance/collection/tasks/collection_lists"
|
|
329
|
+
comply_scenario: governance_collection_lists
|
|
330
|
+
stateful: true
|
|
331
|
+
expected: |
|
|
332
|
+
Confirm deletion:
|
|
333
|
+
- deleted: true
|
|
334
|
+
- list_id: the deleted list
|
|
335
|
+
|
|
336
|
+
sample_request:
|
|
337
|
+
list_id: "$context.collection_list_id"
|
|
338
|
+
account:
|
|
339
|
+
brand:
|
|
340
|
+
domain: "novamotors.example"
|
|
341
|
+
operator: "pinnacle-agency.example"
|
|
342
|
+
|
|
343
|
+
idempotency_key: "$generate:uuid_v4#collection_lists_delete_list_delete_collection_list"
|
|
344
|
+
context:
|
|
345
|
+
correlation_id: "collection_lists--delete_collection_list"
|
|
346
|
+
validations:
|
|
347
|
+
- check: response_schema
|
|
348
|
+
description: "Response matches delete-collection-list-response.json schema"
|
|
349
|
+
- check: field_value
|
|
350
|
+
path: "deleted"
|
|
351
|
+
value: true
|
|
352
|
+
description: "Delete returns deleted: true"
|
|
353
|
+
- check: field_present
|
|
354
|
+
path: "context"
|
|
355
|
+
description: "Response echoes back the context object"
|
|
356
|
+
- check: field_value
|
|
357
|
+
path: "context.correlation_id"
|
|
358
|
+
value: "collection_lists--delete_collection_list"
|
|
359
|
+
description: "Context correlation_id returned unchanged"
|