@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,442 @@
1
+ id: media_buy_state_machine
2
+ version: "1.0.0"
3
+ title: "Media buy state machine lifecycle"
4
+ category: media_buy_state_machine
5
+ summary: "Validates media buy state transitions: create, pause, resume, cancel, and terminal state enforcement."
6
+ track: media_buy
7
+ required_tools:
8
+ - create_media_buy
9
+ - update_media_buy
10
+
11
+ narrative: |
12
+ A media buy has a well-defined state machine: pending_creatives, pending_start, active,
13
+ paused, completed, rejected, canceled. Transitions between states must follow the spec — you cannot
14
+ resume a canceled buy or pause a completed one.
15
+
16
+ This storyboard creates a media buy, walks it through pause/resume/cancel transitions, then
17
+ verifies that the agent rejects updates to a buy in a terminal state (canceled or completed).
18
+ It also tests package-level pause/resume independent of the media buy status.
19
+
20
+ The state machine is the backbone of media buy reliability. If an agent allows invalid
21
+ transitions, buyers cannot trust the status field and automation breaks down.
22
+
23
+ agent:
24
+ interaction_model: media_buy_seller
25
+ capabilities:
26
+ - sells_media
27
+ - accepts_briefs
28
+ examples:
29
+ - "Any AdCP seller with media buy support"
30
+
31
+ caller:
32
+ role: buyer_agent
33
+ example: "Scope3 (DSP)"
34
+
35
+ prerequisites:
36
+ description: |
37
+ The caller needs a brand identity for account setup. The test creates a media buy
38
+ using discovered products, then exercises state transitions.
39
+ test_kit: "test-kits/acme-outdoor.yaml"
40
+
41
+ phases:
42
+ - id: capability_discovery
43
+ title: "Capability discovery"
44
+ narrative: |
45
+ The buyer calls get_adcp_capabilities to confirm the agent supports media buying before sending briefs or creating buys.
46
+
47
+ steps:
48
+ - id: get_capabilities
49
+ title: "Check agent capabilities"
50
+ narrative: |
51
+ Verify that the agent declares the expected protocol support before
52
+ proceeding with domain-specific operations.
53
+ task: get_adcp_capabilities
54
+ schema_ref: "protocol/get-adcp-capabilities-request.json"
55
+ response_schema_ref: "protocol/get-adcp-capabilities-response.json"
56
+ doc_ref: "/protocol/get_adcp_capabilities"
57
+ comply_scenario: capability_discovery
58
+ stateful: false
59
+ expected: |
60
+ Return capabilities declaring media_buy in supported_protocols, confirming the agent sells media.
61
+ sample_request:
62
+ context:
63
+ correlation_id: "media_buy_state_machine--get_capabilities"
64
+ validations:
65
+ - check: response_schema
66
+ description: "Response matches get-adcp-capabilities-response.json schema"
67
+ - check: field_present
68
+ path: "supported_protocols"
69
+ description: "Agent declares supported protocols"
70
+
71
+ - check: field_present
72
+ path: "context"
73
+ description: "Response echoes back the context object"
74
+ - check: field_value
75
+ path: "context.correlation_id"
76
+ value: "media_buy_state_machine--get_capabilities"
77
+ description: "Context correlation_id returned unchanged"
78
+ - id: setup
79
+ title: "Create a media buy"
80
+ narrative: |
81
+ Discover products and create a media buy to use for state transition testing.
82
+ The media buy ID is captured and passed to subsequent phases.
83
+
84
+ steps:
85
+ - id: discover_products
86
+ title: "Discover products for media buy"
87
+ narrative: |
88
+ Send a brief to get available products with pricing options. The first product
89
+ with a pricing option will be used to create the test media buy.
90
+ task: get_products
91
+ schema_ref: "media-buy/get-products-request.json"
92
+ response_schema_ref: "media-buy/get-products-response.json"
93
+ doc_ref: "/media-buy/task-reference/get_products"
94
+ comply_scenario: full_sales_flow
95
+ stateful: false
96
+ expected: |
97
+ Return products with:
98
+ - product_id
99
+ - pricing_options with pricing_option_id
100
+
101
+ sample_request:
102
+ buying_mode: "brief"
103
+ brief: "Display advertising products for state machine testing"
104
+ brand:
105
+ domain: "acmeoutdoor.example"
106
+
107
+ context:
108
+ correlation_id: "media_buy_state_machine--discover_products"
109
+ context_outputs:
110
+ - name: product_id
111
+ path: 'products[0].product_id'
112
+ - name: pricing_option_id
113
+ path: 'products[0].pricing_options[0].pricing_option_id'
114
+ validations:
115
+ - check: response_schema
116
+ description: "Response matches get-products-response.json schema"
117
+ - check: field_present
118
+ path: "products[0].product_id"
119
+ description: "At least one product with a product_id"
120
+
121
+ - check: field_present
122
+ path: "context"
123
+ description: "Response echoes back the context object"
124
+ - check: field_value
125
+ path: "context.correlation_id"
126
+ value: "media_buy_state_machine--discover_products"
127
+ description: "Context correlation_id returned unchanged"
128
+ - check: field_present
129
+ path: "products[0].format_ids"
130
+ description: "Products include format_ids for creative requirements"
131
+ - check: field_present
132
+ path: "products[0].format_ids[0].agent_url"
133
+ description: "Format IDs include agent_url — must match this agent's URL"
134
+ - check: field_present
135
+ path: "products[0].format_ids[0].id"
136
+ description: "Format IDs include id — must be accepted back in sync_creatives"
137
+ - id: create_buy
138
+ title: "Create the test media buy"
139
+ narrative: |
140
+ Create a media buy using the discovered product. This buy will be used for
141
+ all subsequent state transition tests.
142
+ task: create_media_buy
143
+ schema_ref: "media-buy/create-media-buy-request.json"
144
+ response_schema_ref: "media-buy/create-media-buy-response.json"
145
+ doc_ref: "/media-buy/task-reference/create_media_buy"
146
+ comply_scenario: create_media_buy
147
+ stateful: true
148
+ expected: |
149
+ Return an active media buy with:
150
+ - media_buy_id
151
+ - status: active
152
+
153
+ sample_request:
154
+ account:
155
+ brand:
156
+ domain: "acmeoutdoor.example"
157
+ operator: "pinnacle-agency.example"
158
+ brand:
159
+ domain: "acmeoutdoor.example"
160
+ start_time: "2026-05-01T00:00:00Z"
161
+ end_time: "2026-05-31T23:59:59Z"
162
+ packages:
163
+ - product_id: "test-product"
164
+ budget: 10000
165
+ pricing_option_id: "test-pricing"
166
+
167
+ idempotency_key: "$generate:uuid_v4#media_buy_state_machine_setup_create_buy"
168
+ context:
169
+ correlation_id: "media_buy_state_machine--create_buy"
170
+ context_outputs:
171
+ - name: media_buy_id
172
+ path: 'media_buy_id'
173
+ - name: package_id
174
+ path: 'packages[0].package_id'
175
+ validations:
176
+ - check: response_schema
177
+ description: "Response matches create-media-buy-response.json schema"
178
+ - check: field_present
179
+ path: "media_buy_id"
180
+ description: "Response includes a media_buy_id"
181
+
182
+ - check: field_present
183
+ path: "context"
184
+ description: "Response echoes back the context object"
185
+ - check: field_value
186
+ path: "context.correlation_id"
187
+ value: "media_buy_state_machine--create_buy"
188
+ description: "Context correlation_id returned unchanged"
189
+ - check: field_present
190
+ path: "packages[0].package_id"
191
+ description: "Seller assigns package_id — must be echoed in update_media_buy"
192
+ - id: state_transitions
193
+ title: "Valid state transitions"
194
+ narrative: |
195
+ Exercise the valid state transitions: pause, resume, and cancel. Each transition
196
+ must update the status field correctly.
197
+
198
+ steps:
199
+ - id: pause_buy
200
+ title: "Pause the media buy"
201
+ narrative: |
202
+ Pause the active media buy. The status should transition to paused.
203
+ task: update_media_buy
204
+ schema_ref: "media-buy/update-media-buy-request.json"
205
+ response_schema_ref: "media-buy/update-media-buy-response.json"
206
+ doc_ref: "/media-buy/task-reference/update_media_buy"
207
+ comply_scenario: media_buy_lifecycle
208
+ stateful: true
209
+ expected: |
210
+ Media buy status transitions to paused.
211
+
212
+ sample_request:
213
+ account:
214
+ brand:
215
+ domain: "acmeoutdoor.example"
216
+ operator: "pinnacle-agency.example"
217
+ media_buy_id: "$context.media_buy_id"
218
+ paused: true
219
+
220
+ idempotency_key: "$generate:uuid_v4#media_buy_state_machine_state_transitions_pause_buy"
221
+ context:
222
+ correlation_id: "media_buy_state_machine--pause_buy"
223
+ validations:
224
+ - check: field_present
225
+ path: "status"
226
+ description: "Response includes updated status"
227
+
228
+ - check: field_present
229
+ path: "context"
230
+ description: "Response echoes back the context object"
231
+ - check: field_value
232
+ path: "context.correlation_id"
233
+ value: "media_buy_state_machine--pause_buy"
234
+ description: "Context correlation_id returned unchanged"
235
+ - id: resume_buy
236
+ title: "Resume the media buy"
237
+ narrative: |
238
+ Resume the paused media buy. The status should transition back to active.
239
+ task: update_media_buy
240
+ schema_ref: "media-buy/update-media-buy-request.json"
241
+ response_schema_ref: "media-buy/update-media-buy-response.json"
242
+ doc_ref: "/media-buy/task-reference/update_media_buy"
243
+ comply_scenario: media_buy_lifecycle
244
+ stateful: true
245
+ expected: |
246
+ Media buy status transitions back to active.
247
+
248
+ sample_request:
249
+ account:
250
+ brand:
251
+ domain: "acmeoutdoor.example"
252
+ operator: "pinnacle-agency.example"
253
+ media_buy_id: "$context.media_buy_id"
254
+ paused: false
255
+
256
+ idempotency_key: "$generate:uuid_v4#media_buy_state_machine_state_transitions_resume_buy"
257
+ context:
258
+ correlation_id: "media_buy_state_machine--resume_buy"
259
+ validations:
260
+ - check: field_present
261
+ path: "status"
262
+ description: "Response includes updated status"
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: "media_buy_state_machine--resume_buy"
270
+ description: "Context correlation_id returned unchanged"
271
+ - id: cancel_buy
272
+ title: "Cancel the media buy"
273
+ narrative: |
274
+ Cancel the media buy. This is a terminal transition — the buy cannot be
275
+ resumed or modified after cancellation.
276
+ task: update_media_buy
277
+ schema_ref: "media-buy/update-media-buy-request.json"
278
+ response_schema_ref: "media-buy/update-media-buy-response.json"
279
+ doc_ref: "/media-buy/task-reference/update_media_buy"
280
+ comply_scenario: media_buy_lifecycle
281
+ stateful: true
282
+ expected: |
283
+ Media buy status transitions to canceled. This is terminal.
284
+
285
+ sample_request:
286
+ account:
287
+ brand:
288
+ domain: "acmeoutdoor.example"
289
+ operator: "pinnacle-agency.example"
290
+ media_buy_id: "$context.media_buy_id"
291
+ canceled: true
292
+
293
+ idempotency_key: "$generate:uuid_v4#media_buy_state_machine_state_transitions_cancel_buy"
294
+ context:
295
+ correlation_id: "media_buy_state_machine--cancel_buy"
296
+ validations:
297
+ - check: field_present
298
+ path: "status"
299
+ description: "Response includes canceled status"
300
+
301
+ - check: field_present
302
+ path: "context"
303
+ description: "Response echoes back the context object"
304
+ - check: field_value
305
+ path: "context.correlation_id"
306
+ value: "media_buy_state_machine--cancel_buy"
307
+ description: "Context correlation_id returned unchanged"
308
+ - id: terminal_enforcement
309
+ title: "Terminal state enforcement"
310
+ narrative: |
311
+ Verify that the agent rejects state transitions on a canceled media buy. Pausing
312
+ or resuming a terminal buy returns INVALID_STATE (generic terminal-state rule).
313
+ Re-canceling a terminal buy returns NOT_CANCELLABLE — the cancellation-specific
314
+ code takes precedence over the generic INVALID_STATE when the attempted
315
+ transition is itself a cancellation. Non-cancellation illegal transitions into
316
+ or out of terminal states still return INVALID_STATE.
317
+
318
+ steps:
319
+ - id: pause_canceled_buy
320
+ title: "Reject pause on canceled buy"
321
+ narrative: |
322
+ Attempt to pause a canceled media buy. The agent must reject this with
323
+ INVALID_STATE.
324
+ task: update_media_buy
325
+ schema_ref: "media-buy/update-media-buy-request.json"
326
+ response_schema_ref: "media-buy/update-media-buy-response.json"
327
+ doc_ref: "/media-buy/task-reference/update_media_buy"
328
+ comply_scenario: terminal_state_enforcement
329
+ expect_error: true
330
+ negative_path: payload_well_formed
331
+ stateful: true
332
+ expected: |
333
+ Reject with INVALID_STATE — cannot pause a canceled buy.
334
+
335
+ sample_request:
336
+ account:
337
+ brand:
338
+ domain: "acmeoutdoor.example"
339
+ operator: "pinnacle-agency.example"
340
+ media_buy_id: "$context.media_buy_id"
341
+ paused: true
342
+ idempotency_key: "$generate:uuid_v4#pause_canceled_buy"
343
+
344
+ context:
345
+ correlation_id: "media_buy_state_machine--pause_canceled_buy"
346
+ validations:
347
+ - check: error_code
348
+ allowed_values: ["INVALID_STATE"]
349
+ description: "Invalid transition rejected with INVALID_STATE"
350
+
351
+ - check: field_present
352
+ path: "context"
353
+ description: "Response echoes back the context object"
354
+ - check: field_value
355
+ path: "context.correlation_id"
356
+ value: "media_buy_state_machine--pause_canceled_buy"
357
+ description: "Context correlation_id returned unchanged"
358
+ - id: resume_canceled_buy
359
+ title: "Reject resume on canceled buy"
360
+ narrative: |
361
+ Attempt to resume a canceled media buy. The agent must reject this with
362
+ INVALID_STATE.
363
+ task: update_media_buy
364
+ schema_ref: "media-buy/update-media-buy-request.json"
365
+ response_schema_ref: "media-buy/update-media-buy-response.json"
366
+ doc_ref: "/media-buy/task-reference/update_media_buy"
367
+ comply_scenario: terminal_state_enforcement
368
+ expect_error: true
369
+ negative_path: payload_well_formed
370
+ stateful: true
371
+ expected: |
372
+ Reject with INVALID_STATE — cannot resume a canceled buy.
373
+
374
+ sample_request:
375
+ account:
376
+ brand:
377
+ domain: "acmeoutdoor.example"
378
+ operator: "pinnacle-agency.example"
379
+ media_buy_id: "$context.media_buy_id"
380
+ paused: false
381
+ idempotency_key: "$generate:uuid_v4#resume_canceled_buy"
382
+
383
+ context:
384
+ correlation_id: "media_buy_state_machine--resume_canceled_buy"
385
+ validations:
386
+ - check: error_code
387
+ allowed_values: ["INVALID_STATE"]
388
+ description: "Invalid transition rejected with INVALID_STATE"
389
+
390
+ - check: field_present
391
+ path: "context"
392
+ description: "Response echoes back the context object"
393
+ - check: field_value
394
+ path: "context.correlation_id"
395
+ value: "media_buy_state_machine--resume_canceled_buy"
396
+ description: "Context correlation_id returned unchanged"
397
+ - id: recancel_buy
398
+ title: "Reject re-cancel of canceled buy with NOT_CANCELLABLE"
399
+ narrative: |
400
+ Attempt to cancel an already-canceled media buy. The agent MUST reject
401
+ this with NOT_CANCELLABLE. The cancellation-specific code takes
402
+ precedence over the generic terminal-state INVALID_STATE when the
403
+ terminal update is itself a cancellation attempt — see §128/§129 of
404
+ the media-buy specification and media_buy_seller/invalid_transitions
405
+ for the canonical vector. Idempotent acceptance is NOT conformant for
406
+ this case.
407
+ task: update_media_buy
408
+ schema_ref: "media-buy/update-media-buy-request.json"
409
+ response_schema_ref: "media-buy/update-media-buy-response.json"
410
+ doc_ref: "/media-buy/task-reference/update_media_buy"
411
+ comply_scenario: terminal_state_enforcement
412
+ expect_error: true
413
+ negative_path: payload_well_formed
414
+ stateful: true
415
+ expected: |
416
+ Reject with:
417
+ - code: NOT_CANCELLABLE
418
+ - recovery: correctable
419
+ - context echoed unchanged
420
+
421
+ sample_request:
422
+ account:
423
+ brand:
424
+ domain: "acmeoutdoor.example"
425
+ operator: "pinnacle-agency.example"
426
+ media_buy_id: "$context.media_buy_id"
427
+ canceled: true
428
+
429
+ idempotency_key: "$generate:uuid_v4#media_buy_state_machine_terminal_enforcement_recancel_buy"
430
+ context:
431
+ correlation_id: "media_buy_state_machine--recancel_buy"
432
+ validations:
433
+ - check: error_code
434
+ value: "NOT_CANCELLABLE"
435
+ description: "Error code is NOT_CANCELLABLE on re-cancel of canceled buy"
436
+ - check: field_present
437
+ path: "context"
438
+ description: "Response echoes back the context object even on errors"
439
+ - check: field_value
440
+ path: "context.correlation_id"
441
+ value: "media_buy_state_machine--recancel_buy"
442
+ description: "Context correlation_id returned unchanged"