@adcp/sdk 6.9.0 → 6.11.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/decisioning/async-outcome.d.ts +17 -0
- package/dist/lib/server/decisioning/async-outcome.d.ts.map +1 -1
- package/dist/lib/server/decisioning/async-outcome.js +23 -18
- package/dist/lib/server/decisioning/async-outcome.js.map +1 -1
- package/dist/lib/server/decisioning/context.d.ts +8 -2
- package/dist/lib/server/decisioning/context.d.ts.map +1 -1
- package/dist/lib/server/decisioning/index.d.ts +1 -0
- package/dist/lib/server/decisioning/index.d.ts.map +1 -1
- package/dist/lib/server/decisioning/index.js.map +1 -1
- package/dist/lib/server/decisioning/runtime/from-platform.js +6 -4
- package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
- package/dist/lib/server/decisioning/runtime/postgres-task-registry.d.ts.map +1 -1
- package/dist/lib/server/decisioning/runtime/postgres-task-registry.js +5 -2
- package/dist/lib/server/decisioning/runtime/postgres-task-registry.js.map +1 -1
- package/dist/lib/server/decisioning/runtime/task-registry.d.ts +5 -0
- package/dist/lib/server/decisioning/runtime/task-registry.d.ts.map +1 -1
- package/dist/lib/server/decisioning/runtime/task-registry.js +4 -1
- package/dist/lib/server/decisioning/runtime/task-registry.js.map +1 -1
- package/dist/lib/server/decisioning/runtime/to-context.d.ts.map +1 -1
- package/dist/lib/server/decisioning/runtime/to-context.js +10 -2
- package/dist/lib/server/decisioning/runtime/to-context.js.map +1 -1
- 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/test-controller.d.ts +2 -0
- package/dist/lib/server/test-controller.d.ts.map +1 -1
- package/dist/lib/server/test-controller.js +6 -11
- package/dist/lib/server/test-controller.js.map +1 -1
- 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/comply-controller.d.ts +2 -0
- package/dist/lib/testing/comply-controller.d.ts.map +1 -1
- package/dist/lib/testing/comply-controller.js.map +1 -1
- 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
|
@@ -0,0 +1,428 @@
|
|
|
1
|
+
id: sales_non_guaranteed
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
title: "Non-guaranteed auction-based media buy"
|
|
4
|
+
protocol: media-buy
|
|
5
|
+
category: sales_non_guaranteed
|
|
6
|
+
summary: "Seller agent for auction-based, non-guaranteed buying where the buyer sets bid prices and budgets."
|
|
7
|
+
track: media_buy
|
|
8
|
+
required_tools:
|
|
9
|
+
- get_products
|
|
10
|
+
- create_media_buy
|
|
11
|
+
requires_scenarios:
|
|
12
|
+
- media_buy_seller/delivery_reporting
|
|
13
|
+
- media_buy_seller/pending_creatives_to_start
|
|
14
|
+
- media_buy_seller/inventory_list_targeting
|
|
15
|
+
- media_buy_seller/inventory_list_no_match
|
|
16
|
+
- media_buy_seller/invalid_transitions
|
|
17
|
+
|
|
18
|
+
# Cross-step assertion (adcp#2664). status.monotonic rejects resource
|
|
19
|
+
# status transitions observed across steps that aren't on the spec
|
|
20
|
+
# lifecycle graph — e.g. active → pending_creatives on a media_buy.
|
|
21
|
+
invariants:
|
|
22
|
+
- status.monotonic
|
|
23
|
+
|
|
24
|
+
narrative: |
|
|
25
|
+
You run a sell-side platform with auction-based inventory. Non-guaranteed buys don't
|
|
26
|
+
require IOs or human approval — the buyer sets a bid price and budget, and your platform
|
|
27
|
+
runs the auction. Delivery is best-effort based on bid competitiveness.
|
|
28
|
+
|
|
29
|
+
The buyer discovers products with floor prices and bid guidance, creates a buy with bid
|
|
30
|
+
prices per package, monitors win rates and pacing, and adjusts bids or budgets in-flight
|
|
31
|
+
to optimize performance.
|
|
32
|
+
|
|
33
|
+
This storyboard covers the non-guaranteed buying path — fast setup, no human approval,
|
|
34
|
+
real-time optimization through bid and budget adjustments.
|
|
35
|
+
|
|
36
|
+
agent:
|
|
37
|
+
interaction_model: media_buy_seller
|
|
38
|
+
capabilities:
|
|
39
|
+
- sells_media
|
|
40
|
+
- supports_non_guaranteed
|
|
41
|
+
- auction_based
|
|
42
|
+
examples:
|
|
43
|
+
- "SSP with programmatic auction inventory"
|
|
44
|
+
- "Exchange-based publisher platform"
|
|
45
|
+
- "Open marketplace seller"
|
|
46
|
+
|
|
47
|
+
caller:
|
|
48
|
+
role: buyer_agent
|
|
49
|
+
example: "Scope3 (DSP)"
|
|
50
|
+
|
|
51
|
+
prerequisites:
|
|
52
|
+
description: |
|
|
53
|
+
The caller needs a brand identity and operator credentials. Non-guaranteed buys
|
|
54
|
+
typically have lower barriers to entry — no IO signing required. The test kit
|
|
55
|
+
provides a sample brand (Acme Outdoor) with bid parameters suitable for testing
|
|
56
|
+
the auction-based flow.
|
|
57
|
+
test_kit: "test-kits/acme-outdoor.yaml"
|
|
58
|
+
controller_seeding: true
|
|
59
|
+
|
|
60
|
+
fixtures:
|
|
61
|
+
products:
|
|
62
|
+
- product_id: "sports_display_auction"
|
|
63
|
+
delivery_type: "non_guaranteed"
|
|
64
|
+
channels: ["display"]
|
|
65
|
+
format_ids:
|
|
66
|
+
- id: "display_300x250"
|
|
67
|
+
- product_id: "outdoor_video_auction"
|
|
68
|
+
delivery_type: "non_guaranteed"
|
|
69
|
+
channels: ["video"]
|
|
70
|
+
format_ids:
|
|
71
|
+
- id: "video_30s"
|
|
72
|
+
pricing_options:
|
|
73
|
+
- product_id: "sports_display_auction"
|
|
74
|
+
pricing_option_id: "cpm_auction"
|
|
75
|
+
pricing_model: "cpm"
|
|
76
|
+
currency: "USD"
|
|
77
|
+
floor_price: 5.0
|
|
78
|
+
- product_id: "outdoor_video_auction"
|
|
79
|
+
pricing_option_id: "cpm_auction"
|
|
80
|
+
pricing_model: "cpm"
|
|
81
|
+
currency: "USD"
|
|
82
|
+
floor_price: 15.0
|
|
83
|
+
|
|
84
|
+
phases:
|
|
85
|
+
- id: capability_discovery
|
|
86
|
+
title: "Capability discovery"
|
|
87
|
+
narrative: |
|
|
88
|
+
The buyer calls get_adcp_capabilities to confirm the agent supports media buying before sending briefs or creating buys.
|
|
89
|
+
|
|
90
|
+
steps:
|
|
91
|
+
- id: get_capabilities
|
|
92
|
+
title: "Check agent capabilities"
|
|
93
|
+
narrative: |
|
|
94
|
+
Verify that the agent declares the expected protocol support before
|
|
95
|
+
proceeding with domain-specific operations.
|
|
96
|
+
task: get_adcp_capabilities
|
|
97
|
+
schema_ref: "protocol/get-adcp-capabilities-request.json"
|
|
98
|
+
response_schema_ref: "protocol/get-adcp-capabilities-response.json"
|
|
99
|
+
doc_ref: "/protocol/get_adcp_capabilities"
|
|
100
|
+
comply_scenario: capability_discovery
|
|
101
|
+
stateful: false
|
|
102
|
+
expected: |
|
|
103
|
+
Return capabilities declaring media_buy in supported_protocols, confirming the agent sells media.
|
|
104
|
+
sample_request:
|
|
105
|
+
context:
|
|
106
|
+
correlation_id: "sales_non_guaranteed--get_capabilities"
|
|
107
|
+
validations:
|
|
108
|
+
- check: response_schema
|
|
109
|
+
description: "Response matches get-adcp-capabilities-response.json schema"
|
|
110
|
+
- check: field_present
|
|
111
|
+
path: "supported_protocols"
|
|
112
|
+
description: "Agent declares supported protocols"
|
|
113
|
+
|
|
114
|
+
- check: field_present
|
|
115
|
+
path: "context"
|
|
116
|
+
description: "Response echoes back the context object"
|
|
117
|
+
- check: field_value
|
|
118
|
+
path: "context.correlation_id"
|
|
119
|
+
value: "sales_non_guaranteed--get_capabilities"
|
|
120
|
+
description: "Context correlation_id returned unchanged"
|
|
121
|
+
- id: product_discovery
|
|
122
|
+
title: "Discover auction-based products"
|
|
123
|
+
narrative: |
|
|
124
|
+
The buyer sends a brief to discover your non-guaranteed inventory. Products
|
|
125
|
+
come back with delivery_type: non_guaranteed, floor prices, and bid guidance
|
|
126
|
+
that helps the buyer set competitive bids.
|
|
127
|
+
|
|
128
|
+
steps:
|
|
129
|
+
- id: get_products_brief
|
|
130
|
+
title: "Send a brief for non-guaranteed inventory"
|
|
131
|
+
narrative: |
|
|
132
|
+
The buyer describes what they want. Your platform returns non-guaranteed
|
|
133
|
+
products with auction mechanics: floor prices, recommended bid ranges,
|
|
134
|
+
estimated win rates at different bid levels, and available audience segments.
|
|
135
|
+
task: get_products
|
|
136
|
+
schema_ref: "media-buy/get-products-request.json"
|
|
137
|
+
response_schema_ref: "media-buy/get-products-response.json"
|
|
138
|
+
doc_ref: "/media-buy/task-reference/get_products"
|
|
139
|
+
comply_scenario: full_sales_flow
|
|
140
|
+
stateful: false
|
|
141
|
+
expected: |
|
|
142
|
+
Return non-guaranteed products matching the brief. Each product should include:
|
|
143
|
+
- product_id: unique identifier
|
|
144
|
+
- name and description
|
|
145
|
+
- delivery_type: non_guaranteed
|
|
146
|
+
- pricing_models: auction-based pricing with floor_price and recommended bid range
|
|
147
|
+
- forecast: estimated impressions at different bid levels (best-effort)
|
|
148
|
+
- creative_format_ids: required creative formats
|
|
149
|
+
- targeting: available audiences and contexts
|
|
150
|
+
|
|
151
|
+
sample_request:
|
|
152
|
+
buying_mode: "brief"
|
|
153
|
+
brief: "Display and video inventory across sports and outdoor lifestyle sites. Q2 flight, $25K budget. Adults 25-54, US. Auction-based, looking for competitive CPMs."
|
|
154
|
+
account:
|
|
155
|
+
brand:
|
|
156
|
+
domain: "acmeoutdoor.example"
|
|
157
|
+
operator: "pinnacle-agency.example"
|
|
158
|
+
|
|
159
|
+
context:
|
|
160
|
+
correlation_id: "sales_non_guaranteed--get_products_brief"
|
|
161
|
+
validations:
|
|
162
|
+
- check: response_schema
|
|
163
|
+
description: "Response matches get-products-response.json schema"
|
|
164
|
+
- check: field_present
|
|
165
|
+
path: "products"
|
|
166
|
+
description: "Response contains a products array"
|
|
167
|
+
- check: field_present
|
|
168
|
+
path: "products[0].product_id"
|
|
169
|
+
description: "Each product has a product_id"
|
|
170
|
+
- check: field_present
|
|
171
|
+
path: "products[0].delivery_type"
|
|
172
|
+
description: "Each product declares delivery_type: non_guaranteed"
|
|
173
|
+
|
|
174
|
+
- check: field_present
|
|
175
|
+
path: "context"
|
|
176
|
+
description: "Response echoes back the context object"
|
|
177
|
+
- check: field_value
|
|
178
|
+
path: "context.correlation_id"
|
|
179
|
+
value: "sales_non_guaranteed--get_products_brief"
|
|
180
|
+
description: "Context correlation_id returned unchanged"
|
|
181
|
+
- check: field_present
|
|
182
|
+
path: "products[0].format_ids"
|
|
183
|
+
description: "Products include format_ids for creative requirements"
|
|
184
|
+
- check: field_present
|
|
185
|
+
path: "products[0].format_ids[0].agent_url"
|
|
186
|
+
description: "Format IDs include agent_url — must match this agent's URL"
|
|
187
|
+
- check: field_present
|
|
188
|
+
path: "products[0].format_ids[0].id"
|
|
189
|
+
description: "Format IDs include id — must be accepted back in sync_creatives"
|
|
190
|
+
- id: create_buy
|
|
191
|
+
title: "Create non-guaranteed buy"
|
|
192
|
+
narrative: |
|
|
193
|
+
The buyer creates a media buy with bid prices per package. Since this is
|
|
194
|
+
non-guaranteed, no IO is required and no human approval is needed. The response
|
|
195
|
+
comes back as completed — the buy is immediately active and your platform starts
|
|
196
|
+
bidding in auctions on the buyer's behalf.
|
|
197
|
+
|
|
198
|
+
steps:
|
|
199
|
+
- id: create_media_buy
|
|
200
|
+
title: "Create a media buy with bid prices"
|
|
201
|
+
narrative: |
|
|
202
|
+
The buyer commits to non-guaranteed products with bid prices and budgets.
|
|
203
|
+
Your platform validates the bids against floor prices, confirms the buy
|
|
204
|
+
immediately (completed status), and begins auction participation.
|
|
205
|
+
|
|
206
|
+
Each package includes a bid_price that the buyer is willing to pay per unit
|
|
207
|
+
(CPM, CPC, etc.). The platform uses this to compete in auctions.
|
|
208
|
+
task: create_media_buy
|
|
209
|
+
schema_ref: "media-buy/create-media-buy-request.json"
|
|
210
|
+
response_schema_ref: "media-buy/create-media-buy-response.json"
|
|
211
|
+
doc_ref: "/media-buy/task-reference/create_media_buy"
|
|
212
|
+
comply_scenario: create_media_buy
|
|
213
|
+
stateful: true
|
|
214
|
+
expected: |
|
|
215
|
+
Return the media buy in completed status:
|
|
216
|
+
- media_buy_id: your platform's identifier
|
|
217
|
+
- status: active (no async approval needed)
|
|
218
|
+
- confirmed_at: timestamp
|
|
219
|
+
- packages: confirmed line items with bid prices acknowledged
|
|
220
|
+
- valid_actions: pause, update_bid, get_delivery
|
|
221
|
+
|
|
222
|
+
Bids below floor_price should be rejected with a clear error.
|
|
223
|
+
|
|
224
|
+
sample_request:
|
|
225
|
+
brand:
|
|
226
|
+
domain: "acmeoutdoor.example"
|
|
227
|
+
account:
|
|
228
|
+
brand:
|
|
229
|
+
domain: "acmeoutdoor.example"
|
|
230
|
+
operator: "pinnacle-agency.example"
|
|
231
|
+
start_time: "2026-04-01T00:00:00Z"
|
|
232
|
+
end_time: "2026-06-30T23:59:59Z"
|
|
233
|
+
packages:
|
|
234
|
+
- product_id: "sports_display_auction"
|
|
235
|
+
budget: 10000
|
|
236
|
+
bid_price: 8.50
|
|
237
|
+
pricing_option_id: "cpm_auction"
|
|
238
|
+
creative_assignments:
|
|
239
|
+
- creative_id: "display_trail_pro_300x250"
|
|
240
|
+
- product_id: "outdoor_video_auction"
|
|
241
|
+
budget: 15000
|
|
242
|
+
bid_price: 22.00
|
|
243
|
+
pricing_option_id: "cpm_auction"
|
|
244
|
+
creative_assignments:
|
|
245
|
+
- creative_id: "video_30s_trail_pro"
|
|
246
|
+
|
|
247
|
+
idempotency_key: "$generate:uuid_v4#sales_non_guaranteed_create_buy_create_media_buy"
|
|
248
|
+
context:
|
|
249
|
+
correlation_id: "sales_non_guaranteed--create_media_buy"
|
|
250
|
+
context_outputs:
|
|
251
|
+
- name: media_buy_id
|
|
252
|
+
path: "media_buy_id"
|
|
253
|
+
- name: first_package_id
|
|
254
|
+
path: "packages[0].package_id"
|
|
255
|
+
- name: second_package_id
|
|
256
|
+
path: "packages[1].package_id"
|
|
257
|
+
validations:
|
|
258
|
+
- check: response_schema
|
|
259
|
+
description: "Response matches create-media-buy-response.json schema"
|
|
260
|
+
|
|
261
|
+
- check: field_present
|
|
262
|
+
path: "context"
|
|
263
|
+
description: "Response echoes back the context object"
|
|
264
|
+
- check: field_value
|
|
265
|
+
path: "context.correlation_id"
|
|
266
|
+
value: "sales_non_guaranteed--create_media_buy"
|
|
267
|
+
description: "Context correlation_id returned unchanged"
|
|
268
|
+
- check: field_present
|
|
269
|
+
path: "packages[0].package_id"
|
|
270
|
+
description: "Seller assigns package_id — must be echoed in update_media_buy"
|
|
271
|
+
- id: monitor_pacing
|
|
272
|
+
title: "Monitor win rates and pacing"
|
|
273
|
+
narrative: |
|
|
274
|
+
The non-guaranteed buy is live and bidding in auctions. The buyer checks
|
|
275
|
+
pacing to understand how competitive their bids are and whether the budget
|
|
276
|
+
is spending at the desired rate.
|
|
277
|
+
|
|
278
|
+
steps:
|
|
279
|
+
- id: get_media_buys_pacing
|
|
280
|
+
title: "Check buy status and pacing"
|
|
281
|
+
narrative: |
|
|
282
|
+
The buyer polls for the media buy status. Your platform returns the active
|
|
283
|
+
buy with pacing data — how much budget has been spent, win rates, and whether
|
|
284
|
+
the buy is on pace to exhaust the budget by the end of the flight.
|
|
285
|
+
task: get_media_buys
|
|
286
|
+
schema_ref: "media-buy/get-media-buys-request.json"
|
|
287
|
+
response_schema_ref: "media-buy/get-media-buys-response.json"
|
|
288
|
+
doc_ref: "/media-buy/task-reference/get_media_buys"
|
|
289
|
+
comply_scenario: media_buy_lifecycle
|
|
290
|
+
stateful: true
|
|
291
|
+
expected: |
|
|
292
|
+
Return the media buy with pacing data:
|
|
293
|
+
- media_buy_id: matches the buy created earlier
|
|
294
|
+
- status: active
|
|
295
|
+
- packages: line items with current spend, win rate, and pacing status
|
|
296
|
+
- valid_actions: update, pause, get_delivery
|
|
297
|
+
|
|
298
|
+
sample_request:
|
|
299
|
+
account:
|
|
300
|
+
brand:
|
|
301
|
+
domain: "acmeoutdoor.example"
|
|
302
|
+
operator: "pinnacle-agency.example"
|
|
303
|
+
media_buy_ids:
|
|
304
|
+
- "$context.media_buy_id"
|
|
305
|
+
|
|
306
|
+
context:
|
|
307
|
+
correlation_id: "sales_non_guaranteed--get_media_buys_pacing"
|
|
308
|
+
validations:
|
|
309
|
+
- check: response_schema
|
|
310
|
+
description: "Response matches get-media-buys-response.json schema"
|
|
311
|
+
- check: field_present
|
|
312
|
+
path: "media_buys[0].status"
|
|
313
|
+
description: "Media buy has a status"
|
|
314
|
+
|
|
315
|
+
- check: field_present
|
|
316
|
+
path: "context"
|
|
317
|
+
description: "Response echoes back the context object"
|
|
318
|
+
- check: field_value
|
|
319
|
+
path: "context.correlation_id"
|
|
320
|
+
value: "sales_non_guaranteed--get_media_buys_pacing"
|
|
321
|
+
description: "Context correlation_id returned unchanged"
|
|
322
|
+
- id: adjust_bids
|
|
323
|
+
title: "Adjust bids and budget"
|
|
324
|
+
narrative: |
|
|
325
|
+
Based on pacing data, the buyer adjusts bids or budgets in-flight. If a package
|
|
326
|
+
is underspending (low win rate), the buyer increases the bid. If a package is
|
|
327
|
+
overspending, the buyer decreases the bid or caps the daily budget.
|
|
328
|
+
|
|
329
|
+
steps:
|
|
330
|
+
- id: update_media_buy
|
|
331
|
+
title: "Update bid prices and budget"
|
|
332
|
+
narrative: |
|
|
333
|
+
The buyer modifies the active media buy — adjusting bid prices, reallocating
|
|
334
|
+
budget between packages, or changing daily spend caps. Your platform applies
|
|
335
|
+
the updates immediately to the live auction participation.
|
|
336
|
+
task: update_media_buy
|
|
337
|
+
schema_ref: "media-buy/update-media-buy-request.json"
|
|
338
|
+
response_schema_ref: "media-buy/update-media-buy-response.json"
|
|
339
|
+
doc_ref: "/media-buy/task-reference/update_media_buy"
|
|
340
|
+
comply_scenario: media_buy_lifecycle
|
|
341
|
+
stateful: true
|
|
342
|
+
expected: |
|
|
343
|
+
Apply the updates and return the modified media buy:
|
|
344
|
+
- media_buy_id: matches the existing buy
|
|
345
|
+
- status: active (still running)
|
|
346
|
+
- packages: updated line items reflecting new bids and budgets
|
|
347
|
+
- Changes take effect immediately for subsequent auctions
|
|
348
|
+
|
|
349
|
+
sample_request:
|
|
350
|
+
account:
|
|
351
|
+
brand:
|
|
352
|
+
domain: "acmeoutdoor.example"
|
|
353
|
+
operator: "pinnacle-agency.example"
|
|
354
|
+
media_buy_id: "$context.media_buy_id"
|
|
355
|
+
packages:
|
|
356
|
+
- package_id: "$context.first_package_id"
|
|
357
|
+
bid_price: 10.00
|
|
358
|
+
budget: 12000
|
|
359
|
+
- package_id: "$context.second_package_id"
|
|
360
|
+
bid_price: 20.00
|
|
361
|
+
budget: 13000
|
|
362
|
+
|
|
363
|
+
idempotency_key: "$generate:uuid_v4#sales_non_guaranteed_adjust_bids_update_media_buy"
|
|
364
|
+
context:
|
|
365
|
+
correlation_id: "sales_non_guaranteed--update_media_buy"
|
|
366
|
+
validations:
|
|
367
|
+
- check: response_schema
|
|
368
|
+
description: "Response matches update-media-buy-response.json schema"
|
|
369
|
+
|
|
370
|
+
- check: field_present
|
|
371
|
+
path: "context"
|
|
372
|
+
description: "Response echoes back the context object"
|
|
373
|
+
- check: field_value
|
|
374
|
+
path: "context.correlation_id"
|
|
375
|
+
value: "sales_non_guaranteed--update_media_buy"
|
|
376
|
+
description: "Context correlation_id returned unchanged"
|
|
377
|
+
- id: delivery
|
|
378
|
+
title: "Delivery and auction metrics"
|
|
379
|
+
narrative: |
|
|
380
|
+
The buyer reviews delivery data including auction-specific metrics: win rates,
|
|
381
|
+
average clearing prices, and bid competitiveness across packages.
|
|
382
|
+
|
|
383
|
+
steps:
|
|
384
|
+
- id: get_delivery
|
|
385
|
+
title: "Check delivery with auction metrics"
|
|
386
|
+
narrative: |
|
|
387
|
+
The buyer requests delivery data for the active non-guaranteed media buy.
|
|
388
|
+
Your platform returns standard delivery metrics plus auction-specific data:
|
|
389
|
+
win rates, average clearing prices, bid-to-win ratios, and budget pacing.
|
|
390
|
+
task: get_media_buy_delivery
|
|
391
|
+
schema_ref: "media-buy/get-media-buy-delivery-request.json"
|
|
392
|
+
response_schema_ref: "media-buy/get-media-buy-delivery-response.json"
|
|
393
|
+
doc_ref: "/media-buy/task-reference/get_media_buy_delivery"
|
|
394
|
+
comply_scenario: reporting_flow
|
|
395
|
+
stateful: true
|
|
396
|
+
expected: |
|
|
397
|
+
Return delivery metrics for the non-guaranteed media buy:
|
|
398
|
+
- Per-package delivery: impressions, clicks, spend
|
|
399
|
+
- Win rate: percentage of auctions won per package
|
|
400
|
+
- Average clearing price: what the buyer actually paid vs. bid price
|
|
401
|
+
- Pacing: on track, ahead, behind relative to budget and flight dates
|
|
402
|
+
- Budget utilization: spent vs. committed
|
|
403
|
+
|
|
404
|
+
sample_request:
|
|
405
|
+
account:
|
|
406
|
+
brand:
|
|
407
|
+
domain: "acmeoutdoor.example"
|
|
408
|
+
operator: "pinnacle-agency.example"
|
|
409
|
+
media_buy_ids:
|
|
410
|
+
- "$context.media_buy_id"
|
|
411
|
+
include_package_daily_breakdown: true
|
|
412
|
+
|
|
413
|
+
context:
|
|
414
|
+
correlation_id: "sales_non_guaranteed--get_delivery"
|
|
415
|
+
validations:
|
|
416
|
+
- check: response_schema
|
|
417
|
+
description: "Response matches get-media-buy-delivery-response.json schema"
|
|
418
|
+
- check: field_present
|
|
419
|
+
path: "media_buy_deliveries"
|
|
420
|
+
description: "Response contains media buy delivery data"
|
|
421
|
+
|
|
422
|
+
- check: field_present
|
|
423
|
+
path: "context"
|
|
424
|
+
description: "Response echoes back the context object"
|
|
425
|
+
- check: field_value
|
|
426
|
+
path: "context.correlation_id"
|
|
427
|
+
value: "sales_non_guaranteed--get_delivery"
|
|
428
|
+
description: "Context correlation_id returned unchanged"
|