@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/protocols/media-buy/scenarios/inventory_list_targeting.yaml
ADDED
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
id: media_buy_seller/inventory_list_targeting
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
title: "Seller honors property_list and collection_list targeting on create and update"
|
|
4
|
+
category: media_buy_seller
|
|
5
|
+
summary: "Verifies that a seller accepts PropertyListReference and CollectionListReference in package targeting on create_media_buy AND update_media_buy, with parity between both paths."
|
|
6
|
+
track: media_buy
|
|
7
|
+
required_tools:
|
|
8
|
+
- get_products
|
|
9
|
+
- create_media_buy
|
|
10
|
+
- update_media_buy
|
|
11
|
+
|
|
12
|
+
narrative: |
|
|
13
|
+
AdCP 3.0 targets inventory through agent-hosted reference lists rather than inline
|
|
14
|
+
property arrays. Buyers point a package's targeting at a `PropertyListReference`
|
|
15
|
+
and/or `CollectionListReference`; the seller resolves the list against its own
|
|
16
|
+
inventory at serve time.
|
|
17
|
+
|
|
18
|
+
A common integration regression is create/update parity: a seller accepts list
|
|
19
|
+
references on create_media_buy but silently drops them on update_media_buy, so a
|
|
20
|
+
buyer who edits a live buy loses their list targeting. This scenario writes both
|
|
21
|
+
list types on create, then swaps both on update, and finally reads the buy back
|
|
22
|
+
to confirm the updated references are what the seller persisted.
|
|
23
|
+
|
|
24
|
+
The buyer references pre-populated inventory lists from the test kit — one for
|
|
25
|
+
matching properties and one for matching collections — so the seller's test
|
|
26
|
+
engine can resolve them without needing a live governance/inventory agent.
|
|
27
|
+
|
|
28
|
+
agent:
|
|
29
|
+
interaction_model: media_buy_seller
|
|
30
|
+
capabilities:
|
|
31
|
+
- sells_media
|
|
32
|
+
- supports_property_list_targeting
|
|
33
|
+
- supports_collection_list_targeting
|
|
34
|
+
examples:
|
|
35
|
+
- "Sellers that accept PropertyListReference / CollectionListReference in package targeting"
|
|
36
|
+
|
|
37
|
+
caller:
|
|
38
|
+
role: buyer_agent
|
|
39
|
+
example: "Pinnacle Agency (buyer)"
|
|
40
|
+
|
|
41
|
+
prerequisites:
|
|
42
|
+
description: |
|
|
43
|
+
The seller must accept PropertyListReference and CollectionListReference in
|
|
44
|
+
package targeting on both create_media_buy and update_media_buy. List contents
|
|
45
|
+
come from test-kits/acme-outdoor.yaml → inventory_targets.
|
|
46
|
+
test_kit: "test-kits/acme-outdoor.yaml"
|
|
47
|
+
|
|
48
|
+
phases:
|
|
49
|
+
- id: discover_product
|
|
50
|
+
title: "Discover a product that supports list targeting"
|
|
51
|
+
steps:
|
|
52
|
+
- id: get_products_brief
|
|
53
|
+
title: "Discover product"
|
|
54
|
+
task: get_products
|
|
55
|
+
schema_ref: "media-buy/get-products-request.json"
|
|
56
|
+
response_schema_ref: "media-buy/get-products-response.json"
|
|
57
|
+
doc_ref: "/media-buy/task-reference/get_products"
|
|
58
|
+
comply_scenario: full_sales_flow
|
|
59
|
+
stateful: false
|
|
60
|
+
expected: |
|
|
61
|
+
Return at least one product whose targeting supports property_list and
|
|
62
|
+
collection_list references.
|
|
63
|
+
|
|
64
|
+
sample_request:
|
|
65
|
+
buying_mode: "brief"
|
|
66
|
+
brief: "Video inventory on outdoor lifestyle programming. Q3 flight, $30K budget."
|
|
67
|
+
account:
|
|
68
|
+
brand:
|
|
69
|
+
domain: "acmeoutdoor.example"
|
|
70
|
+
operator: "pinnacle-agency.example"
|
|
71
|
+
sandbox: true
|
|
72
|
+
|
|
73
|
+
context:
|
|
74
|
+
correlation_id: "inventory_list_targeting--get_products_brief"
|
|
75
|
+
context_outputs:
|
|
76
|
+
- path: "products[0].product_id"
|
|
77
|
+
key: "product_id"
|
|
78
|
+
- path: "products[0].pricing_options[0].pricing_option_id"
|
|
79
|
+
key: "pricing_option_id"
|
|
80
|
+
validations:
|
|
81
|
+
- check: response_schema
|
|
82
|
+
description: "Response matches get-products-response.json schema"
|
|
83
|
+
- check: field_present
|
|
84
|
+
path: "products[0].product_id"
|
|
85
|
+
description: "Product has a product_id"
|
|
86
|
+
|
|
87
|
+
- id: create_with_both_lists
|
|
88
|
+
title: "Create media buy with property_list AND collection_list targeting"
|
|
89
|
+
narrative: |
|
|
90
|
+
The buyer references the matching-property list and the matching-collection
|
|
91
|
+
list from the test kit. The seller accepts both references, creates the buy,
|
|
92
|
+
and echoes the resolved targeting back on the package.
|
|
93
|
+
|
|
94
|
+
steps:
|
|
95
|
+
- id: create_buy_with_lists
|
|
96
|
+
title: "create_media_buy with both list references"
|
|
97
|
+
task: create_media_buy
|
|
98
|
+
schema_ref: "media-buy/create-media-buy-request.json"
|
|
99
|
+
response_schema_ref: "media-buy/create-media-buy-response.json"
|
|
100
|
+
doc_ref: "/media-buy/task-reference/create_media_buy"
|
|
101
|
+
comply_scenario: create_media_buy
|
|
102
|
+
stateful: true
|
|
103
|
+
expected: |
|
|
104
|
+
The seller accepts the list references without error. The response
|
|
105
|
+
includes a media_buy_id and the package retains both the property_list
|
|
106
|
+
and collection_list targeting fields so subsequent get / update calls
|
|
107
|
+
can read them back.
|
|
108
|
+
|
|
109
|
+
sample_request:
|
|
110
|
+
brand:
|
|
111
|
+
domain: "acmeoutdoor.example"
|
|
112
|
+
account:
|
|
113
|
+
brand:
|
|
114
|
+
domain: "acmeoutdoor.example"
|
|
115
|
+
operator: "pinnacle-agency.example"
|
|
116
|
+
sandbox: true
|
|
117
|
+
idempotency_key: "inventory-list-targeting-create-v1"
|
|
118
|
+
start_time: "2026-07-01T00:00:00Z"
|
|
119
|
+
end_time: "2026-09-30T23:59:59Z"
|
|
120
|
+
packages:
|
|
121
|
+
- product_id: "$context.product_id"
|
|
122
|
+
budget: 20000
|
|
123
|
+
pricing_option_id: "$context.pricing_option_id"
|
|
124
|
+
targeting_overlay:
|
|
125
|
+
property_list:
|
|
126
|
+
agent_url: "https://governance.pinnacle-agency.example"
|
|
127
|
+
list_id: "acme_outdoor_allowlist_v1"
|
|
128
|
+
collection_list:
|
|
129
|
+
agent_url: "https://governance.pinnacle-agency.example"
|
|
130
|
+
list_id: "acme_outdoor_collections_v1"
|
|
131
|
+
|
|
132
|
+
context:
|
|
133
|
+
correlation_id: "inventory_list_targeting--create_buy_with_lists"
|
|
134
|
+
context_outputs:
|
|
135
|
+
- path: "media_buy_id"
|
|
136
|
+
key: "media_buy_id"
|
|
137
|
+
- path: "packages[0].package_id"
|
|
138
|
+
key: "package_id"
|
|
139
|
+
validations:
|
|
140
|
+
- check: response_schema
|
|
141
|
+
description: "Response matches create-media-buy-response.json schema"
|
|
142
|
+
- check: field_present
|
|
143
|
+
path: "media_buy_id"
|
|
144
|
+
description: "Seller assigns a media_buy_id"
|
|
145
|
+
- check: field_present
|
|
146
|
+
path: "context"
|
|
147
|
+
description: "Response echoes back the context object"
|
|
148
|
+
|
|
149
|
+
- id: verify_create_persisted
|
|
150
|
+
title: "Verify list targeting persisted after create"
|
|
151
|
+
narrative: |
|
|
152
|
+
Read the buy back to confirm the seller stored both list references — not just
|
|
153
|
+
echoed them back in the create response. This catches sellers that parse list
|
|
154
|
+
references on create but never persist them to their internal package model.
|
|
155
|
+
|
|
156
|
+
steps:
|
|
157
|
+
- id: get_after_create
|
|
158
|
+
title: "get_media_buys after create"
|
|
159
|
+
task: get_media_buys
|
|
160
|
+
schema_ref: "media-buy/get-media-buys-request.json"
|
|
161
|
+
response_schema_ref: "media-buy/get-media-buys-response.json"
|
|
162
|
+
doc_ref: "/media-buy/task-reference/get_media_buys"
|
|
163
|
+
comply_scenario: media_buy_lifecycle
|
|
164
|
+
stateful: true
|
|
165
|
+
expected: |
|
|
166
|
+
Return the media buy with packages[0].targeting_overlay.property_list
|
|
167
|
+
and .collection_list populated with the list_id values sent on create.
|
|
168
|
+
|
|
169
|
+
sample_request:
|
|
170
|
+
account:
|
|
171
|
+
brand:
|
|
172
|
+
domain: "acmeoutdoor.example"
|
|
173
|
+
operator: "pinnacle-agency.example"
|
|
174
|
+
sandbox: true
|
|
175
|
+
media_buy_ids:
|
|
176
|
+
- "$context.media_buy_id"
|
|
177
|
+
|
|
178
|
+
context:
|
|
179
|
+
correlation_id: "inventory_list_targeting--get_after_create"
|
|
180
|
+
validations:
|
|
181
|
+
- check: response_schema
|
|
182
|
+
description: "Response matches get-media-buys-response.json schema"
|
|
183
|
+
- check: field_value
|
|
184
|
+
path: "media_buys[0].packages[0].targeting_overlay.property_list.list_id"
|
|
185
|
+
value: "acme_outdoor_allowlist_v1"
|
|
186
|
+
description: "property_list.list_id persisted after create"
|
|
187
|
+
- check: field_value
|
|
188
|
+
path: "media_buys[0].packages[0].targeting_overlay.collection_list.list_id"
|
|
189
|
+
value: "acme_outdoor_collections_v1"
|
|
190
|
+
description: "collection_list.list_id persisted after create"
|
|
191
|
+
|
|
192
|
+
- id: update_swap_lists
|
|
193
|
+
title: "Swap property_list and collection_list via update_media_buy"
|
|
194
|
+
narrative: |
|
|
195
|
+
The buyer swaps both list references. This is the create/update parity check:
|
|
196
|
+
a seller that accepts list references on create but silently drops them on
|
|
197
|
+
update would fail to update the persisted targeting. We exercise update
|
|
198
|
+
explicitly to catch that class of regression.
|
|
199
|
+
|
|
200
|
+
steps:
|
|
201
|
+
- id: update_buy_swap_lists
|
|
202
|
+
title: "update_media_buy replaces both list references"
|
|
203
|
+
task: update_media_buy
|
|
204
|
+
schema_ref: "media-buy/update-media-buy-request.json"
|
|
205
|
+
response_schema_ref: "media-buy/update-media-buy-response.json"
|
|
206
|
+
doc_ref: "/media-buy/task-reference/update_media_buy"
|
|
207
|
+
comply_scenario: media_buy_lifecycle
|
|
208
|
+
stateful: true
|
|
209
|
+
expected: |
|
|
210
|
+
The seller acknowledges the updated targeting. Both property_list and
|
|
211
|
+
collection_list are replaced (not merged) with the new list_id values.
|
|
212
|
+
|
|
213
|
+
sample_request:
|
|
214
|
+
account:
|
|
215
|
+
brand:
|
|
216
|
+
domain: "acmeoutdoor.example"
|
|
217
|
+
operator: "pinnacle-agency.example"
|
|
218
|
+
sandbox: true
|
|
219
|
+
media_buy_id: "$context.media_buy_id"
|
|
220
|
+
packages:
|
|
221
|
+
- package_id: "$context.package_id"
|
|
222
|
+
targeting_overlay:
|
|
223
|
+
property_list:
|
|
224
|
+
agent_url: "https://governance.pinnacle-agency.example"
|
|
225
|
+
list_id: "acme_outdoor_no_match_v1"
|
|
226
|
+
collection_list:
|
|
227
|
+
agent_url: "https://governance.pinnacle-agency.example"
|
|
228
|
+
list_id: "acme_outdoor_no_match_collections_v1"
|
|
229
|
+
|
|
230
|
+
idempotency_key: "$generate:uuid_v4#media_buy_seller_inventory_list_targeting_update_swap_lists_update_buy_swap_lists"
|
|
231
|
+
context:
|
|
232
|
+
correlation_id: "inventory_list_targeting--update_buy_swap_lists"
|
|
233
|
+
validations:
|
|
234
|
+
- check: response_schema
|
|
235
|
+
description: "Response matches update-media-buy-response.json schema"
|
|
236
|
+
|
|
237
|
+
- id: get_after_update
|
|
238
|
+
title: "Confirm swap persisted"
|
|
239
|
+
task: get_media_buys
|
|
240
|
+
schema_ref: "media-buy/get-media-buys-request.json"
|
|
241
|
+
response_schema_ref: "media-buy/get-media-buys-response.json"
|
|
242
|
+
doc_ref: "/media-buy/task-reference/get_media_buys"
|
|
243
|
+
comply_scenario: media_buy_lifecycle
|
|
244
|
+
stateful: true
|
|
245
|
+
expected: |
|
|
246
|
+
The persisted package targeting reflects the new list_id values. This is
|
|
247
|
+
the create/update parity guarantee: edits through update_media_buy land
|
|
248
|
+
in persistent state just like fields on create_media_buy.
|
|
249
|
+
|
|
250
|
+
sample_request:
|
|
251
|
+
account:
|
|
252
|
+
brand:
|
|
253
|
+
domain: "acmeoutdoor.example"
|
|
254
|
+
operator: "pinnacle-agency.example"
|
|
255
|
+
sandbox: true
|
|
256
|
+
media_buy_ids:
|
|
257
|
+
- "$context.media_buy_id"
|
|
258
|
+
|
|
259
|
+
context:
|
|
260
|
+
correlation_id: "inventory_list_targeting--get_after_update"
|
|
261
|
+
validations:
|
|
262
|
+
- check: response_schema
|
|
263
|
+
description: "Response matches get-media-buys-response.json schema"
|
|
264
|
+
- check: field_value
|
|
265
|
+
path: "media_buys[0].packages[0].targeting_overlay.property_list.list_id"
|
|
266
|
+
value: "acme_outdoor_no_match_v1"
|
|
267
|
+
description: "property_list.list_id updated after update_media_buy"
|
|
268
|
+
- check: field_value
|
|
269
|
+
path: "media_buys[0].packages[0].targeting_overlay.collection_list.list_id"
|
|
270
|
+
value: "acme_outdoor_no_match_collections_v1"
|
|
271
|
+
description: "collection_list.list_id updated after update_media_buy"
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
id: media_buy_seller/measurement_terms_rejected
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
title: "Seller rejects unworkable measurement_terms"
|
|
4
|
+
category: media_buy_seller
|
|
5
|
+
summary: "Buyer proposes measurement_terms the seller will not accept; seller returns TERMS_REJECTED; buyer retries with seller-compatible terms."
|
|
6
|
+
track: media_buy
|
|
7
|
+
required_tools:
|
|
8
|
+
- get_products
|
|
9
|
+
- create_media_buy
|
|
10
|
+
|
|
11
|
+
narrative: |
|
|
12
|
+
measurement_terms negotiation is a round-trip. The buyer proposes a measurement vendor,
|
|
13
|
+
window, and variance tolerance on each package; the seller either accepts (returning
|
|
14
|
+
measurement_terms echoed in the response) or rejects with TERMS_REJECTED and a message
|
|
15
|
+
explaining what is unacceptable. The buyer corrects the terms and retries the same
|
|
16
|
+
create_media_buy idempotency_key with an adjusted payload.
|
|
17
|
+
|
|
18
|
+
This scenario sends an intentionally aggressive first proposal (max_variance_percent: 0
|
|
19
|
+
with a window the seller does not guarantee), verifies the seller rejects with
|
|
20
|
+
TERMS_REJECTED, then retries with a relaxed proposal that falls inside the seller's
|
|
21
|
+
stated tolerance and expects a successful create_media_buy.
|
|
22
|
+
|
|
23
|
+
agent:
|
|
24
|
+
interaction_model: media_buy_seller
|
|
25
|
+
capabilities:
|
|
26
|
+
- sells_media
|
|
27
|
+
- measurement_terms
|
|
28
|
+
examples:
|
|
29
|
+
- "Broadcast sellers"
|
|
30
|
+
- "CTV sellers with C3/C7 guarantees"
|
|
31
|
+
- "Any seller that negotiates measurement terms"
|
|
32
|
+
|
|
33
|
+
caller:
|
|
34
|
+
role: buyer_agent
|
|
35
|
+
example: "Pinnacle Agency (buyer)"
|
|
36
|
+
|
|
37
|
+
prerequisites:
|
|
38
|
+
description: |
|
|
39
|
+
Seller supports measurement_terms on create_media_buy packages. Buyer knows the
|
|
40
|
+
seller's declared measurement capabilities from get_adcp_capabilities.
|
|
41
|
+
test_kit: "test-kits/acme-outdoor.yaml"
|
|
42
|
+
|
|
43
|
+
phases:
|
|
44
|
+
- id: discover_products
|
|
45
|
+
title: "Discover products"
|
|
46
|
+
steps:
|
|
47
|
+
- id: get_products_brief
|
|
48
|
+
title: "Find a product that supports measurement_terms"
|
|
49
|
+
task: get_products
|
|
50
|
+
schema_ref: "media-buy/get-products-request.json"
|
|
51
|
+
response_schema_ref: "media-buy/get-products-response.json"
|
|
52
|
+
doc_ref: "/media-buy/task-reference/get_products"
|
|
53
|
+
comply_scenario: full_sales_flow
|
|
54
|
+
stateful: false
|
|
55
|
+
expected: |
|
|
56
|
+
Return products with pricing_options. At least one product should advertise
|
|
57
|
+
measurement support in the response.
|
|
58
|
+
sample_request:
|
|
59
|
+
buying_mode: "brief"
|
|
60
|
+
brief: "Premium video inventory with measurement guarantees. Q2 flight, $50K."
|
|
61
|
+
account:
|
|
62
|
+
brand:
|
|
63
|
+
domain: "acmeoutdoor.example"
|
|
64
|
+
operator: "pinnacle-agency.example"
|
|
65
|
+
context_outputs:
|
|
66
|
+
- path: "products[0].product_id"
|
|
67
|
+
key: "product_id"
|
|
68
|
+
- path: "products[0].pricing_options[0].pricing_option_id"
|
|
69
|
+
key: "pricing_option_id"
|
|
70
|
+
validations:
|
|
71
|
+
- check: response_schema
|
|
72
|
+
description: "Response matches get-products-response.json schema"
|
|
73
|
+
- check: field_present
|
|
74
|
+
path: "products[0].product_id"
|
|
75
|
+
description: "At least one product returned"
|
|
76
|
+
|
|
77
|
+
- id: reject_terms
|
|
78
|
+
title: "Seller rejects unworkable terms"
|
|
79
|
+
narrative: |
|
|
80
|
+
The buyer proposes max_variance_percent: 0 — a tolerance almost no seller can
|
|
81
|
+
honor against third-party measurement. The seller must reject with TERMS_REJECTED
|
|
82
|
+
and indicate what would be acceptable.
|
|
83
|
+
|
|
84
|
+
steps:
|
|
85
|
+
- id: create_media_buy_aggressive_terms
|
|
86
|
+
title: "Propose aggressive measurement_terms"
|
|
87
|
+
task: create_media_buy
|
|
88
|
+
schema_ref: "media-buy/create-media-buy-request.json"
|
|
89
|
+
response_schema_ref: "media-buy/create-media-buy-response.json"
|
|
90
|
+
doc_ref: "/media-buy/task-reference/create_media_buy"
|
|
91
|
+
comply_scenario: create_media_buy
|
|
92
|
+
expect_error: true
|
|
93
|
+
negative_path: payload_well_formed
|
|
94
|
+
stateful: false
|
|
95
|
+
expected: |
|
|
96
|
+
Reject with:
|
|
97
|
+
- code: TERMS_REJECTED
|
|
98
|
+
- recovery: correctable
|
|
99
|
+
- message indicating which terms are unworkable (vendor, window, or variance)
|
|
100
|
+
|
|
101
|
+
sample_request:
|
|
102
|
+
brand:
|
|
103
|
+
domain: "acmeoutdoor.example"
|
|
104
|
+
account:
|
|
105
|
+
brand:
|
|
106
|
+
domain: "acmeoutdoor.example"
|
|
107
|
+
operator: "pinnacle-agency.example"
|
|
108
|
+
idempotency_key: "measurement-terms-probe-aggressive-v1"
|
|
109
|
+
start_time: "2026-05-01T00:00:00Z"
|
|
110
|
+
end_time: "2026-05-31T23:59:59Z"
|
|
111
|
+
packages:
|
|
112
|
+
- product_id: "$context.product_id"
|
|
113
|
+
budget: 25000
|
|
114
|
+
pricing_option_id: "$context.pricing_option_id"
|
|
115
|
+
measurement_terms:
|
|
116
|
+
billing_measurement:
|
|
117
|
+
vendor:
|
|
118
|
+
domain: "videoamp.example"
|
|
119
|
+
measurement_window: "c30"
|
|
120
|
+
max_variance_percent: 0
|
|
121
|
+
makegood_policy:
|
|
122
|
+
available_remedies: ["credit"]
|
|
123
|
+
|
|
124
|
+
context:
|
|
125
|
+
correlation_id: "measurement_terms_rejected--aggressive"
|
|
126
|
+
validations:
|
|
127
|
+
- check: error_code
|
|
128
|
+
value: "TERMS_REJECTED"
|
|
129
|
+
description: "Error code is TERMS_REJECTED"
|
|
130
|
+
- check: field_present
|
|
131
|
+
path: "context"
|
|
132
|
+
description: "Response echoes back the context object even on errors"
|
|
133
|
+
- check: field_value
|
|
134
|
+
path: "context.correlation_id"
|
|
135
|
+
value: "measurement_terms_rejected--aggressive"
|
|
136
|
+
description: "Context correlation_id returned unchanged"
|
|
137
|
+
|
|
138
|
+
- id: accept_terms
|
|
139
|
+
title: "Buyer retries with acceptable terms"
|
|
140
|
+
narrative: |
|
|
141
|
+
The buyer relaxes measurement_terms to match the seller's stated capability
|
|
142
|
+
(c7 window, 10% variance, makegood remedies) and retries. The seller accepts and
|
|
143
|
+
returns the confirmed terms echoed in the response.
|
|
144
|
+
|
|
145
|
+
steps:
|
|
146
|
+
- id: create_media_buy_relaxed_terms
|
|
147
|
+
title: "Propose seller-compatible measurement_terms"
|
|
148
|
+
task: create_media_buy
|
|
149
|
+
schema_ref: "media-buy/create-media-buy-request.json"
|
|
150
|
+
response_schema_ref: "media-buy/create-media-buy-response.json"
|
|
151
|
+
doc_ref: "/media-buy/task-reference/create_media_buy"
|
|
152
|
+
comply_scenario: create_media_buy
|
|
153
|
+
stateful: true
|
|
154
|
+
expected: |
|
|
155
|
+
The buy succeeds. The response echoes the accepted measurement_terms (possibly
|
|
156
|
+
normalized by the seller).
|
|
157
|
+
|
|
158
|
+
sample_request:
|
|
159
|
+
brand:
|
|
160
|
+
domain: "acmeoutdoor.example"
|
|
161
|
+
account:
|
|
162
|
+
brand:
|
|
163
|
+
domain: "acmeoutdoor.example"
|
|
164
|
+
operator: "pinnacle-agency.example"
|
|
165
|
+
idempotency_key: "measurement-terms-probe-relaxed-v1"
|
|
166
|
+
start_time: "2026-05-01T00:00:00Z"
|
|
167
|
+
end_time: "2026-05-31T23:59:59Z"
|
|
168
|
+
packages:
|
|
169
|
+
- product_id: "$context.product_id"
|
|
170
|
+
budget: 25000
|
|
171
|
+
pricing_option_id: "$context.pricing_option_id"
|
|
172
|
+
measurement_terms:
|
|
173
|
+
billing_measurement:
|
|
174
|
+
vendor:
|
|
175
|
+
domain: "videoamp.example"
|
|
176
|
+
measurement_window: "c7"
|
|
177
|
+
max_variance_percent: 10
|
|
178
|
+
makegood_policy:
|
|
179
|
+
available_remedies: ["additional_delivery", "credit"]
|
|
180
|
+
|
|
181
|
+
context:
|
|
182
|
+
correlation_id: "measurement_terms_rejected--relaxed"
|
|
183
|
+
validations:
|
|
184
|
+
- check: response_schema
|
|
185
|
+
description: "Response matches create-media-buy-response.json schema"
|
|
186
|
+
- check: field_present
|
|
187
|
+
path: "media_buy_id"
|
|
188
|
+
description: "Seller returns a media_buy_id after accepting terms"
|
|
189
|
+
- check: field_present
|
|
190
|
+
path: "context"
|
|
191
|
+
description: "Response echoes back the context object"
|
|
192
|
+
- check: field_value
|
|
193
|
+
path: "context.correlation_id"
|
|
194
|
+
value: "measurement_terms_rejected--relaxed"
|
|
195
|
+
description: "Context correlation_id returned unchanged"
|