@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.
Files changed (233) hide show
  1. package/bin/adcp.js +285 -5
  2. package/compliance/cache/3.0.6.previous/domains/brand/index.yaml +163 -0
  3. package/compliance/cache/3.0.6.previous/domains/creative/index.yaml +412 -0
  4. package/compliance/cache/3.0.6.previous/domains/governance/index.yaml +683 -0
  5. package/compliance/cache/3.0.6.previous/domains/media-buy/creative-reception.yaml +247 -0
  6. package/compliance/cache/3.0.6.previous/domains/media-buy/index.yaml +769 -0
  7. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/create_media_buy_async.yaml +232 -0
  8. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
  9. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/delivery_reporting.yaml +205 -0
  10. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/governance_approved.yaml +211 -0
  11. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/governance_conditions.yaml +196 -0
  12. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/governance_denied.yaml +192 -0
  13. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/governance_denied_recovery.yaml +244 -0
  14. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/invalid_transitions.yaml +284 -0
  15. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
  16. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/inventory_list_targeting.yaml +271 -0
  17. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/measurement_terms_rejected.yaml +195 -0
  18. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
  19. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/proposal_finalize.yaml +243 -0
  20. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/refine_products.yaml +148 -0
  21. package/compliance/cache/3.0.6.previous/domains/media-buy/state-machine.yaml +442 -0
  22. package/compliance/cache/3.0.6.previous/domains/signals/index.yaml +266 -0
  23. package/compliance/cache/3.0.6.previous/domains/sponsored-intelligence/index.yaml +256 -0
  24. package/compliance/cache/3.0.6.previous/index.json +324 -0
  25. package/compliance/cache/3.0.6.previous/protocols/brand/index.yaml +163 -0
  26. package/compliance/cache/3.0.6.previous/protocols/creative/index.yaml +412 -0
  27. package/compliance/cache/3.0.6.previous/protocols/governance/index.yaml +683 -0
  28. package/compliance/cache/3.0.6.previous/protocols/media-buy/creative-reception.yaml +247 -0
  29. package/compliance/cache/3.0.6.previous/protocols/media-buy/index.yaml +769 -0
  30. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/create_media_buy_async.yaml +232 -0
  31. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
  32. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/delivery_reporting.yaml +205 -0
  33. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/governance_approved.yaml +211 -0
  34. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/governance_conditions.yaml +196 -0
  35. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/governance_denied.yaml +192 -0
  36. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/governance_denied_recovery.yaml +244 -0
  37. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/invalid_transitions.yaml +284 -0
  38. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
  39. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/inventory_list_targeting.yaml +271 -0
  40. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +195 -0
  41. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
  42. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/proposal_finalize.yaml +243 -0
  43. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/refine_products.yaml +148 -0
  44. package/compliance/cache/3.0.6.previous/protocols/media-buy/state-machine.yaml +442 -0
  45. package/compliance/cache/3.0.6.previous/protocols/signals/index.yaml +266 -0
  46. package/compliance/cache/3.0.6.previous/protocols/sponsored-intelligence/index.yaml +256 -0
  47. package/compliance/cache/3.0.6.previous/specialisms/audience-sync/index.yaml +280 -0
  48. package/compliance/cache/3.0.6.previous/specialisms/brand-rights/index.yaml +350 -0
  49. package/compliance/cache/3.0.6.previous/specialisms/brand-rights/scenarios/governance_denied.yaml +204 -0
  50. package/compliance/cache/3.0.6.previous/specialisms/collection-lists/index.yaml +359 -0
  51. package/compliance/cache/3.0.6.previous/specialisms/content-standards/index.yaml +572 -0
  52. package/compliance/cache/3.0.6.previous/specialisms/creative-ad-server/index.yaml +383 -0
  53. package/compliance/cache/3.0.6.previous/specialisms/creative-generative/generative-seller.yaml +758 -0
  54. package/compliance/cache/3.0.6.previous/specialisms/creative-generative/index.yaml +746 -0
  55. package/compliance/cache/3.0.6.previous/specialisms/creative-template/index.yaml +413 -0
  56. package/compliance/cache/3.0.6.previous/specialisms/governance-aware-seller/index.yaml +136 -0
  57. package/compliance/cache/3.0.6.previous/specialisms/governance-delivery-monitor/index.yaml +441 -0
  58. package/compliance/cache/3.0.6.previous/specialisms/governance-spend-authority/denied.yaml +221 -0
  59. package/compliance/cache/3.0.6.previous/specialisms/governance-spend-authority/index.yaml +330 -0
  60. package/compliance/cache/3.0.6.previous/specialisms/property-lists/index.yaml +482 -0
  61. package/compliance/cache/3.0.6.previous/specialisms/sales-broadcast-tv/index.yaml +689 -0
  62. package/compliance/cache/3.0.6.previous/specialisms/sales-catalog-driven/index.yaml +779 -0
  63. package/compliance/cache/3.0.6.previous/specialisms/sales-guaranteed/index.yaml +504 -0
  64. package/compliance/cache/3.0.6.previous/specialisms/sales-non-guaranteed/index.yaml +428 -0
  65. package/compliance/cache/3.0.6.previous/specialisms/sales-proposal-mode/index.yaml +520 -0
  66. package/compliance/cache/3.0.6.previous/specialisms/sales-social/index.yaml +584 -0
  67. package/compliance/cache/3.0.6.previous/specialisms/signal-marketplace/index.yaml +415 -0
  68. package/compliance/cache/3.0.6.previous/specialisms/signal-marketplace/scenarios/governance_denied.yaml +207 -0
  69. package/compliance/cache/3.0.6.previous/specialisms/signal-owned/index.yaml +316 -0
  70. package/compliance/cache/3.0.6.previous/test-kits/acme-outdoor.yaml +210 -0
  71. package/compliance/cache/3.0.6.previous/test-kits/bistro-oranje.yaml +126 -0
  72. package/compliance/cache/3.0.6.previous/test-kits/nova-motors.yaml +262 -0
  73. package/compliance/cache/3.0.6.previous/test-kits/osei-natural.yaml +126 -0
  74. package/compliance/cache/3.0.6.previous/test-kits/signed-requests-runner.yaml +155 -0
  75. package/compliance/cache/3.0.6.previous/test-kits/substitution-observer-runner.yaml +690 -0
  76. package/compliance/cache/3.0.6.previous/test-kits/summit-foods.yaml +125 -0
  77. package/compliance/cache/3.0.6.previous/test-kits/webhook-receiver-runner.yaml +265 -0
  78. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/001-minimal-plan.json +43 -0
  79. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/002-full-plan.json +217 -0
  80. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/003-bookkeeping-stripped.json +60 -0
  81. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/004a-human-review-omitted.json +43 -0
  82. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/004b-human-review-explicit-null.json +49 -0
  83. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/005a-policy-categories-order-1.json +53 -0
  84. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/005b-policy-categories-order-2.json +57 -0
  85. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/006a-ext-trace-v1.json +49 -0
  86. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/006b-ext-trace-v2.json +53 -0
  87. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/007-unicode-objectives.json +43 -0
  88. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/008-numeric-canonicalization.json +65 -0
  89. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/README.md +219 -0
  90. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/canonicalization.json +241 -0
  91. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/keys.json +60 -0
  92. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/001-no-signature-header.json +24 -0
  93. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/002-wrong-tag.json +26 -0
  94. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/003-expired-signature.json +26 -0
  95. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/004-window-too-long.json +26 -0
  96. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/005-alg-not-allowed.json +26 -0
  97. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/006-missing-covered-component.json +26 -0
  98. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/007-missing-content-digest.json +26 -0
  99. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/008-unknown-keyid.json +26 -0
  100. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +27 -0
  101. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/010-content-digest-mismatch.json +33 -0
  102. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/011-malformed-header.json +27 -0
  103. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/012-missing-expires-param.json +26 -0
  104. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/013-expires-le-created.json +27 -0
  105. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/014-missing-nonce-param.json +27 -0
  106. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/015-signature-invalid.json +28 -0
  107. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/016-replayed-nonce.json +35 -0
  108. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/017-key-revoked.json +38 -0
  109. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +28 -0
  110. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/019-signature-without-signature-input.json +26 -0
  111. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/020-rate-abuse.json +34 -0
  112. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +31 -0
  113. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/022-multi-valued-content-type.json +31 -0
  114. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +32 -0
  115. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/024-unquoted-string-param.json +31 -0
  116. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +43 -0
  117. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/026-non-ascii-host.json +31 -0
  118. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +25 -0
  119. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/001-basic-post.json +30 -0
  120. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/002-post-with-content-digest.json +31 -0
  121. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/003-es256-post.json +30 -0
  122. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/004-multiple-signature-labels.json +26 -0
  123. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/005-default-port-stripped.json +30 -0
  124. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/006-dot-segment-path.json +30 -0
  125. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/007-query-byte-preserved.json +30 -0
  126. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/008-percent-encoded-path.json +30 -0
  127. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +30 -0
  128. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +30 -0
  129. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/011-ipv6-authority.json +30 -0
  130. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +30 -0
  131. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/README.md +211 -0
  132. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/keys.json +61 -0
  133. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/001-wrong-tag.json +26 -0
  134. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/002-expired-signature.json +26 -0
  135. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/003-window-too-long.json +26 -0
  136. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +26 -0
  137. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/005-missing-authority-component.json +26 -0
  138. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/006-missing-content-digest.json +25 -0
  139. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/007-unknown-keyid.json +26 -0
  140. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +26 -0
  141. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +26 -0
  142. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +26 -0
  143. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/011-signature-without-input.json +25 -0
  144. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/012-missing-expires-param.json +26 -0
  145. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/013-expires-le-created.json +26 -0
  146. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +26 -0
  147. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/015-signature-invalid.json +26 -0
  148. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/016-replayed-nonce.json +37 -0
  149. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/017-key-revoked.json +32 -0
  150. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/018-rate-abuse.json +33 -0
  151. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/019-revocation-stale.json +32 -0
  152. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +41 -0
  153. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +26 -0
  154. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/001-basic-post.json +24 -0
  155. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/002-es256-post.json +24 -0
  156. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +24 -0
  157. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/004-default-port-stripped.json +24 -0
  158. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +24 -0
  159. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +24 -0
  160. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +25 -0
  161. package/compliance/cache/3.0.6.previous/universal/capability-discovery.yaml +125 -0
  162. package/compliance/cache/3.0.6.previous/universal/collection-lists-pagination-integrity.yaml +306 -0
  163. package/compliance/cache/3.0.6.previous/universal/content-standards-pagination-integrity.yaml +326 -0
  164. package/compliance/cache/3.0.6.previous/universal/deterministic-testing.yaml +1343 -0
  165. package/compliance/cache/3.0.6.previous/universal/error-compliance.yaml +474 -0
  166. package/compliance/cache/3.0.6.previous/universal/fictional-entities.yaml +307 -0
  167. package/compliance/cache/3.0.6.previous/universal/get-media-buys-pagination-integrity.yaml +160 -0
  168. package/compliance/cache/3.0.6.previous/universal/get-signals-pagination-integrity.yaml +211 -0
  169. package/compliance/cache/3.0.6.previous/universal/idempotency.yaml +593 -0
  170. package/compliance/cache/3.0.6.previous/universal/pagination-integrity-creative-formats.yaml +258 -0
  171. package/compliance/cache/3.0.6.previous/universal/pagination-integrity-list-accounts.yaml +262 -0
  172. package/compliance/cache/3.0.6.previous/universal/pagination-integrity.yaml +263 -0
  173. package/compliance/cache/3.0.6.previous/universal/property-lists-pagination-integrity.yaml +307 -0
  174. package/compliance/cache/3.0.6.previous/universal/runner-output-contract.yaml +358 -0
  175. package/compliance/cache/3.0.6.previous/universal/schema-validation.yaml +526 -0
  176. package/compliance/cache/3.0.6.previous/universal/security.yaml +431 -0
  177. package/compliance/cache/3.0.6.previous/universal/signed-requests.yaml +205 -0
  178. package/compliance/cache/3.0.6.previous/universal/storyboard-schema.yaml +1176 -0
  179. package/compliance/cache/3.0.6.previous/universal/v3-envelope-integrity.yaml +106 -0
  180. package/compliance/cache/3.0.6.previous/universal/webhook-emission.yaml +337 -0
  181. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  182. package/dist/lib/server/create-adcp-server.d.ts +33 -0
  183. package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
  184. package/dist/lib/server/create-adcp-server.js +127 -1
  185. package/dist/lib/server/create-adcp-server.js.map +1 -1
  186. package/dist/lib/server/credential-policy.d.ts +221 -0
  187. package/dist/lib/server/credential-policy.d.ts.map +1 -0
  188. package/dist/lib/server/credential-policy.js +260 -0
  189. package/dist/lib/server/credential-policy.js.map +1 -0
  190. package/dist/lib/server/dynamic-registry.d.ts +219 -0
  191. package/dist/lib/server/dynamic-registry.d.ts.map +1 -0
  192. package/dist/lib/server/dynamic-registry.js +245 -0
  193. package/dist/lib/server/dynamic-registry.js.map +1 -0
  194. package/dist/lib/server/index.d.ts +8 -0
  195. package/dist/lib/server/index.d.ts.map +1 -1
  196. package/dist/lib/server/index.js +15 -4
  197. package/dist/lib/server/index.js.map +1 -1
  198. package/dist/lib/server/operational-platform.d.ts +239 -0
  199. package/dist/lib/server/operational-platform.d.ts.map +1 -0
  200. package/dist/lib/server/operational-platform.js +94 -0
  201. package/dist/lib/server/operational-platform.js.map +1 -0
  202. package/dist/lib/server/wire-safe.d.ts +211 -0
  203. package/dist/lib/server/wire-safe.d.ts.map +1 -0
  204. package/dist/lib/server/wire-safe.js +231 -0
  205. package/dist/lib/server/wire-safe.js.map +1 -0
  206. package/dist/lib/server/wire-spec-fields.generated.d.ts +168 -0
  207. package/dist/lib/server/wire-spec-fields.generated.d.ts.map +1 -0
  208. package/dist/lib/server/wire-spec-fields.generated.js +172 -0
  209. package/dist/lib/server/wire-spec-fields.generated.js.map +1 -0
  210. package/dist/lib/testing/compliance/index.d.ts +2 -0
  211. package/dist/lib/testing/compliance/index.d.ts.map +1 -1
  212. package/dist/lib/testing/compliance/index.js +6 -1
  213. package/dist/lib/testing/compliance/index.js.map +1 -1
  214. package/dist/lib/testing/compliance/summary.d.ts +77 -0
  215. package/dist/lib/testing/compliance/summary.d.ts.map +1 -0
  216. package/dist/lib/testing/compliance/summary.js +176 -0
  217. package/dist/lib/testing/compliance/summary.js.map +1 -0
  218. package/dist/lib/testing/storyboard/compliance.d.ts +26 -0
  219. package/dist/lib/testing/storyboard/compliance.d.ts.map +1 -1
  220. package/dist/lib/testing/storyboard/compliance.js +51 -0
  221. package/dist/lib/testing/storyboard/compliance.js.map +1 -1
  222. package/dist/lib/testing/storyboard/index.d.ts +2 -2
  223. package/dist/lib/testing/storyboard/index.d.ts.map +1 -1
  224. package/dist/lib/testing/storyboard/index.js +4 -2
  225. package/dist/lib/testing/storyboard/index.js.map +1 -1
  226. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  227. package/dist/lib/testing/storyboard/runner.js +58 -5
  228. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  229. package/dist/lib/version.d.ts +3 -3
  230. package/dist/lib/version.d.ts.map +1 -1
  231. package/dist/lib/version.js +3 -3
  232. package/dist/lib/version.js.map +1 -1
  233. package/package.json +2 -2
