@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
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
id: creative_lifecycle
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
title: "Creative lifecycle"
|
|
4
|
+
category: creative_lifecycle
|
|
5
|
+
summary: "Full creative lifecycle on a stateful platform: sync multiple creatives, list with filtering, build and preview across formats, observe status transitions."
|
|
6
|
+
track: creative
|
|
7
|
+
required_tools:
|
|
8
|
+
- list_creative_formats
|
|
9
|
+
|
|
10
|
+
narrative: |
|
|
11
|
+
You run a creative platform with a persistent library — an ad server, creative management
|
|
12
|
+
platform, or publisher that accepts and stores creative assets. A buyer agent pushes
|
|
13
|
+
multiple creatives in different formats, queries the library, builds serving tags, previews
|
|
14
|
+
renderings, and monitors creative status as assets move through your review pipeline.
|
|
15
|
+
|
|
16
|
+
This storyboard covers the complete creative lifecycle from the buyer's perspective:
|
|
17
|
+
uploading assets, browsing the library, building deliverables across formats, and
|
|
18
|
+
observing status transitions as creatives move from pending_review through to accepted.
|
|
19
|
+
|
|
20
|
+
The individual creative storyboards (template, ad server, sales agent) cover specific
|
|
21
|
+
interaction models. This storyboard tests the full lifecycle across multiple creatives
|
|
22
|
+
and formats on a single platform.
|
|
23
|
+
|
|
24
|
+
agent:
|
|
25
|
+
interaction_model: stateful_preloaded
|
|
26
|
+
capabilities:
|
|
27
|
+
- has_creative_library
|
|
28
|
+
- supports_transformation
|
|
29
|
+
examples:
|
|
30
|
+
- "Innovid"
|
|
31
|
+
- "Flashtalking"
|
|
32
|
+
- "CM360"
|
|
33
|
+
- "Creative management platforms"
|
|
34
|
+
|
|
35
|
+
caller:
|
|
36
|
+
role: buyer_agent
|
|
37
|
+
example: "Pinnacle Agency (buyer)"
|
|
38
|
+
|
|
39
|
+
prerequisites:
|
|
40
|
+
description: |
|
|
41
|
+
The caller needs creative assets in multiple formats (display, video, native) and
|
|
42
|
+
a brand identity. The test kit provides sample assets at standard ad dimensions.
|
|
43
|
+
test_kit: "test-kits/acme-outdoor.yaml"
|
|
44
|
+
|
|
45
|
+
phases:
|
|
46
|
+
- id: capability_discovery
|
|
47
|
+
title: "Capability discovery"
|
|
48
|
+
narrative: |
|
|
49
|
+
The buyer calls get_adcp_capabilities to confirm the agent supports creative operations before browsing or building creatives.
|
|
50
|
+
|
|
51
|
+
steps:
|
|
52
|
+
- id: get_capabilities
|
|
53
|
+
title: "Check agent capabilities"
|
|
54
|
+
narrative: |
|
|
55
|
+
Verify that the agent declares the expected protocol support before
|
|
56
|
+
proceeding with domain-specific operations.
|
|
57
|
+
task: get_adcp_capabilities
|
|
58
|
+
schema_ref: "protocol/get-adcp-capabilities-request.json"
|
|
59
|
+
response_schema_ref: "protocol/get-adcp-capabilities-response.json"
|
|
60
|
+
doc_ref: "/protocol/get_adcp_capabilities"
|
|
61
|
+
comply_scenario: capability_discovery
|
|
62
|
+
stateful: false
|
|
63
|
+
expected: |
|
|
64
|
+
Return capabilities declaring creative in supported_protocols, confirming the agent handles creative operations.
|
|
65
|
+
sample_request:
|
|
66
|
+
context:
|
|
67
|
+
correlation_id: "creative_lifecycle--get_capabilities"
|
|
68
|
+
validations:
|
|
69
|
+
- check: response_schema
|
|
70
|
+
description: "Response matches get-adcp-capabilities-response.json schema"
|
|
71
|
+
- check: field_present
|
|
72
|
+
path: "supported_protocols"
|
|
73
|
+
description: "Agent declares supported protocols"
|
|
74
|
+
|
|
75
|
+
- check: field_present
|
|
76
|
+
path: "context"
|
|
77
|
+
description: "Response echoes back the context object"
|
|
78
|
+
- check: field_value
|
|
79
|
+
path: "context.correlation_id"
|
|
80
|
+
value: "creative_lifecycle--get_capabilities"
|
|
81
|
+
description: "Context correlation_id returned unchanged"
|
|
82
|
+
- id: discover_formats
|
|
83
|
+
title: "Discover accepted formats"
|
|
84
|
+
narrative: |
|
|
85
|
+
Before pushing any creatives, the buyer discovers what formats your platform accepts.
|
|
86
|
+
This determines which assets to prepare and what dimensions and specs to target.
|
|
87
|
+
|
|
88
|
+
steps:
|
|
89
|
+
- id: list_formats
|
|
90
|
+
title: "List creative formats"
|
|
91
|
+
narrative: |
|
|
92
|
+
The buyer calls list_creative_formats to discover what your platform accepts.
|
|
93
|
+
The response defines format specs: dimensions, asset requirements, mime types,
|
|
94
|
+
and any platform-specific constraints.
|
|
95
|
+
task: list_creative_formats
|
|
96
|
+
schema_ref: "creative/list-creative-formats-request.json"
|
|
97
|
+
response_schema_ref: "creative/list-creative-formats-response.json"
|
|
98
|
+
doc_ref: "/creative/task-reference/list_creative_formats"
|
|
99
|
+
comply_scenario: creative_lifecycle
|
|
100
|
+
stateful: false
|
|
101
|
+
expected: |
|
|
102
|
+
Return all creative formats your platform accepts:
|
|
103
|
+
- format_id with your agent_url and unique id
|
|
104
|
+
- Asset requirements (dimensions, file sizes, mime types)
|
|
105
|
+
- Render dimensions
|
|
106
|
+
- At least two formats (e.g., display and video)
|
|
107
|
+
|
|
108
|
+
sample_request:
|
|
109
|
+
context:
|
|
110
|
+
correlation_id: "creative_lifecycle--list_formats"
|
|
111
|
+
|
|
112
|
+
validations:
|
|
113
|
+
- check: response_schema
|
|
114
|
+
description: "Response matches list-creative-formats-response.json schema"
|
|
115
|
+
- check: field_present
|
|
116
|
+
path: "formats"
|
|
117
|
+
description: "Response contains formats array"
|
|
118
|
+
|
|
119
|
+
- check: field_present
|
|
120
|
+
path: "context"
|
|
121
|
+
description: "Response echoes back the context object"
|
|
122
|
+
- check: field_value
|
|
123
|
+
path: "context.correlation_id"
|
|
124
|
+
value: "creative_lifecycle--list_formats"
|
|
125
|
+
description: "Context correlation_id returned unchanged"
|
|
126
|
+
- check: field_present
|
|
127
|
+
path: "formats[0].format_id.agent_url"
|
|
128
|
+
description: "Format IDs include agent_url"
|
|
129
|
+
- check: field_present
|
|
130
|
+
path: "formats[0].format_id.id"
|
|
131
|
+
description: "Format IDs include id — must match those in get_products"
|
|
132
|
+
- id: sync_multiple
|
|
133
|
+
title: "Sync multiple creatives"
|
|
134
|
+
narrative: |
|
|
135
|
+
The buyer pushes three creatives in different formats to your platform: a display
|
|
136
|
+
banner, a video spot, and a native card. Your platform validates each creative
|
|
137
|
+
against its format specs and returns per-creative status.
|
|
138
|
+
|
|
139
|
+
steps:
|
|
140
|
+
- id: sync_creatives
|
|
141
|
+
title: "Push three creatives in different formats"
|
|
142
|
+
narrative: |
|
|
143
|
+
The buyer syncs three creatives simultaneously: a 300x250 display banner, a 30s
|
|
144
|
+
video spot, and a native content card. Your platform validates each against its
|
|
145
|
+
format specs and returns per-creative action and status.
|
|
146
|
+
task: sync_creatives
|
|
147
|
+
schema_ref: "creative/sync-creatives-request.json"
|
|
148
|
+
response_schema_ref: "creative/sync-creatives-response.json"
|
|
149
|
+
doc_ref: "/creative/task-reference/sync_creatives"
|
|
150
|
+
comply_scenario: creative_lifecycle
|
|
151
|
+
stateful: true
|
|
152
|
+
expected: |
|
|
153
|
+
Accept and validate all three creatives:
|
|
154
|
+
- Per-creative action: created
|
|
155
|
+
- Per-creative status: accepted or pending_review
|
|
156
|
+
- Validation results for each creative
|
|
157
|
+
- Platform-assigned IDs if applicable
|
|
158
|
+
|
|
159
|
+
sample_request:
|
|
160
|
+
account:
|
|
161
|
+
brand:
|
|
162
|
+
domain: "acmeoutdoor.example"
|
|
163
|
+
operator: "pinnacle-agency.example"
|
|
164
|
+
creatives:
|
|
165
|
+
- creative_id: "display_trail_pro_300x250"
|
|
166
|
+
name: "Trail Pro 3000 - Display 300x250"
|
|
167
|
+
format_id:
|
|
168
|
+
agent_url: "https://your-platform.example.com"
|
|
169
|
+
id: "display_300x250"
|
|
170
|
+
assets:
|
|
171
|
+
image:
|
|
172
|
+
asset_type: "image"
|
|
173
|
+
url: "https://cdn.pinnacle-agency.example/trail-pro-300x250.png"
|
|
174
|
+
width: 300
|
|
175
|
+
height: 250
|
|
176
|
+
mime_type: "image/png"
|
|
177
|
+
- creative_id: "video_30s_trail_pro"
|
|
178
|
+
name: "Trail Pro 3000 - 30s Video"
|
|
179
|
+
format_id:
|
|
180
|
+
agent_url: "https://your-platform.example.com"
|
|
181
|
+
id: "video_30s"
|
|
182
|
+
assets:
|
|
183
|
+
video:
|
|
184
|
+
asset_type: "video"
|
|
185
|
+
url: "https://cdn.pinnacle-agency.example/trail-pro-30s.mp4"
|
|
186
|
+
width: 1920
|
|
187
|
+
height: 1080
|
|
188
|
+
duration_ms: 30000
|
|
189
|
+
mime_type: "video/mp4"
|
|
190
|
+
- creative_id: "native_trail_pro"
|
|
191
|
+
name: "Trail Pro 3000 - Native Card"
|
|
192
|
+
format_id:
|
|
193
|
+
agent_url: "https://your-platform.example.com"
|
|
194
|
+
id: "native_content"
|
|
195
|
+
assets:
|
|
196
|
+
image:
|
|
197
|
+
asset_type: "image"
|
|
198
|
+
url: "https://cdn.pinnacle-agency.example/trail-pro-native.png"
|
|
199
|
+
width: 1200
|
|
200
|
+
height: 628
|
|
201
|
+
mime_type: "image/png"
|
|
202
|
+
headline:
|
|
203
|
+
asset_type: "text"
|
|
204
|
+
content: "Trail Pro 3000 — Built for the Summit"
|
|
205
|
+
|
|
206
|
+
idempotency_key: "$generate:uuid_v4#creative_lifecycle_sync_multiple_sync_creatives"
|
|
207
|
+
context:
|
|
208
|
+
correlation_id: "creative_lifecycle--sync_creatives"
|
|
209
|
+
validations:
|
|
210
|
+
- check: response_schema
|
|
211
|
+
description: "Response matches sync-creatives-response.json schema"
|
|
212
|
+
- check: field_present
|
|
213
|
+
path: "creatives"
|
|
214
|
+
description: "Response contains per-creative results"
|
|
215
|
+
|
|
216
|
+
- check: field_present
|
|
217
|
+
path: "context"
|
|
218
|
+
description: "Response echoes back the context object"
|
|
219
|
+
- check: field_value
|
|
220
|
+
path: "context.correlation_id"
|
|
221
|
+
value: "creative_lifecycle--sync_creatives"
|
|
222
|
+
description: "Context correlation_id returned unchanged"
|
|
223
|
+
- id: list_and_filter
|
|
224
|
+
title: "List creatives with filtering"
|
|
225
|
+
narrative: |
|
|
226
|
+
The buyer queries the creative library to see their synced creatives. First a broad
|
|
227
|
+
list, then filtered by format. This verifies the library correctly stores and indexes
|
|
228
|
+
the pushed creatives.
|
|
229
|
+
|
|
230
|
+
steps:
|
|
231
|
+
- id: list_all
|
|
232
|
+
title: "List all creatives in library"
|
|
233
|
+
narrative: |
|
|
234
|
+
The buyer calls list_creatives with no filters to see all creatives in the
|
|
235
|
+
library for their account. The response includes the three creatives synced
|
|
236
|
+
in the previous phase.
|
|
237
|
+
task: list_creatives
|
|
238
|
+
schema_ref: "creative/list-creatives-request.json"
|
|
239
|
+
response_schema_ref: "creative/list-creatives-response.json"
|
|
240
|
+
doc_ref: "/creative/task-reference/list_creatives"
|
|
241
|
+
comply_scenario: creative_lifecycle
|
|
242
|
+
stateful: true
|
|
243
|
+
expected: |
|
|
244
|
+
Return creatives in the library:
|
|
245
|
+
- creatives array containing the synced items
|
|
246
|
+
- Each creative includes: creative_id, name, format_id, status
|
|
247
|
+
- At least three creatives from the sync phase
|
|
248
|
+
|
|
249
|
+
sample_request:
|
|
250
|
+
account:
|
|
251
|
+
brand:
|
|
252
|
+
domain: "acmeoutdoor.example"
|
|
253
|
+
operator: "pinnacle-agency.example"
|
|
254
|
+
|
|
255
|
+
context:
|
|
256
|
+
correlation_id: "creative_lifecycle--list_all"
|
|
257
|
+
validations:
|
|
258
|
+
- check: response_schema
|
|
259
|
+
description: "Response matches list-creatives-response.json schema"
|
|
260
|
+
- check: field_present
|
|
261
|
+
path: "creatives"
|
|
262
|
+
description: "Response contains creatives array"
|
|
263
|
+
|
|
264
|
+
- check: field_present
|
|
265
|
+
path: "context"
|
|
266
|
+
description: "Response echoes back the context object"
|
|
267
|
+
- check: field_value
|
|
268
|
+
path: "context.correlation_id"
|
|
269
|
+
value: "creative_lifecycle--list_all"
|
|
270
|
+
description: "Context correlation_id returned unchanged"
|
|
271
|
+
- id: list_filtered
|
|
272
|
+
title: "List creatives filtered by format"
|
|
273
|
+
narrative: |
|
|
274
|
+
The buyer lists creatives filtered to a specific format (display only). The
|
|
275
|
+
response should only include creatives matching that format.
|
|
276
|
+
task: list_creatives
|
|
277
|
+
schema_ref: "creative/list-creatives-request.json"
|
|
278
|
+
response_schema_ref: "creative/list-creatives-response.json"
|
|
279
|
+
doc_ref: "/creative/task-reference/list_creatives"
|
|
280
|
+
comply_scenario: creative_lifecycle
|
|
281
|
+
stateful: true
|
|
282
|
+
expected: |
|
|
283
|
+
Return only creatives matching the format filter:
|
|
284
|
+
- creatives array filtered to display format
|
|
285
|
+
- Should include display_trail_pro_300x250 but not video or native
|
|
286
|
+
|
|
287
|
+
sample_request:
|
|
288
|
+
account:
|
|
289
|
+
brand:
|
|
290
|
+
domain: "acmeoutdoor.example"
|
|
291
|
+
operator: "pinnacle-agency.example"
|
|
292
|
+
filters:
|
|
293
|
+
format_ids:
|
|
294
|
+
- agent_url: "https://your-platform.example.com"
|
|
295
|
+
id: "display_300x250"
|
|
296
|
+
|
|
297
|
+
context:
|
|
298
|
+
correlation_id: "creative_lifecycle--list_filtered"
|
|
299
|
+
validations:
|
|
300
|
+
- check: response_schema
|
|
301
|
+
description: "Response matches list-creatives-response.json schema"
|
|
302
|
+
- check: field_present
|
|
303
|
+
path: "creatives"
|
|
304
|
+
description: "Response contains filtered creatives"
|
|
305
|
+
|
|
306
|
+
- check: field_present
|
|
307
|
+
path: "context"
|
|
308
|
+
description: "Response echoes back the context object"
|
|
309
|
+
- check: field_value
|
|
310
|
+
path: "context.correlation_id"
|
|
311
|
+
value: "creative_lifecycle--list_filtered"
|
|
312
|
+
description: "Context correlation_id returned unchanged"
|
|
313
|
+
- id: build_and_preview
|
|
314
|
+
title: "Build and preview across formats"
|
|
315
|
+
narrative: |
|
|
316
|
+
The buyer builds serving tags and previews renderings for the synced creatives.
|
|
317
|
+
This tests multi-format output: a display tag, a VAST tag for video, and a
|
|
318
|
+
native rendering preview.
|
|
319
|
+
|
|
320
|
+
steps:
|
|
321
|
+
- id: preview_display
|
|
322
|
+
title: "Preview the display creative"
|
|
323
|
+
narrative: |
|
|
324
|
+
The buyer calls preview_creative for the display banner to see how it renders
|
|
325
|
+
in the platform's environment before going live.
|
|
326
|
+
task: preview_creative
|
|
327
|
+
schema_ref: "creative/preview-creative-request.json"
|
|
328
|
+
response_schema_ref: "creative/preview-creative-response.json"
|
|
329
|
+
doc_ref: "/creative/task-reference/preview_creative"
|
|
330
|
+
comply_scenario: creative_flow
|
|
331
|
+
stateful: true
|
|
332
|
+
expected: |
|
|
333
|
+
Return a preview of the display creative:
|
|
334
|
+
- preview_url: rendered preview the buyer can inspect
|
|
335
|
+
- render_dimensions: matches the 300x250 format
|
|
336
|
+
- status: preview available
|
|
337
|
+
|
|
338
|
+
sample_request:
|
|
339
|
+
account:
|
|
340
|
+
brand:
|
|
341
|
+
domain: "acmeoutdoor.example"
|
|
342
|
+
operator: "pinnacle-agency.example"
|
|
343
|
+
request_type: "single"
|
|
344
|
+
creative_manifest:
|
|
345
|
+
creative_id: "display_trail_pro_300x250"
|
|
346
|
+
format_id:
|
|
347
|
+
agent_url: "https://your-platform.example.com"
|
|
348
|
+
id: "display_300x250"
|
|
349
|
+
assets:
|
|
350
|
+
image:
|
|
351
|
+
asset_type: "image"
|
|
352
|
+
url: "https://test-assets.adcontextprotocol.org/acme-outdoor/banner_300x250.jpg"
|
|
353
|
+
width: 300
|
|
354
|
+
height: 250
|
|
355
|
+
click_url:
|
|
356
|
+
asset_type: "url"
|
|
357
|
+
url: "https://acmeoutdoor.example/trail-pro"
|
|
358
|
+
|
|
359
|
+
context:
|
|
360
|
+
correlation_id: "creative_lifecycle--preview_display"
|
|
361
|
+
validations:
|
|
362
|
+
- check: response_schema
|
|
363
|
+
description: "Response matches preview-creative-response.json schema"
|
|
364
|
+
|
|
365
|
+
- check: field_present
|
|
366
|
+
path: "context"
|
|
367
|
+
description: "Response echoes back the context object"
|
|
368
|
+
- check: field_value
|
|
369
|
+
path: "context.correlation_id"
|
|
370
|
+
value: "creative_lifecycle--preview_display"
|
|
371
|
+
description: "Context correlation_id returned unchanged"
|
|
372
|
+
- id: build_video_tag
|
|
373
|
+
title: "Build a VAST tag for the video creative"
|
|
374
|
+
narrative: |
|
|
375
|
+
The buyer builds a serving tag for the video creative. The platform produces
|
|
376
|
+
a VAST-compatible tag that the buyer can traffic to ad servers.
|
|
377
|
+
task: build_creative
|
|
378
|
+
schema_ref: "creative/build-creative-request.json"
|
|
379
|
+
response_schema_ref: "creative/build-creative-response.json"
|
|
380
|
+
doc_ref: "/creative/task-reference/build_creative"
|
|
381
|
+
comply_scenario: creative_flow
|
|
382
|
+
stateful: true
|
|
383
|
+
expected: |
|
|
384
|
+
Return a built serving tag for the video creative:
|
|
385
|
+
- tag: VAST-compatible serving tag or URL
|
|
386
|
+
- format: matches the video format
|
|
387
|
+
- creative_id: matches the requested creative
|
|
388
|
+
|
|
389
|
+
sample_request:
|
|
390
|
+
account:
|
|
391
|
+
brand:
|
|
392
|
+
domain: "acmeoutdoor.example"
|
|
393
|
+
operator: "pinnacle-agency.example"
|
|
394
|
+
creative_id: "video_30s_trail_pro"
|
|
395
|
+
target_format_id:
|
|
396
|
+
agent_url: "https://your-platform.example.com"
|
|
397
|
+
id: "vast_30s"
|
|
398
|
+
idempotency_key: "$generate:uuid_v4#creative_lifecycle_build_video_tag"
|
|
399
|
+
|
|
400
|
+
context:
|
|
401
|
+
correlation_id: "creative_lifecycle--build_video_tag"
|
|
402
|
+
validations:
|
|
403
|
+
- check: response_schema
|
|
404
|
+
description: "Response matches build-creative-response.json schema"
|
|
405
|
+
|
|
406
|
+
- check: field_present
|
|
407
|
+
path: "context"
|
|
408
|
+
description: "Response echoes back the context object"
|
|
409
|
+
- check: field_value
|
|
410
|
+
path: "context.correlation_id"
|
|
411
|
+
value: "creative_lifecycle--build_video_tag"
|
|
412
|
+
description: "Context correlation_id returned unchanged"
|