@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,504 @@
1
+ id: sales_guaranteed
2
+ version: "1.0.0"
3
+ title: "Guaranteed media buy with human IO approval"
4
+ protocol: media-buy
5
+ category: sales_guaranteed
6
+ summary: "Seller agent that requires human-in-the-loop IO signing before guaranteed media buys go live."
7
+ track: media_buy
8
+ required_tools:
9
+ - get_products
10
+ - create_media_buy
11
+ requires_scenarios:
12
+ - media_buy_seller/refine_products
13
+ - media_buy_seller/delivery_reporting
14
+ - media_buy_seller/measurement_terms_rejected
15
+ - media_buy_seller/pending_creatives_to_start
16
+ - media_buy_seller/inventory_list_targeting
17
+ - media_buy_seller/inventory_list_no_match
18
+ - media_buy_seller/invalid_transitions
19
+
20
+ # Cross-step assertion (adcp#2664). status.monotonic rejects resource
21
+ # status transitions observed across steps that aren't on the spec
22
+ # lifecycle graph — e.g. active → pending_creatives on a media_buy.
23
+ invariants:
24
+ - status.monotonic
25
+
26
+ narrative: |
27
+ You run a sell-side platform that requires human approval before guaranteed media buys go
28
+ live. When a buyer creates a guaranteed buy, your platform returns an A2A task in the
29
+ submitted state with a task_id — no media_buy_id is issued yet because IO signing may fail.
30
+ A human reviewer on your side reviews the deal terms and signs the IO through your own
31
+ internal workflow.
32
+
33
+ The buyer either polls tasks/get with the task_id or configures a push_notification_config
34
+ webhook to receive a callback when IO signing completes. Only on task completion does your
35
+ platform issue a media_buy_id and the final CreateMediaBuy result; the buyer then calls
36
+ get_media_buys to confirm the buy is active and sync creatives.
37
+
38
+ This storyboard isolates the guaranteed approval path — the async handshake between agent
39
+ automation and human decision-making that makes guaranteed buys work in practice. IO review
40
+ is modelled entirely at the A2A task layer; there is no interim "pending_approval" media buy
41
+ status (that value only exists on Account.status, not MediaBuy.status).
42
+
43
+ agent:
44
+ interaction_model: media_buy_seller
45
+ capabilities:
46
+ - sells_media
47
+ - supports_guaranteed
48
+ - requires_io_approval
49
+ examples:
50
+ - "Premium publisher with IO requirements"
51
+ - "Retail media network with sales approval"
52
+ - "CTV platform with guaranteed deals"
53
+
54
+ caller:
55
+ role: buyer_agent
56
+ example: "Scope3 (DSP)"
57
+
58
+ prerequisites:
59
+ description: |
60
+ The caller needs a brand identity and operator credentials for account setup.
61
+ The test kit provides a sample brand (Acme Outdoor) with campaign parameters
62
+ suitable for testing the guaranteed approval flow.
63
+ test_kit: "test-kits/acme-outdoor.yaml"
64
+ controller_seeding: true
65
+
66
+ fixtures:
67
+ products:
68
+ - product_id: "sports_preroll_q2_guaranteed"
69
+ delivery_type: "guaranteed"
70
+ channels: ["video"]
71
+ format_ids:
72
+ - id: "video_30s"
73
+ - product_id: "outdoor_ctv_q2_guaranteed"
74
+ delivery_type: "guaranteed"
75
+ channels: ["ctv"]
76
+ format_ids:
77
+ - id: "video_30s"
78
+ pricing_options:
79
+ - product_id: "sports_preroll_q2_guaranteed"
80
+ pricing_option_id: "cpm_guaranteed_fixed"
81
+ pricing_model: "cpm"
82
+ currency: "USD"
83
+ fixed_price: 35.0
84
+ - product_id: "outdoor_ctv_q2_guaranteed"
85
+ pricing_option_id: "cpm_guaranteed_fixed"
86
+ pricing_model: "cpm"
87
+ currency: "USD"
88
+ fixed_price: 45.0
89
+
90
+ phases:
91
+ - id: capability_discovery
92
+ title: "Capability discovery"
93
+ narrative: |
94
+ The buyer calls get_adcp_capabilities to confirm the agent supports media buying before sending briefs or creating buys.
95
+
96
+ steps:
97
+ - id: get_capabilities
98
+ title: "Check agent capabilities"
99
+ narrative: |
100
+ Verify that the agent declares the expected protocol support before
101
+ proceeding with domain-specific operations.
102
+ task: get_adcp_capabilities
103
+ schema_ref: "protocol/get-adcp-capabilities-request.json"
104
+ response_schema_ref: "protocol/get-adcp-capabilities-response.json"
105
+ doc_ref: "/protocol/get_adcp_capabilities"
106
+ comply_scenario: capability_discovery
107
+ stateful: false
108
+ expected: |
109
+ Return capabilities declaring media_buy in supported_protocols, confirming the agent sells media.
110
+ sample_request:
111
+ context:
112
+ correlation_id: "sales_guaranteed--get_capabilities"
113
+ validations:
114
+ - check: response_schema
115
+ description: "Response matches get-adcp-capabilities-response.json schema"
116
+ - check: field_present
117
+ path: "supported_protocols"
118
+ description: "Agent declares supported protocols"
119
+
120
+ - check: field_present
121
+ path: "context"
122
+ description: "Response echoes back the context object"
123
+ - check: field_value
124
+ path: "context.correlation_id"
125
+ value: "sales_guaranteed--get_capabilities"
126
+ description: "Context correlation_id returned unchanged"
127
+ - id: account_setup
128
+ title: "Account setup"
129
+ narrative: |
130
+ Before buying anything, the buyer establishes an account relationship with
131
+ your platform. This is the handshake: the buyer tells you which brand and
132
+ agency (operator) they represent, and you return an account ID, status, and
133
+ any setup requirements.
134
+
135
+ steps:
136
+ - id: sync_accounts
137
+ title: "Establish account relationship"
138
+ narrative: |
139
+ The buyer registers their brand and operator with your platform. This is
140
+ the first call in any new relationship. Your platform validates the request,
141
+ provisions the account, and returns its status.
142
+ task: sync_accounts
143
+ schema_ref: "account/sync-accounts-request.json"
144
+ response_schema_ref: "account/sync-accounts-response.json"
145
+ doc_ref: "/accounts/tasks/sync_accounts"
146
+ stateful: true
147
+ expected: |
148
+ Return the account with:
149
+ - account_id: your platform's identifier for this relationship
150
+ - action: created or updated
151
+ - status: active or pending_approval
152
+ - account_scope: operator, brand, operator_brand, or agent
153
+ - setup: URL and message if pending_approval
154
+ - payment_terms: net_30, prepay, etc.
155
+
156
+ sample_request:
157
+ accounts:
158
+ - brand:
159
+ domain: "acmeoutdoor.example"
160
+ operator: "pinnacle-agency.example"
161
+ billing: "operator"
162
+ payment_terms: "net_30"
163
+
164
+ idempotency_key: "$generate:uuid_v4#sales_guaranteed_account_setup_sync_accounts"
165
+ context:
166
+ correlation_id: "sales_guaranteed--sync_accounts"
167
+ validations:
168
+ - check: response_schema
169
+ description: "Response matches sync-accounts-response.json schema"
170
+ - check: field_present
171
+ path: "accounts[0].account_id"
172
+ description: "Account has a platform-assigned ID"
173
+ - check: field_present
174
+ path: "accounts[0].status"
175
+ description: "Account has a status (active or pending_approval)"
176
+
177
+ - check: field_present
178
+ path: "context"
179
+ description: "Response echoes back the context object"
180
+ - check: field_value
181
+ path: "context.correlation_id"
182
+ value: "sales_guaranteed--sync_accounts"
183
+ description: "Context correlation_id returned unchanged"
184
+ - id: product_discovery
185
+ title: "Discover guaranteed products"
186
+ narrative: |
187
+ The buyer sends a brief to discover your guaranteed inventory. The emphasis
188
+ here is on products with delivery_type: guaranteed — fixed-price, reserved
189
+ inventory that requires an IO commitment. Your platform returns products with
190
+ pricing, delivery forecasts, and SLA commitments.
191
+
192
+ steps:
193
+ - id: get_products_brief
194
+ title: "Send a brief targeting guaranteed inventory"
195
+ narrative: |
196
+ The buyer describes what they want, emphasizing guaranteed delivery. Your
197
+ platform returns products with delivery_type: guaranteed, including SLA
198
+ commitments, minimum spend requirements, and IO terms.
199
+ task: get_products
200
+ schema_ref: "media-buy/get-products-request.json"
201
+ response_schema_ref: "media-buy/get-products-response.json"
202
+ doc_ref: "/media-buy/task-reference/get_products"
203
+ comply_scenario: full_sales_flow
204
+ stateful: false
205
+ expected: |
206
+ Return guaranteed products matching the brief. Each product should include:
207
+ - product_id: unique identifier
208
+ - name and description
209
+ - delivery_type: guaranteed
210
+ - pricing_models: fixed CPM or flat-rate pricing
211
+ - forecast: committed impressions with SLA guarantees
212
+ - creative_format_ids: required creative formats
213
+ - minimum_spend or commitment terms if applicable
214
+
215
+ sample_request:
216
+ buying_mode: "brief"
217
+ brief: "Guaranteed premium video on sports and outdoor lifestyle publishers. Q2 flight, $50K budget. Adults 25-54, US only. Need completion rate SLA."
218
+ account:
219
+ brand:
220
+ domain: "acmeoutdoor.example"
221
+ operator: "pinnacle-agency.example"
222
+
223
+ context:
224
+ correlation_id: "sales_guaranteed--get_products_brief"
225
+ validations:
226
+ - check: response_schema
227
+ description: "Response matches get-products-response.json schema"
228
+ - check: field_present
229
+ path: "products"
230
+ description: "Response contains a products array"
231
+ - check: field_present
232
+ path: "products[0].product_id"
233
+ description: "Each product has a product_id"
234
+ - check: field_present
235
+ path: "products[0].delivery_type"
236
+ description: "Each product declares delivery_type: guaranteed"
237
+
238
+ - check: field_present
239
+ path: "context"
240
+ description: "Response echoes back the context object"
241
+ - check: field_value
242
+ path: "context.correlation_id"
243
+ value: "sales_guaranteed--get_products_brief"
244
+ description: "Context correlation_id returned unchanged"
245
+ - check: field_present
246
+ path: "products[0].format_ids"
247
+ description: "Products include format_ids for creative requirements"
248
+ - check: field_present
249
+ path: "products[0].format_ids[0].agent_url"
250
+ description: "Format IDs include agent_url — must match this agent's URL"
251
+ - check: field_present
252
+ path: "products[0].format_ids[0].id"
253
+ description: "Format IDs include id — must be accepted back in sync_creatives"
254
+ - id: create_buy_submitted
255
+ title: "Create guaranteed buy (task submitted for approval)"
256
+ narrative: |
257
+ The buyer creates a guaranteed media buy. Because your platform requires human
258
+ IO signing, the A2A task transitions to submitted rather than completed. The
259
+ buyer gets back a task_id and configures a webhook (or polls tasks/get) to be
260
+ notified when IO review finishes.
261
+
262
+ steps:
263
+ - id: create_media_buy
264
+ title: "Create a guaranteed media buy"
265
+ narrative: |
266
+ The buyer commits to guaranteed products with budgets and flight dates. Your
267
+ platform accepts the request but does not create the media buy yet. Instead,
268
+ the A2A task enters the submitted state — no media_buy_id is issued because
269
+ IO signing may fail. The buyer receives a task_id to watch.
270
+
271
+ The buyer includes push_notification_config so your platform can call back
272
+ when the IO is signed (completed) or rejected (failed).
273
+ task: create_media_buy
274
+ schema_ref: "media-buy/create-media-buy-request.json"
275
+ response_schema_ref: "media-buy/create-media-buy-response.json"
276
+ doc_ref: "/media-buy/task-reference/create_media_buy"
277
+ comply_scenario: create_media_buy
278
+ stateful: true
279
+ expected: |
280
+ Return an A2A task envelope in submitted state:
281
+ - status: submitted (task-level — the CreateMediaBuy success artifact is not yet produced)
282
+ - task_id / taskId: the handle the buyer polls or receives webhooks on
283
+ - message (optional): human-readable explanation (e.g., "Awaiting IO signature from sales team; typical turnaround 2–4 hours")
284
+
285
+ Do NOT return media_buy_id or packages yet — those land on the task's final artifact
286
+ when the task transitions to completed. Do NOT return completed status for guaranteed
287
+ buys that require IO signing. Do NOT use a "pending_approval" media buy status; that
288
+ value is not in MediaBuy.status — IO review is modelled at the task layer only.
289
+
290
+ sample_request:
291
+ brand:
292
+ domain: "acmeoutdoor.example"
293
+ account:
294
+ brand:
295
+ domain: "acmeoutdoor.example"
296
+ operator: "pinnacle-agency.example"
297
+ start_time: "2026-04-01T00:00:00Z"
298
+ end_time: "2026-06-30T23:59:59Z"
299
+ packages:
300
+ - product_id: "sports_preroll_q2_guaranteed"
301
+ budget: 30000
302
+ pricing_option_id: "cpm_guaranteed_fixed"
303
+ creative_assignments:
304
+ - creative_id: "video_30s_trail_pro"
305
+ - product_id: "outdoor_ctv_q2_guaranteed"
306
+ budget: 20000
307
+ pricing_option_id: "cpm_guaranteed_fixed"
308
+ push_notification_config:
309
+ url: "https://buyer.example/webhooks/adcp"
310
+ authentication:
311
+ schemes:
312
+ - "HMAC-SHA256"
313
+ credentials: "sales-guaranteed-webhook-secret-token"
314
+
315
+ idempotency_key: "$generate:uuid_v4#sales_guaranteed_create_buy_submitted_create_media_buy"
316
+ context:
317
+ correlation_id: "sales_guaranteed--create_media_buy"
318
+ context_outputs:
319
+ - name: media_buy_id
320
+ path: "task_completion.media_buy_id"
321
+ validations:
322
+ - check: response_schema
323
+ description: "Response matches create-media-buy-response.json schema"
324
+
325
+ - check: field_present
326
+ path: "context"
327
+ description: "Response echoes back the context object"
328
+ - check: field_value
329
+ path: "context.correlation_id"
330
+ value: "sales_guaranteed--create_media_buy"
331
+ description: "Context correlation_id returned unchanged"
332
+ - id: confirm_active
333
+ title: "Confirm active after IO signing"
334
+ narrative: |
335
+ The human on your side reviews and signs the IO through your internal workflow.
336
+ Your platform then transitions the A2A task to completed and emits the final
337
+ CreateMediaBuy result — including the newly-issued media_buy_id — to the buyer's
338
+ push_notification webhook (or to the next tasks/get poll). The buyer now calls
339
+ get_media_buys with that media_buy_id and sees the buy active. There is no
340
+ intermediate "pending_approval" media buy status in this flow; the buy does not
341
+ exist as a queryable MediaBuy until the task completes.
342
+
343
+ steps:
344
+ - id: get_media_buys_active
345
+ title: "Check media buy status (active)"
346
+ narrative: |
347
+ After the task completes and your platform issues a media_buy_id, the buyer
348
+ calls get_media_buys to confirm the buy is live. Your platform returns active
349
+ (or pending_creatives when creatives are still outstanding), indicating the
350
+ buy is approved and inventory is reserved.
351
+ task: get_media_buys
352
+ schema_ref: "media-buy/get-media-buys-request.json"
353
+ response_schema_ref: "media-buy/get-media-buys-response.json"
354
+ doc_ref: "/media-buy/task-reference/get_media_buys"
355
+ comply_scenario: media_buy_lifecycle
356
+ stateful: true
357
+ expected: |
358
+ Return the media buy in active status:
359
+ - media_buy_id: matches the buy created earlier
360
+ - status: active (IO has been signed)
361
+ - confirmed_at: timestamp when the IO was signed
362
+ - packages: line items with reserved inventory
363
+ - valid_actions: updated for active state (creative sync, pause, etc.)
364
+
365
+ sample_request:
366
+ account:
367
+ brand:
368
+ domain: "acmeoutdoor.example"
369
+ operator: "pinnacle-agency.example"
370
+ media_buy_ids:
371
+ - "$context.media_buy_id"
372
+
373
+ context:
374
+ correlation_id: "sales_guaranteed--get_media_buys_active"
375
+ validations:
376
+ - check: response_schema
377
+ description: "Response matches get-media-buys-response.json schema"
378
+ - check: field_present
379
+ path: "media_buys[0].status"
380
+ description: "Media buy status is active"
381
+ - check: field_present
382
+ path: "media_buys[0].confirmed_at"
383
+ description: "Active buy includes a confirmed_at timestamp"
384
+
385
+ - check: field_present
386
+ path: "context"
387
+ description: "Response echoes back the context object"
388
+ - check: field_value
389
+ path: "context.correlation_id"
390
+ value: "sales_guaranteed--get_media_buys_active"
391
+ description: "Context correlation_id returned unchanged"
392
+ - id: creative_sync
393
+ title: "Creative sync"
394
+ narrative: |
395
+ With the IO signed and the media buy active, the buyer syncs creative assets
396
+ to your platform. Each package has creative format requirements that the buyer
397
+ discovered during product discovery.
398
+
399
+ steps:
400
+ - id: sync_creatives
401
+ title: "Push creative assets"
402
+ narrative: |
403
+ The buyer uploads creative assets for the confirmed packages. Your platform
404
+ validates each creative against the format specs and returns per-creative status.
405
+ task: sync_creatives
406
+ schema_ref: "creative/sync-creatives-request.json"
407
+ response_schema_ref: "creative/sync-creatives-response.json"
408
+ doc_ref: "/creative/task-reference/sync_creatives"
409
+ comply_scenario: creative_sync
410
+ stateful: true
411
+ expected: |
412
+ Accept and validate creatives:
413
+ - Per-creative action: created or updated
414
+ - Per-creative status: accepted, pending_review, or rejected
415
+ - Validation errors for rejected creatives
416
+
417
+ sample_request:
418
+ account:
419
+ brand:
420
+ domain: "acmeoutdoor.example"
421
+ operator: "pinnacle-agency.example"
422
+ creatives:
423
+ - creative_id: "video_30s_trail_pro"
424
+ name: "Trail Pro 3000 - 30s CTV Spot"
425
+ format_id:
426
+ agent_url: "https://your-platform.example.com"
427
+ id: "ssai_30s"
428
+ assets:
429
+ video:
430
+ asset_type: "video"
431
+ url: "https://cdn.pinnacle-agency.example/trail-pro-30s.mp4"
432
+ width: 1920
433
+ height: 1080
434
+ duration_ms: 30000
435
+ mime_type: "video/mp4"
436
+
437
+ idempotency_key: "$generate:uuid_v4#sales_guaranteed_creative_sync_sync_creatives"
438
+ context:
439
+ correlation_id: "sales_guaranteed--sync_creatives"
440
+ validations:
441
+ - check: response_schema
442
+ description: "Response matches sync-creatives-response.json schema"
443
+ - check: field_present
444
+ path: "creatives[0].action"
445
+ description: "Each creative has an action (created/updated)"
446
+
447
+ - check: field_present
448
+ path: "context"
449
+ description: "Response echoes back the context object"
450
+ - check: field_value
451
+ path: "context.correlation_id"
452
+ value: "sales_guaranteed--sync_creatives"
453
+ description: "Context correlation_id returned unchanged"
454
+ - id: delivery_monitoring
455
+ title: "Delivery and reporting"
456
+ narrative: |
457
+ The campaign is live with guaranteed delivery commitments. The buyer monitors
458
+ delivery to ensure the seller is meeting the SLA guarantees from the IO.
459
+
460
+ steps:
461
+ - id: get_delivery
462
+ title: "Check delivery metrics"
463
+ narrative: |
464
+ The buyer requests delivery data for the active guaranteed media buy. Your
465
+ platform returns performance metrics with pacing against the guaranteed
466
+ commitment.
467
+ task: get_media_buy_delivery
468
+ schema_ref: "media-buy/get-media-buy-delivery-request.json"
469
+ response_schema_ref: "media-buy/get-media-buy-delivery-response.json"
470
+ doc_ref: "/media-buy/task-reference/get_media_buy_delivery"
471
+ comply_scenario: reporting_flow
472
+ stateful: true
473
+ expected: |
474
+ Return delivery metrics for the guaranteed media buy:
475
+ - Per-package delivery: impressions, clicks, spend, completion rates
476
+ - Pacing against guaranteed commitment: on track, ahead, behind
477
+ - Budget utilization: spent vs. committed
478
+ - SLA compliance: completion rate vs. guaranteed threshold
479
+
480
+ sample_request:
481
+ account:
482
+ brand:
483
+ domain: "acmeoutdoor.example"
484
+ operator: "pinnacle-agency.example"
485
+ media_buy_ids:
486
+ - "$context.media_buy_id"
487
+ include_package_daily_breakdown: true
488
+
489
+ context:
490
+ correlation_id: "sales_guaranteed--get_delivery"
491
+ validations:
492
+ - check: response_schema
493
+ description: "Response matches get-media-buy-delivery-response.json schema"
494
+ - check: field_present
495
+ path: "media_buy_deliveries"
496
+ description: "Response contains media buy delivery data"
497
+
498
+ - check: field_present
499
+ path: "context"
500
+ description: "Response echoes back the context object"
501
+ - check: field_value
502
+ path: "context.correlation_id"
503
+ value: "sales_guaranteed--get_delivery"
504
+ description: "Context correlation_id returned unchanged"