@@ -0,0 +1,383 @@
1
+ id: creative_ad_server
2
+ version: "1.1.0"
3
+ title: "Creative ad server"
4
+ protocol: creative
5
+ category: creative_ad_server
6
+ summary: "Stateful ad server with pre-loaded creatives. Generates serving tags per media buy. Optionally bills through AdCP."
7
+ track: creative
8
+ required_tools:
9
+ - build_creative
10
+
11
+ # Cross-step assertion (adcp#2664). status.monotonic rejects resource
12
+ # status transitions observed across steps that aren't on the spec
13
+ # lifecycle graph — e.g. approved → processing on a creative asset.
14
+ invariants:
15
+ - status.monotonic
16
+
17
+ narrative: |
18
+ You run a creative ad server — think Innovid, Flashtalking, or CM360. Your clients
19
+ have already uploaded their creatives through your UI. Buyers connect to browse your
20
+ creative library and request serving tags for their media buys.
21
+
22
+ Your agent is stateful: creatives already exist in your system. The buyer never pushes
23
+ assets to you. Instead, they browse your library, pick creatives, and ask you to generate
24
+ tags for specific placements. For a campaign with 25 media buys, you'll generate 25 tags.
25
+
26
+ Billing is optional. If you bill through AdCP, the buyer's account drives the
27
+ rate card: list_creatives surfaces pricing_options, build_creative returns the
28
+ applied pricing_option_id and vendor_cost, and report_usage closes the loop
29
+ after delivery. If you bill out of band (flat license, SaaS contract, bundled
30
+ enterprise agreement — CM360 is the canonical example), omit the pricing fields
31
+ and surface report_usage records as not accepted rather than fake-accepting.
32
+ response_schema validates shape in both cases; the specialism doesn't force a
33
+ billing business model on you.
34
+
35
+ This storyboard walks through that flow from the buyer's perspective.
36
+
37
+ agent:
38
+ interaction_model: stateful_preloaded
39
+ capabilities:
40
+ - has_creative_library
41
+ examples:
42
+ - "Innovid"
43
+ - "Flashtalking"
44
+ - "CM360"
45
+
46
+ caller:
47
+ role: buyer_agent
48
+ example: "Scope3 (DSP)"
49
+
50
+ prerequisites:
51
+ description: |
52
+ Creatives must already exist in the ad server's library, loaded through the
53
+ platform's own UI or API. The buyer does not push assets — they browse and
54
+ request tags for what's already there.
55
+
56
+ Pricing is optional. Ad servers that bill through AdCP (rate-carded creative
57
+ serving) expose pricing_options on creatives and pricing_option_id on build
58
+ responses. Ad servers that bill out of band (flat license, SaaS contract, or
59
+ bundled enterprise agreement — e.g. CM360) return creatives and tags without
60
+ those fields. Both shapes are conformant; response_schema validates shape when
61
+ the fields are present.
62
+ controller_seeding: true
63
+
64
+ fixtures:
65
+ creatives:
66
+ - creative_id: "campaign_hero_video"
67
+ status: "approved"
68
+ format_id:
69
+ id: "vast_30s"
70
+ pricing_options:
71
+ - pricing_option_id: "po_vast_30s_cpm"
72
+ pricing_model: "cpm"
73
+ rate: 0.50
74
+ currency: "USD"
75
+
76
+ phases:
77
+ - id: capability_discovery
78
+ title: "Capability discovery"
79
+ narrative: |
80
+ The buyer calls get_adcp_capabilities to confirm the agent supports creative operations before browsing or building creatives.
81
+
82
+ steps:
83
+ - id: get_capabilities
84
+ title: "Check agent capabilities"
85
+ narrative: |
86
+ Verify that the agent declares the expected protocol support before
87
+ proceeding with domain-specific operations.
88
+ task: get_adcp_capabilities
89
+ schema_ref: "protocol/get-adcp-capabilities-request.json"
90
+ response_schema_ref: "protocol/get-adcp-capabilities-response.json"
91
+ doc_ref: "/protocol/get_adcp_capabilities"
92
+ comply_scenario: capability_discovery
93
+ stateful: false
94
+ expected: |
95
+ Return capabilities declaring creative in supported_protocols, confirming the agent handles creative operations.
96
+ sample_request:
97
+ context:
98
+ correlation_id: "creative_ad_server--get_capabilities"
99
+ validations:
100
+ - check: response_schema
101
+ description: "Response matches get-adcp-capabilities-response.json schema"
102
+ - check: field_present
103
+ path: "supported_protocols"
104
+ description: "Agent declares supported protocols"
105
+
106
+ - check: field_present
107
+ path: "context"
108
+ description: "Response echoes back the context object"
109
+ - check: field_value
110
+ path: "context.correlation_id"
111
+ value: "creative_ad_server--get_capabilities"
112
+ description: "Context correlation_id returned unchanged"
113
+ - id: browse_library
114
+ title: "Browse the creative library"
115
+ narrative: |
116
+ The buyer connects to your ad server and wants to see what creatives are
117
+ available for a campaign. They call list_creatives to browse concepts and
118
+ individual creatives in your library.
119
+
120
+ If your agent bills through AdCP and the buyer provides an account, each
121
+ creative includes the applicable rate from the account's rate card. If you
122
+ bill out of band, pricing_options is omitted.
123
+
124
+ steps:
125
+ - id: list_creatives
126
+ title: "Browse available creatives"
127
+ narrative: |
128
+ The buyer asks: "What creatives do you have for this advertiser?" This is
129
+ the primary entry point for ad server interactions.
130
+
131
+ The buyer sends include_pricing=true and an account reference. If your
132
+ agent bills through AdCP, each creative returns pricing_options from the
133
+ account's rate card; vendors may offer multiple options (volume tiers,
134
+ context-specific rates, or different models per product line). If your
135
+ agent bills out of band (flat license, SaaS contract, or bundled
136
+ enterprise agreement), omit pricing_options — response_schema validates
137
+ shape either way.
138
+ task: list_creatives
139
+ schema_ref: "creative/list-creatives-request.json"
140
+ response_schema_ref: "creative/list-creatives-response.json"
141
+ doc_ref: "/creative/task-reference/list_creatives"
142
+ comply_scenario: creative_flow
143
+ stateful: true
144
+ expected: |
145
+ Return creatives from your library. Each creative should include:
146
+ - creative_id (your platform's identifier)
147
+ - format_id referencing the creative's format
148
+ - name and status (approved, pending_review, rejected)
149
+ - concept_id grouping related creatives across sizes
150
+ - pricing_options array with pricing_option_id, model, rate, currency —
151
+ only when your agent bills through AdCP and include_pricing=true with
152
+ an account provided. Agents that bill out of band omit this field.
153
+
154
+ sample_request:
155
+ account:
156
+ account_id: "acct_acme_creative"
157
+ include_pricing: true
158
+ filters:
159
+ statuses:
160
+ - "approved"
161
+
162
+ context:
163
+ correlation_id: "creative_ad_server--list_creatives"
164
+ validations:
165
+ - check: response_schema
166
+ description: "Response matches list-creatives-response.json schema. Validates pricing_options shape when present; absence is conformant for agents that bill out of band."
167
+
168
+ - check: field_present
169
+ path: "context"
170
+ description: "Response echoes back the context object"
171
+ - check: field_value
172
+ path: "context.correlation_id"
173
+ value: "creative_ad_server--list_creatives"
174
+ description: "Context correlation_id returned unchanged"
175
+ - id: list_output_formats
176
+ title: "Check available output formats"
177
+ narrative: |
178
+ The buyer checks what output formats your ad server supports. For an ad
179
+ server, this is typically the tag formats you can generate — HTML, JavaScript,
180
+ VAST, native. The input formats are less relevant because creatives are already
181
+ in your system.
182
+ task: list_creative_formats
183
+ schema_ref: "creative/list-creative-formats-request.json"
184
+ response_schema_ref: "creative/list-creative-formats-response.json"
185
+ doc_ref: "/creative/task-reference/list_creative_formats"
186
+ comply_scenario: creative_sync
187
+ stateful: false
188
+ expected: |
189
+ Return the output formats you support. For an ad server, these are typically
190
+ tag formats (HTML, JavaScript, VAST) rather than visual ad formats.
191
+
192
+ - id: generate_tags
193
+ title: "Generate serving tags"
194
+ narrative: |
195
+ The buyer has selected creatives from your library and now needs serving tags
196
+ for their media buys. They call build_creative for each media buy/package
197
+ combination, passing the creative_id, account, and the context needed to
198
+ generate the right tag.
199
+
200
+ If your agent bills through AdCP, the response carries pricing_option_id and
201
+ vendor_cost (zero at build time for CPM — cost accrues on impressions). If
202
+ your agent bills out of band, omit these fields; the manifest is the
203
+ required output.
204
+
205
+ steps:
206
+ - id: build_tag
207
+ title: "Generate a tag for a media buy"
208
+ narrative: |
209
+ The buyer requests a serving tag for a specific creative, format, and media
210
+ buy. Your ad server generates a tag scoped to that placement.
211
+
212
+ For Innovid, this produces a VAST tag for a CTV placement. For Flashtalking,
213
+ this might produce an HTML tag for a display placement. The media_buy_id and
214
+ package_id provide the trafficking context.
215
+
216
+ Agents that bill through AdCP return pricing_option_id and vendor_cost so
217
+ the buyer knows which rate applies. Agents that bill out of band omit
218
+ those fields.
219
+ task: build_creative
220
+ schema_ref: "media-buy/build-creative-request.json"
221
+ response_schema_ref: "media-buy/build-creative-response.json"
222
+ doc_ref: "/creative/task-reference/build_creative"
223
+ comply_scenario: creative_flow
224
+ stateful: true
225
+ expected: |
226
+ Return a creative manifest with the serving tag. The output should include:
227
+ - An HTML, JavaScript, or VAST asset containing the tag
228
+ - The format_id matching the target format
229
+ - Macro placeholders (CLICK_URL, CACHEBUSTER) if applicable
230
+ - pricing_option_id, vendor_cost, and currency — only when your agent
231
+ bills through AdCP. Agents billing out of band omit these fields.
232
+
233
+ sample_request:
234
+ creative_id: "campaign_hero_video"
235
+ account:
236
+ account_id: "acct_acme_creative"
237
+ target_format_id:
238
+ agent_url: "https://your-ad-server.example.com"
239
+ id: "vast_30s"
240
+ media_buy_id: "mb_summer_campaign_001"
241
+ package_id: "pkg_ctv_premium"
242
+
243
+ idempotency_key: "$generate:uuid_v4#creative_ad_server_generate_tags_build_tag"
244
+ context:
245
+ correlation_id: "creative_ad_server--build_tag"
246
+ validations:
247
+ - check: response_schema
248
+ description: "Response matches build-creative-response.json schema"
249
+ - check: field_present
250
+ path: "creative_manifest.assets"
251
+ description: "Output includes a serving tag asset"
252
+
253
+ - check: field_present
254
+ path: "context"
255
+ description: "Response echoes back the context object"
256
+ - check: field_value
257
+ path: "context.correlation_id"
258
+ value: "creative_ad_server--build_tag"
259
+ description: "Context correlation_id returned unchanged"
260
+ - id: track_delivery
261
+ title: "Track creative delivery"
262
+ narrative: |
263
+ After the campaign runs, the buyer checks how each creative performed. They call
264
+ get_creative_delivery to get variant-level delivery data — impressions, spend, and
265
+ breakdowns by creative variant.
266
+
267
+ steps:
268
+ - id: get_delivery
269
+ title: "Get creative delivery metrics"
270
+ narrative: |
271
+ The buyer asks: "How did my creatives perform across the media buys?" Your ad
272
+ server returns delivery data per creative, including impressions, spend, and
273
+ variant-level breakdowns.
274
+ task: get_creative_delivery
275
+ schema_ref: "creative/get-creative-delivery-request.json"
276
+ response_schema_ref: "creative/get-creative-delivery-response.json"
277
+ doc_ref: "/creative/task-reference/get_creative_delivery"
278
+ comply_scenario: creative_flow
279
+ stateful: true
280
+ expected: |
281
+ Return per-creative delivery metrics including:
282
+ - Impressions and spend per creative
283
+ - Variant-level breakdowns (which version of each creative was served)
284
+ - Media buy context (which buys each creative was active on)
285
+
286
+ sample_request:
287
+ account:
288
+ brand:
289
+ domain: "acmeoutdoor.example"
290
+ operator: "pinnacle-agency.example"
291
+ media_buy_ids:
292
+ - "mb_summer_campaign_001"
293
+
294
+ context:
295
+ correlation_id: "creative_ad_server--get_delivery"
296
+ ext:
297
+ test_platform:
298
+ test_run: true
299
+ validations:
300
+ - check: response_schema
301
+ description: "Response matches get-creative-delivery-response.json schema"
302
+
303
+ - check: field_present
304
+ path: "context"
305
+ description: "Response echoes back the context object"
306
+ - check: field_value
307
+ path: "context.correlation_id"
308
+ value: "creative_ad_server--get_delivery"
309
+ description: "Context correlation_id returned unchanged"
310
+ - id: report_billing
311
+ title: "Report usage for billing"
312
+ narrative: |
313
+ After delivery, the buyer reports creative usage to the ad server. The billing
314
+ path is optional at the specialism level — agents that bill through AdCP
315
+ accept the record and reconcile against their rate card; agents that bill
316
+ out of band return accepted: 0 with an entry in the errors array pointing at
317
+ the offending usage record and a message explaining that billing is handled
318
+ out of band for this account. response_schema validates the response shape
319
+ either way.
320
+
321
+ steps:
322
+ - id: report_usage
323
+ title: "Report impressions and cost"
324
+ narrative: |
325
+ The buyer sends a usage report covering a billing period. Each record
326
+ includes the creative_id, pricing_option_id (from the build_creative
327
+ response — omitted by agents that bill out of band), impressions served,
328
+ and the computed vendor_cost. The sample_request below is written for
329
+ the AdCP-billed case; out-of-band agents receive the same request shape
330
+ and decide the response.
331
+
332
+ Agents that bill through AdCP verify the rate and return accepted: 1
333
+ with empty errors. Agents that bill out of band return accepted: 0 and
334
+ populate errors with a field pointing at the offending record (e.g.
335
+ `usage[0].pricing_option_id`) and a human-readable message. Don't
336
+ fake-accept records you won't bill on — silent acceptance breaks
337
+ reconciliation for buyers who trust the response. A standard error
338
+ code for "billing is handled out of band" is not yet defined in the
339
+ spec; vendor codes are fine today.
340
+ task: report_usage
341
+ schema_ref: "account/report-usage-request.json"
342
+ response_schema_ref: "account/report-usage-response.json"
343
+ doc_ref: "/accounts/tasks/report_usage"
344
+ comply_scenario: creative_flow
345
+ stateful: true
346
+ expected: |
347
+ Return a response matching the report-usage-response.json schema.
348
+ Agents that bill through AdCP return accepted: 1 and empty errors.
349
+ Agents that bill out of band return accepted: 0 with an errors entry
350
+ pointing at the offending record and explaining that billing is
351
+ handled out of band.
352
+
353
+ sample_request:
354
+ account:
355
+ brand:
356
+ domain: "acmeoutdoor.example"
357
+ operator: "pinnacle-agency.example"
358
+ idempotency_key: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
359
+ reporting_period:
360
+ start: "2026-03-01T00:00:00Z"
361
+ end: "2026-03-31T23:59:59Z"
362
+ usage:
363
+ - account:
364
+ account_id: "acct_acme_creative"
365
+ creative_id: "campaign_hero_video"
366
+ pricing_option_id: "po_vast_30s_cpm"
367
+ impressions: 2400000
368
+ vendor_cost: 1200.00
369
+ currency: "USD"
370
+
371
+ context:
372
+ correlation_id: "creative_ad_server--report_usage"
373
+ validations:
374
+ - check: response_schema
375
+ description: "Response matches report-usage-response.json schema"
376
+
377
+ - check: field_present
378
+ path: "context"
379
+ description: "Response echoes back the context object"
380
+ - check: field_value
381
+ path: "context.correlation_id"
382
+ value: "creative_ad_server--report_usage"
383
+ description: "Context correlation_id returned unchanged"