@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,520 @@
1
+ id: sales_proposal_mode
2
+ version: "1.0.0"
3
+ title: "Media buy via proposal acceptance"
4
+ protocol: media-buy
5
+ category: sales_proposal_mode
6
+ summary: "Seller agent that generates curated media plan proposals the buyer can review, refine, and accept."
7
+ track: media_buy
8
+ required_tools:
9
+ - get_products
10
+ - create_media_buy
11
+ requires_scenarios:
12
+ - media_buy_seller/proposal_finalize
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. committed → draft on a proposal or active →
23
+ # pending_creatives on a media_buy.
24
+ invariants:
25
+ - status.monotonic
26
+
27
+ narrative: |
28
+ Your seller generates curated media plan proposals. The buyer sends a brief, your platform
29
+ returns products alongside proposals — curated bundles with budget allocations and rationale
30
+ for each recommendation. The buyer reviews, optionally refines, and then accepts a proposal
31
+ as-is instead of manually building packages.
32
+
33
+ Proposal mode is the recommended flow for buyers who trust the seller's product
34
+ recommendations. Instead of the buyer cherry-picking individual products and assembling
35
+ packages, the seller's AI builds an optimized media plan that the buyer can accept with a
36
+ single call.
37
+
38
+ This storyboard walks through the proposal lifecycle: brief, proposal generation, optional
39
+ refinement, acceptance, creative sync, and delivery monitoring.
40
+
41
+ agent:
42
+ interaction_model: media_buy_seller
43
+ capabilities:
44
+ - sells_media
45
+ - accepts_briefs
46
+ - generates_proposals
47
+ examples:
48
+ - "Full-service publisher with AI planning"
49
+ - "Retail media network with curated packages"
50
+ - "Premium video platform with proposal engine"
51
+
52
+ caller:
53
+ role: buyer_agent
54
+ example: "Pinnacle Agency (buyer)"
55
+
56
+ prerequisites:
57
+ description: |
58
+ The caller needs a brand identity and operator credentials for account setup.
59
+ The test kit provides a sample brand (Acme Outdoor) with campaign parameters
60
+ suitable for testing the proposal acceptance flow.
61
+ test_kit: "test-kits/acme-outdoor.yaml"
62
+
63
+ phases:
64
+ - id: capability_discovery
65
+ title: "Capability discovery"
66
+ narrative: |
67
+ The buyer calls get_adcp_capabilities to confirm the agent supports media buying before sending briefs or creating buys.
68
+
69
+ steps:
70
+ - id: get_capabilities
71
+ title: "Check agent capabilities"
72
+ narrative: |
73
+ Verify that the agent declares the expected protocol support before
74
+ proceeding with domain-specific operations.
75
+ task: get_adcp_capabilities
76
+ schema_ref: "protocol/get-adcp-capabilities-request.json"
77
+ response_schema_ref: "protocol/get-adcp-capabilities-response.json"
78
+ doc_ref: "/protocol/get_adcp_capabilities"
79
+ comply_scenario: capability_discovery
80
+ stateful: false
81
+ expected: |
82
+ Return capabilities declaring media_buy in supported_protocols, confirming the agent sells media.
83
+ sample_request:
84
+ context:
85
+ correlation_id: "sales_proposal_mode--get_capabilities"
86
+ validations:
87
+ - check: response_schema
88
+ description: "Response matches get-adcp-capabilities-response.json schema"
89
+ - check: field_present
90
+ path: "supported_protocols"
91
+ description: "Agent declares supported protocols"
92
+
93
+ - check: field_present
94
+ path: "context"
95
+ description: "Response echoes back the context object"
96
+ - check: field_value
97
+ path: "context.correlation_id"
98
+ value: "sales_proposal_mode--get_capabilities"
99
+ description: "Context correlation_id returned unchanged"
100
+ - id: account_setup
101
+ title: "Account setup"
102
+ narrative: |
103
+ The buyer establishes an account relationship with your platform before
104
+ requesting proposals.
105
+
106
+ steps:
107
+ - id: sync_accounts
108
+ title: "Establish account relationship"
109
+ narrative: |
110
+ The buyer registers their brand and operator with your platform.
111
+ task: sync_accounts
112
+ schema_ref: "account/sync-accounts-request.json"
113
+ response_schema_ref: "account/sync-accounts-response.json"
114
+ doc_ref: "/accounts/tasks/sync_accounts"
115
+ stateful: true
116
+ expected: |
117
+ Return the account with:
118
+ - account_id: your platform's identifier for this relationship
119
+ - action: created or updated
120
+ - status: active or pending_approval
121
+ - payment_terms: net_30, prepay, etc.
122
+
123
+ sample_request:
124
+ accounts:
125
+ - brand:
126
+ domain: "acmeoutdoor.example"
127
+ operator: "pinnacle-agency.example"
128
+ billing: "operator"
129
+ payment_terms: "net_30"
130
+
131
+ idempotency_key: "$generate:uuid_v4#sales_proposal_mode_account_setup_sync_accounts"
132
+ context:
133
+ correlation_id: "sales_proposal_mode--sync_accounts"
134
+ validations:
135
+ - check: response_schema
136
+ description: "Response matches sync-accounts-response.json schema"
137
+ - check: field_present
138
+ path: "accounts[0].account_id"
139
+ description: "Account has a platform-assigned ID"
140
+
141
+ - check: field_present
142
+ path: "context"
143
+ description: "Response echoes back the context object"
144
+ - check: field_value
145
+ path: "context.correlation_id"
146
+ value: "sales_proposal_mode--sync_accounts"
147
+ description: "Context correlation_id returned unchanged"
148
+ - id: brief_with_proposals
149
+ title: "Brief with proposals"
150
+ narrative: |
151
+ The buyer sends a brief. Your platform returns products and — because you support
152
+ proposal mode — also returns proposals: curated media plans with budget allocations,
153
+ product selections, and rationale for each recommendation. The buyer can review
154
+ multiple proposals side by side.
155
+
156
+ steps:
157
+ - id: get_products_brief
158
+ title: "Send a brief and receive proposals"
159
+ narrative: |
160
+ The buyer describes what they want. Your platform returns products alongside
161
+ one or more proposals. Each proposal bundles products with budget allocations
162
+ and explains why those products were selected and how the budget was distributed.
163
+
164
+ Proposals give the buyer a ready-to-accept media plan instead of requiring
165
+ manual package assembly.
166
+ task: get_products
167
+ schema_ref: "media-buy/get-products-request.json"
168
+ response_schema_ref: "media-buy/get-products-response.json"
169
+ doc_ref: "/media-buy/task-reference/get_products"
170
+ comply_scenario: full_sales_flow
171
+ stateful: false
172
+ expected: |
173
+ Return products and proposals matching the brief:
174
+ - products: individual products with pricing and forecasts
175
+ - proposals: curated media plans, each containing:
176
+ - proposal_id: unique identifier for this proposal
177
+ - name: descriptive label (e.g., "Balanced Reach Plan")
178
+ - budget_allocations: how the total budget is split across products
179
+ - rationale: why these products were selected and how the budget was distributed
180
+ - total_budget: sum of allocations
181
+ - forecast: aggregate impressions, reach, frequency
182
+
183
+ sample_request:
184
+ buying_mode: "brief"
185
+ brief: "Premium video and display across outdoor lifestyle and sports. Q2 flight, $50K total budget. Adults 25-54, US and Canada. Looking for a balanced plan across CTV, online video, and display."
186
+ account:
187
+ brand:
188
+ domain: "acmeoutdoor.example"
189
+ operator: "pinnacle-agency.example"
190
+
191
+ context:
192
+ correlation_id: "sales_proposal_mode--get_products_brief"
193
+ validations:
194
+ - check: response_schema
195
+ description: "Response matches get-products-response.json schema"
196
+ - check: field_present
197
+ path: "products"
198
+ description: "Response contains a products array"
199
+ - check: field_present
200
+ path: "proposals"
201
+ description: "Response contains a proposals array"
202
+ - check: field_present
203
+ path: "proposals[0].proposal_id"
204
+ description: "Each proposal has a proposal_id"
205
+
206
+ - check: field_present
207
+ path: "context"
208
+ description: "Response echoes back the context object"
209
+ - check: field_value
210
+ path: "context.correlation_id"
211
+ value: "sales_proposal_mode--get_products_brief"
212
+ description: "Context correlation_id returned unchanged"
213
+ - check: field_present
214
+ path: "products[0].format_ids"
215
+ description: "Products include format_ids for creative requirements"
216
+ - check: field_present
217
+ path: "products[0].format_ids[0].agent_url"
218
+ description: "Format IDs include agent_url — must match this agent's URL"
219
+ - check: field_present
220
+ path: "products[0].format_ids[0].id"
221
+ description: "Format IDs include id — must be accepted back in sync_creatives"
222
+ - id: review_refine
223
+ title: "Refine a proposal"
224
+ narrative: |
225
+ The buyer reviews the proposals and wants to adjust one. They call get_products
226
+ in refine mode targeting a specific proposal_id. The refinement might adjust
227
+ budget splits, swap a product, or add constraints. Your platform returns the
228
+ updated proposal.
229
+
230
+ steps:
231
+ - id: get_products_refine
232
+ title: "Refine a specific proposal"
233
+ narrative: |
234
+ The buyer targets a specific proposal for refinement. They reference the
235
+ proposal_id and describe what they want to change. Your platform applies
236
+ the refinements to that proposal and returns the updated version.
237
+ task: get_products
238
+ schema_ref: "media-buy/get-products-request.json"
239
+ response_schema_ref: "media-buy/get-products-response.json"
240
+ doc_ref: "/media-buy/task-reference/get_products"
241
+ comply_scenario: full_sales_flow
242
+ stateful: true
243
+ expected: |
244
+ Return the refined proposal:
245
+ - proposals: updated proposal reflecting the requested changes
246
+ - refinement_applied: how each refinement was handled
247
+ - Updated budget allocations, product selections, and forecasts
248
+ - products: updated product set if products were swapped
249
+
250
+ sample_request:
251
+ buying_mode: "refine"
252
+ refine:
253
+ - scope: "proposal"
254
+ proposal_id: "balanced_reach_q2"
255
+ ask: "Shift 60% of budget to CTV. Drop the display product and redistribute that budget to video."
256
+ - scope: "request"
257
+ ask: "All products must support frequency capping at 3 per day."
258
+ account:
259
+ brand:
260
+ domain: "acmeoutdoor.example"
261
+ operator: "pinnacle-agency.example"
262
+
263
+ context:
264
+ correlation_id: "sales_proposal_mode--get_products_refine"
265
+ validations:
266
+ - check: response_schema
267
+ description: "Response matches get-products-response.json schema"
268
+ - check: field_present
269
+ path: "proposals"
270
+ description: "Response contains updated proposals"
271
+
272
+ - check: field_present
273
+ path: "context"
274
+ description: "Response echoes back the context object"
275
+ - check: field_value
276
+ path: "context.correlation_id"
277
+ value: "sales_proposal_mode--get_products_refine"
278
+ description: "Context correlation_id returned unchanged"
279
+ - check: field_present
280
+ path: "products[0].format_ids"
281
+ description: "Products include format_ids for creative requirements"
282
+ - check: field_present
283
+ path: "products[0].format_ids[0].agent_url"
284
+ description: "Format IDs include agent_url — must match this agent's URL"
285
+ - check: field_present
286
+ path: "products[0].format_ids[0].id"
287
+ description: "Format IDs include id — must be accepted back in sync_creatives"
288
+ - id: accept_proposal
289
+ title: "Accept the proposal"
290
+ narrative: |
291
+ The buyer is satisfied with the refined proposal and accepts it by creating a
292
+ media buy with the proposal_id. Instead of specifying individual packages, the
293
+ buyer passes the proposal_id and total_budget. Your platform converts the proposal
294
+ into an active media buy with the exact product selections and budget allocations
295
+ from the proposal.
296
+
297
+ steps:
298
+ - id: create_media_buy
299
+ title: "Create a media buy from proposal"
300
+ narrative: |
301
+ The buyer accepts a proposal by passing proposal_id to create_media_buy. The
302
+ buyer does NOT specify a packages array — the platform uses the proposal's
303
+ product selections and budget allocations to build the packages automatically.
304
+
305
+ This is the key difference from manual package creation: the buyer trusts the
306
+ seller's recommendation and accepts the plan as-is.
307
+ task: create_media_buy
308
+ schema_ref: "media-buy/create-media-buy-request.json"
309
+ response_schema_ref: "media-buy/create-media-buy-response.json"
310
+ doc_ref: "/media-buy/task-reference/create_media_buy"
311
+ comply_scenario: create_media_buy
312
+ stateful: true
313
+ expected: |
314
+ Convert the proposal into an active media buy:
315
+ - media_buy_id: your platform's identifier
316
+ - status: active
317
+ - confirmed_at: timestamp
318
+ - packages: line items derived from the proposal's budget allocations
319
+ - proposal_id: echoed back to confirm which proposal was accepted
320
+ - valid_actions: creative sync, pause, get_delivery
321
+
322
+ sample_request:
323
+ brand:
324
+ domain: "acmeoutdoor.example"
325
+ account:
326
+ brand:
327
+ domain: "acmeoutdoor.example"
328
+ operator: "pinnacle-agency.example"
329
+ proposal_id: "balanced_reach_q2"
330
+ total_budget:
331
+ amount: 50000
332
+ currency: "USD"
333
+ start_time: "2026-04-01T00:00:00Z"
334
+ end_time: "2026-06-30T23:59:59Z"
335
+
336
+ idempotency_key: "$generate:uuid_v4#sales_proposal_mode_accept_proposal_create_media_buy"
337
+ context:
338
+ correlation_id: "sales_proposal_mode--create_media_buy"
339
+ context_outputs:
340
+ - name: media_buy_id
341
+ path: "media_buy_id"
342
+ validations:
343
+ - check: response_schema
344
+ description: "Response matches create-media-buy-response.json schema"
345
+
346
+ - check: field_present
347
+ path: "context"
348
+ description: "Response echoes back the context object"
349
+ - check: field_value
350
+ path: "context.correlation_id"
351
+ value: "sales_proposal_mode--create_media_buy"
352
+ description: "Context correlation_id returned unchanged"
353
+ - id: creative_sync
354
+ title: "Creative sync"
355
+ narrative: |
356
+ With the proposal accepted and the media buy confirmed, the buyer syncs creative
357
+ assets. The buyer first checks what formats the accepted products require, then
358
+ pushes matching creative assets.
359
+
360
+ steps:
361
+ - id: list_formats
362
+ title: "Check creative format requirements"
363
+ narrative: |
364
+ The buyer confirms what creative formats the accepted proposal's products
365
+ require. Your platform returns format specs with asset requirements.
366
+ task: list_creative_formats
367
+ schema_ref: "creative/list-creative-formats-request.json"
368
+ response_schema_ref: "creative/list-creative-formats-response.json"
369
+ doc_ref: "/creative/task-reference/list_creative_formats"
370
+ comply_scenario: creative_lifecycle
371
+ stateful: false
372
+ expected: |
373
+ Return creative formats your platform accepts. Each format should define:
374
+ - format_id with your agent_url and unique id
375
+ - Asset requirements (dimensions, file sizes, mime types)
376
+ - Render dimensions
377
+
378
+ sample_request:
379
+ context:
380
+ correlation_id: "sales_proposal_mode--list_formats"
381
+
382
+ validations:
383
+ - check: response_schema
384
+ description: "Response matches list-creative-formats-response.json schema"
385
+ - check: field_present
386
+ path: "formats"
387
+ description: "Response contains formats array"
388
+
389
+ - check: field_present
390
+ path: "context"
391
+ description: "Response echoes back the context object"
392
+ - check: field_value
393
+ path: "context.correlation_id"
394
+ value: "sales_proposal_mode--list_formats"
395
+ description: "Context correlation_id returned unchanged"
396
+ - check: field_present
397
+ path: "formats[0].format_id.agent_url"
398
+ description: "Format IDs include agent_url"
399
+ - check: field_present
400
+ path: "formats[0].format_id.id"
401
+ description: "Format IDs include id — must match those in get_products"
402
+ - id: sync_creatives
403
+ title: "Push creative assets"
404
+ narrative: |
405
+ The buyer uploads creative assets for the products in the accepted proposal.
406
+ Your platform validates each creative against the format specs and returns
407
+ per-creative status.
408
+ task: sync_creatives
409
+ schema_ref: "creative/sync-creatives-request.json"
410
+ response_schema_ref: "creative/sync-creatives-response.json"
411
+ doc_ref: "/creative/task-reference/sync_creatives"
412
+ comply_scenario: creative_sync
413
+ stateful: true
414
+ expected: |
415
+ Accept and validate creatives:
416
+ - Per-creative action: created or updated
417
+ - Per-creative status: accepted, pending_review, or rejected
418
+ - Validation errors for rejected creatives
419
+
420
+ sample_request:
421
+ account:
422
+ brand:
423
+ domain: "acmeoutdoor.example"
424
+ operator: "pinnacle-agency.example"
425
+ creatives:
426
+ - creative_id: "video_30s_trail_pro"
427
+ name: "Trail Pro 3000 - 30s CTV Spot"
428
+ format_id:
429
+ agent_url: "https://your-platform.example.com"
430
+ id: "ssai_30s"
431
+ assets:
432
+ video:
433
+ asset_type: "video"
434
+ url: "https://cdn.pinnacle-agency.example/trail-pro-30s.mp4"
435
+ width: 1920
436
+ height: 1080
437
+ duration_ms: 30000
438
+ mime_type: "video/mp4"
439
+ - creative_id: "video_15s_trail_pro"
440
+ name: "Trail Pro 3000 - 15s Online Video"
441
+ format_id:
442
+ agent_url: "https://your-platform.example.com"
443
+ id: "preroll_15s"
444
+ assets:
445
+ video:
446
+ asset_type: "video"
447
+ url: "https://cdn.pinnacle-agency.example/trail-pro-15s.mp4"
448
+ width: 1920
449
+ height: 1080
450
+ duration_ms: 15000
451
+ mime_type: "video/mp4"
452
+
453
+ idempotency_key: "$generate:uuid_v4#sales_proposal_mode_creative_sync_sync_creatives"
454
+ context:
455
+ correlation_id: "sales_proposal_mode--sync_creatives"
456
+ validations:
457
+ - check: response_schema
458
+ description: "Response matches sync-creatives-response.json schema"
459
+ - check: field_present
460
+ path: "creatives[0].action"
461
+ description: "Each creative has an action (created/updated)"
462
+
463
+ - check: field_present
464
+ path: "context"
465
+ description: "Response echoes back the context object"
466
+ - check: field_value
467
+ path: "context.correlation_id"
468
+ value: "sales_proposal_mode--sync_creatives"
469
+ description: "Context correlation_id returned unchanged"
470
+ - id: delivery
471
+ title: "Delivery and reporting"
472
+ narrative: |
473
+ The campaign from the accepted proposal is live. The buyer monitors delivery
474
+ to verify the proposal's forecasts are tracking.
475
+
476
+ steps:
477
+ - id: get_delivery
478
+ title: "Check delivery metrics"
479
+ narrative: |
480
+ The buyer requests delivery data for the media buy created from the proposal.
481
+ Your platform returns performance metrics that the buyer can compare against
482
+ the proposal's original forecasts.
483
+ task: get_media_buy_delivery
484
+ schema_ref: "media-buy/get-media-buy-delivery-request.json"
485
+ response_schema_ref: "media-buy/get-media-buy-delivery-response.json"
486
+ doc_ref: "/media-buy/task-reference/get_media_buy_delivery"
487
+ comply_scenario: reporting_flow
488
+ stateful: true
489
+ expected: |
490
+ Return delivery metrics for the media buy:
491
+ - Per-package delivery: impressions, clicks, spend, completion rates
492
+ - Pacing against the proposal's original forecast
493
+ - Budget utilization: spent vs. committed per package
494
+ - Daily breakdown if requested
495
+
496
+ sample_request:
497
+ account:
498
+ brand:
499
+ domain: "acmeoutdoor.example"
500
+ operator: "pinnacle-agency.example"
501
+ media_buy_ids:
502
+ - "$context.media_buy_id"
503
+ include_package_daily_breakdown: true
504
+
505
+ context:
506
+ correlation_id: "sales_proposal_mode--get_delivery"
507
+ validations:
508
+ - check: response_schema
509
+ description: "Response matches get-media-buy-delivery-response.json schema"
510
+ - check: field_present
511
+ path: "media_buy_deliveries"
512
+ description: "Response contains media buy delivery data"
513
+
514
+ - check: field_present
515
+ path: "context"
516
+ description: "Response echoes back the context object"
517
+ - check: field_value
518
+ path: "context.correlation_id"
519
+ value: "sales_proposal_mode--get_delivery"
520
+ description: "Context correlation_id returned unchanged"