@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,284 @@
1
+ id: media_buy_seller/invalid_transitions
2
+ version: "1.0.0"
3
+ title: "Seller rejects illegal state transitions and unknown references"
4
+ category: media_buy_seller
5
+ summary: "Validates that the seller returns structured AdCP errors (MEDIA_BUY_NOT_FOUND, PACKAGE_NOT_FOUND, NOT_CANCELLABLE) rather than 500s or undefined behavior when the buyer references missing entities or attempts forbidden state transitions."
6
+ track: media_buy
7
+ required_tools:
8
+ - get_products
9
+ - create_media_buy
10
+ - update_media_buy
11
+
12
+ narrative: |
13
+ Error-code coverage is the most common compliance gap: sellers accept malformed input
14
+ silently or return generic 500s rather than the specific AdCP codes the spec defines.
15
+ This scenario forces three of the most-referenced media_buy error codes with
16
+ deterministic input:
17
+
18
+ - MEDIA_BUY_NOT_FOUND — buyer references a media_buy_id that does not exist.
19
+ - PACKAGE_NOT_FOUND — media_buy_id is valid but package_id inside it is not.
20
+ - NOT_CANCELLABLE — buyer cancels the same media buy twice; the second cancel must
21
+ be rejected because canceled is terminal.
22
+
23
+ All three probes use hard `check: error_code` assertions so a seller that returns
24
+ a 500 or swallows the error fails the scenario outright. Recovery hints, correlation
25
+ echo, and context preservation are also checked on every error response.
26
+
27
+ agent:
28
+ interaction_model: media_buy_seller
29
+ capabilities:
30
+ - sells_media
31
+ examples:
32
+ - "Any media buy seller"
33
+
34
+ caller:
35
+ role: buyer_agent
36
+ example: "Pinnacle Agency (buyer)"
37
+
38
+ prerequisites:
39
+ description: |
40
+ Seller supports create_media_buy and update_media_buy with cancellation via
41
+ the canceled field.
42
+ test_kit: "test-kits/acme-outdoor.yaml"
43
+
44
+ phases:
45
+ - id: unknown_media_buy
46
+ title: "Reference an unknown media_buy_id"
47
+ narrative: |
48
+ Before any state is set up, call update_media_buy with a fabricated media_buy_id.
49
+ The seller must return MEDIA_BUY_NOT_FOUND with a correctable recovery hint — not
50
+ a 500 and not a silent success.
51
+
52
+ steps:
53
+ - id: update_unknown_media_buy
54
+ title: "update_media_buy with bogus media_buy_id"
55
+ task: update_media_buy
56
+ schema_ref: "media-buy/update-media-buy-request.json"
57
+ response_schema_ref: "media-buy/update-media-buy-response.json"
58
+ doc_ref: "/media-buy/task-reference/update_media_buy"
59
+ comply_scenario: media_buy_lifecycle
60
+ expect_error: true
61
+ negative_path: payload_well_formed
62
+ stateful: false
63
+ expected: |
64
+ Reject with:
65
+ - code: MEDIA_BUY_NOT_FOUND
66
+ - recovery: correctable
67
+ - context echoed unchanged
68
+
69
+ sample_request:
70
+ account:
71
+ brand:
72
+ domain: "acmeoutdoor.example"
73
+ operator: "pinnacle-agency.example"
74
+ media_buy_id: "does-not-exist-invalid-transitions-v1"
75
+ paused: true
76
+ idempotency_key: "$generate:uuid_v4#update_unknown_media_buy"
77
+ context:
78
+ correlation_id: "invalid_transitions--update_unknown_media_buy"
79
+ validations:
80
+ - check: error_code
81
+ value: "MEDIA_BUY_NOT_FOUND"
82
+ description: "Error code is MEDIA_BUY_NOT_FOUND"
83
+ - check: field_present
84
+ path: "context"
85
+ description: "Response echoes back the context object even on errors"
86
+ - check: field_value
87
+ path: "context.correlation_id"
88
+ value: "invalid_transitions--update_unknown_media_buy"
89
+ description: "Context correlation_id returned unchanged"
90
+
91
+ - id: setup
92
+ title: "Create a real media buy for follow-up probes"
93
+ narrative: |
94
+ The remaining probes need a real media_buy_id and package_id. Discover a product
95
+ and create a plain buy — no targeting tricks, no governance — so we have known-good
96
+ IDs for the error cases.
97
+
98
+ steps:
99
+ - id: get_products_brief
100
+ title: "Discover a product"
101
+ task: get_products
102
+ schema_ref: "media-buy/get-products-request.json"
103
+ response_schema_ref: "media-buy/get-products-response.json"
104
+ doc_ref: "/media-buy/task-reference/get_products"
105
+ comply_scenario: full_sales_flow
106
+ stateful: false
107
+ expected: |
108
+ Return at least one product with pricing.
109
+ sample_request:
110
+ buying_mode: "brief"
111
+ brief: "Display inventory on outdoor lifestyle content. Q3 flight."
112
+ account:
113
+ brand:
114
+ domain: "acmeoutdoor.example"
115
+ operator: "pinnacle-agency.example"
116
+ context_outputs:
117
+ - path: "products[0].product_id"
118
+ key: "product_id"
119
+ - path: "products[0].pricing_options[0].pricing_option_id"
120
+ key: "pricing_option_id"
121
+ validations:
122
+ - check: response_schema
123
+ description: "Response matches get-products-response.json schema"
124
+
125
+ - id: create_buy
126
+ title: "Create a buy for the error probes"
127
+ task: create_media_buy
128
+ schema_ref: "media-buy/create-media-buy-request.json"
129
+ response_schema_ref: "media-buy/create-media-buy-response.json"
130
+ doc_ref: "/media-buy/task-reference/create_media_buy"
131
+ comply_scenario: create_media_buy
132
+ stateful: true
133
+ expected: |
134
+ Media buy created with media_buy_id and at least one package.
135
+
136
+ sample_request:
137
+ brand:
138
+ domain: "acmeoutdoor.example"
139
+ account:
140
+ brand:
141
+ domain: "acmeoutdoor.example"
142
+ operator: "pinnacle-agency.example"
143
+ idempotency_key: "invalid-transitions-setup-v1"
144
+ start_time: "2026-08-01T00:00:00Z"
145
+ end_time: "2026-08-31T23:59:59Z"
146
+ packages:
147
+ - product_id: "$context.product_id"
148
+ budget: 5000
149
+ pricing_option_id: "$context.pricing_option_id"
150
+ context:
151
+ correlation_id: "invalid_transitions--create_buy"
152
+ context_outputs:
153
+ - path: "media_buy_id"
154
+ key: "media_buy_id"
155
+ - path: "packages[0].package_id"
156
+ key: "package_id"
157
+ validations:
158
+ - check: response_schema
159
+ description: "Response matches create-media-buy-response.json schema"
160
+ - check: field_present
161
+ path: "media_buy_id"
162
+ description: "Seller returns media_buy_id"
163
+
164
+ - id: unknown_package
165
+ title: "Reference an unknown package_id on a real buy"
166
+ narrative: |
167
+ The media_buy_id is real, but the package_id is fabricated. The seller must
168
+ return PACKAGE_NOT_FOUND — distinct from MEDIA_BUY_NOT_FOUND — because the
169
+ lookup succeeds at the buy level and only fails at the package lookup.
170
+
171
+ steps:
172
+ - id: update_unknown_package
173
+ title: "update_media_buy with bogus package_id"
174
+ task: update_media_buy
175
+ schema_ref: "media-buy/update-media-buy-request.json"
176
+ response_schema_ref: "media-buy/update-media-buy-response.json"
177
+ doc_ref: "/media-buy/task-reference/update_media_buy"
178
+ comply_scenario: media_buy_lifecycle
179
+ expect_error: true
180
+ negative_path: payload_well_formed
181
+ stateful: true
182
+ expected: |
183
+ Reject with:
184
+ - code: PACKAGE_NOT_FOUND
185
+ - recovery: correctable
186
+ - context echoed unchanged
187
+
188
+ sample_request:
189
+ account:
190
+ brand:
191
+ domain: "acmeoutdoor.example"
192
+ operator: "pinnacle-agency.example"
193
+ media_buy_id: "$context.media_buy_id"
194
+ idempotency_key: "$generate:uuid_v4#update_unknown_package"
195
+ packages:
196
+ - package_id: "does-not-exist-package-invalid-transitions-v1"
197
+ paused: true
198
+ context:
199
+ correlation_id: "invalid_transitions--update_unknown_package"
200
+ validations:
201
+ - check: error_code
202
+ value: "PACKAGE_NOT_FOUND"
203
+ description: "Error code is PACKAGE_NOT_FOUND"
204
+ - check: field_present
205
+ path: "context"
206
+ description: "Response echoes back the context object even on errors"
207
+ - check: field_value
208
+ path: "context.correlation_id"
209
+ value: "invalid_transitions--update_unknown_package"
210
+ description: "Context correlation_id returned unchanged"
211
+
212
+ - id: double_cancel
213
+ title: "Cancel twice — second cancel is not valid"
214
+ narrative: |
215
+ Cancel the buy (success), then try to cancel the same buy again. canceled is
216
+ terminal per the AdCP spec, so the second cancel cannot succeed. The seller
217
+ must return NOT_CANCELLABLE — the schema specifically reserves this code for
218
+ "media buy cannot be canceled in its current state."
219
+
220
+ steps:
221
+ - id: first_cancel
222
+ title: "Cancel the media buy"
223
+ task: update_media_buy
224
+ schema_ref: "media-buy/update-media-buy-request.json"
225
+ response_schema_ref: "media-buy/update-media-buy-response.json"
226
+ doc_ref: "/media-buy/task-reference/update_media_buy"
227
+ comply_scenario: media_buy_lifecycle
228
+ stateful: true
229
+ expected: |
230
+ Seller acknowledges the cancellation and transitions the buy to canceled.
231
+
232
+ sample_request:
233
+ account:
234
+ brand:
235
+ domain: "acmeoutdoor.example"
236
+ operator: "pinnacle-agency.example"
237
+ media_buy_id: "$context.media_buy_id"
238
+ canceled: true
239
+ cancellation_reason: "Testing NOT_CANCELLABLE on re-cancel"
240
+ idempotency_key: "$generate:uuid_v4#media_buy_seller_invalid_transitions_double_cancel_first_cancel"
241
+ context:
242
+ correlation_id: "invalid_transitions--first_cancel"
243
+ validations:
244
+ - check: response_schema
245
+ description: "Response matches update-media-buy-response.json schema"
246
+
247
+ - id: second_cancel
248
+ title: "Re-cancel the canceled buy"
249
+ task: update_media_buy
250
+ schema_ref: "media-buy/update-media-buy-request.json"
251
+ response_schema_ref: "media-buy/update-media-buy-response.json"
252
+ doc_ref: "/media-buy/task-reference/update_media_buy"
253
+ comply_scenario: media_buy_lifecycle
254
+ expect_error: true
255
+ negative_path: payload_well_formed
256
+ stateful: true
257
+ expected: |
258
+ Reject with:
259
+ - code: NOT_CANCELLABLE
260
+ - recovery: correctable
261
+ - context echoed unchanged
262
+
263
+ sample_request:
264
+ account:
265
+ brand:
266
+ domain: "acmeoutdoor.example"
267
+ operator: "pinnacle-agency.example"
268
+ media_buy_id: "$context.media_buy_id"
269
+ canceled: true
270
+ cancellation_reason: "Deliberate re-cancel to force NOT_CANCELLABLE"
271
+ idempotency_key: "$generate:uuid_v4#media_buy_seller_invalid_transitions_double_cancel_second_cancel"
272
+ context:
273
+ correlation_id: "invalid_transitions--second_cancel"
274
+ validations:
275
+ - check: error_code
276
+ value: "NOT_CANCELLABLE"
277
+ description: "Error code is NOT_CANCELLABLE on re-cancel of canceled buy"
278
+ - check: field_present
279
+ path: "context"
280
+ description: "Response echoes back the context object even on errors"
281
+ - check: field_value
282
+ path: "context.correlation_id"
283
+ value: "invalid_transitions--second_cancel"
284
+ description: "Context correlation_id returned unchanged"
@@ -0,0 +1,143 @@
1
+ id: media_buy_seller/inventory_list_no_match
2
+ version: "1.0.0"
3
+ title: "Seller handles property_list / collection_list references that match zero inventory"
4
+ category: media_buy_seller
5
+ summary: "Verifies a seller returns a zero-forecast product or a clear error — not a crash — when a buyer references inventory lists that resolve to nothing in the seller's catalog."
6
+ track: media_buy
7
+ required_tools:
8
+ - get_products
9
+ - create_media_buy
10
+
11
+ narrative: |
12
+ Not every buyer list matches every seller's inventory. A buyer may point at a
13
+ property_list of domains this seller does not carry, or a collection_list of
14
+ programs this seller does not syndicate. The seller must handle that gracefully:
15
+
16
+ - Return a product with a zero forecast and explain the mismatch, OR
17
+ - Return an informative error on create_media_buy (INSUFFICIENT_INVENTORY or
18
+ similar) with findings the buyer can act on.
19
+
20
+ What the seller must NOT do: crash, return a misleading non-zero forecast, or
21
+ silently drop the targeting and deliver against unintended inventory. Each of
22
+ those is a real failure mode we've seen in adapter integrations.
23
+
24
+ This scenario exercises the no-match path using the test kit's pre-populated
25
+ no_match_properties and no_match_collections lists.
26
+
27
+ agent:
28
+ interaction_model: media_buy_seller
29
+ capabilities:
30
+ - sells_media
31
+ - supports_property_list_targeting
32
+ - supports_collection_list_targeting
33
+ examples:
34
+ - "Sellers that validate inventory against buyer-supplied lists"
35
+
36
+ caller:
37
+ role: buyer_agent
38
+ example: "Pinnacle Agency (buyer)"
39
+
40
+ prerequisites:
41
+ description: |
42
+ The seller must resolve PropertyListReference / CollectionListReference against
43
+ its own inventory and report a truthful outcome when nothing matches.
44
+ test_kit: "test-kits/acme-outdoor.yaml"
45
+
46
+ phases:
47
+ - id: discover
48
+ title: "Discover products"
49
+ steps:
50
+ - id: get_products_brief
51
+ title: "Discover products"
52
+ task: get_products
53
+ schema_ref: "media-buy/get-products-request.json"
54
+ response_schema_ref: "media-buy/get-products-response.json"
55
+ doc_ref: "/media-buy/task-reference/get_products"
56
+ comply_scenario: full_sales_flow
57
+ stateful: false
58
+ expected: |
59
+ Return products the seller carries.
60
+ sample_request:
61
+ buying_mode: "brief"
62
+ brief: "Video inventory on outdoor lifestyle programming. Q3 flight."
63
+ account:
64
+ brand:
65
+ domain: "acmeoutdoor.example"
66
+ operator: "pinnacle-agency.example"
67
+
68
+ context:
69
+ correlation_id: "inventory_list_no_match--get_products_brief"
70
+ context_outputs:
71
+ - path: "products[0].product_id"
72
+ key: "product_id"
73
+ - path: "products[0].pricing_options[0].pricing_option_id"
74
+ key: "pricing_option_id"
75
+ validations:
76
+ - check: response_schema
77
+ description: "Response matches get-products-response.json schema"
78
+
79
+ - id: no_match_attempt
80
+ title: "Create buy with lists that match no inventory"
81
+ narrative: |
82
+ The buyer references the no-match property list and the no-match collection
83
+ list. Neither list resolves to anything in the seller's catalog. The seller
84
+ must either (a) accept the buy and surface a zero-delivery expectation, or
85
+ (b) reject it with an informative error. Silent success with undefined
86
+ delivery behaviour is not acceptable.
87
+
88
+ steps:
89
+ - id: create_buy_no_match
90
+ title: "create_media_buy against empty intersections"
91
+ task: create_media_buy
92
+ schema_ref: "media-buy/create-media-buy-request.json"
93
+ response_schema_ref: "media-buy/create-media-buy-response.json"
94
+ doc_ref: "/media-buy/task-reference/create_media_buy"
95
+ comply_scenario: create_media_buy
96
+ stateful: true
97
+ expected: |
98
+ One of two acceptable outcomes:
99
+
100
+ 1. Buy accepted with zero-forecast reporting — status may be
101
+ pending_creatives/pending_start/active, but the seller returns
102
+ packages with forecast indicating zero deliverable inventory and
103
+ a message explaining the list mismatch.
104
+
105
+ 2. Buy rejected with an informative error — typically
106
+ INSUFFICIENT_INVENTORY or INVALID_TARGETING — including findings
107
+ that identify which list(s) matched nothing.
108
+
109
+ What is NOT acceptable: a silently-successful buy with normal forecast
110
+ numbers, or a crash / non-AdCP error shape.
111
+
112
+ sample_request:
113
+ brand:
114
+ domain: "acmeoutdoor.example"
115
+ account:
116
+ brand:
117
+ domain: "acmeoutdoor.example"
118
+ operator: "pinnacle-agency.example"
119
+ idempotency_key: "inventory-list-no-match-v1"
120
+ start_time: "2026-07-01T00:00:00Z"
121
+ end_time: "2026-09-30T23:59:59Z"
122
+ packages:
123
+ - product_id: "$context.product_id"
124
+ budget: 10000
125
+ pricing_option_id: "$context.pricing_option_id"
126
+ targeting_overlay:
127
+ property_list:
128
+ agent_url: "https://governance.pinnacle-agency.example"
129
+ list_id: "acme_outdoor_no_match_v1"
130
+ collection_list:
131
+ agent_url: "https://governance.pinnacle-agency.example"
132
+ list_id: "acme_outdoor_no_match_collections_v1"
133
+
134
+ context:
135
+ correlation_id: "inventory_list_no_match--create_buy_no_match"
136
+ validations:
137
+ - check: field_present
138
+ path: "context"
139
+ description: "Response echoes back the context object (success or error)"
140
+ - check: field_value
141
+ path: "context.correlation_id"
142
+ value: "inventory_list_no_match--create_buy_no_match"
143
+ description: "Context correlation_id returned unchanged"