@adcp/sdk 6.8.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 (1060) hide show
  1. package/ADCP_VERSION +1 -1
  2. package/bin/adcp.js +285 -5
  3. package/compliance/cache/3.0.6/domains/brand/index.yaml +163 -0
  4. package/compliance/cache/3.0.6/domains/creative/index.yaml +412 -0
  5. package/compliance/cache/3.0.6/domains/governance/index.yaml +683 -0
  6. package/compliance/cache/3.0.6/domains/media-buy/creative-reception.yaml +247 -0
  7. package/compliance/cache/3.0.6/domains/media-buy/index.yaml +769 -0
  8. package/compliance/cache/3.0.6/domains/media-buy/scenarios/create_media_buy_async.yaml +232 -0
  9. package/compliance/cache/3.0.6/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
  10. package/compliance/cache/3.0.6/domains/media-buy/scenarios/delivery_reporting.yaml +205 -0
  11. package/compliance/cache/3.0.6/domains/media-buy/scenarios/governance_approved.yaml +211 -0
  12. package/compliance/cache/3.0.6/domains/media-buy/scenarios/governance_conditions.yaml +196 -0
  13. package/compliance/cache/3.0.6/domains/media-buy/scenarios/governance_denied.yaml +192 -0
  14. package/compliance/cache/3.0.6/domains/media-buy/scenarios/governance_denied_recovery.yaml +244 -0
  15. package/compliance/cache/3.0.6/domains/media-buy/scenarios/invalid_transitions.yaml +284 -0
  16. package/compliance/cache/3.0.6/domains/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
  17. package/compliance/cache/3.0.6/domains/media-buy/scenarios/inventory_list_targeting.yaml +271 -0
  18. package/compliance/cache/3.0.6/domains/media-buy/scenarios/measurement_terms_rejected.yaml +195 -0
  19. package/compliance/cache/3.0.6/domains/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
  20. package/compliance/cache/3.0.6/domains/media-buy/scenarios/proposal_finalize.yaml +243 -0
  21. package/compliance/cache/3.0.6/domains/media-buy/scenarios/refine_products.yaml +148 -0
  22. package/compliance/cache/3.0.6/domains/media-buy/state-machine.yaml +442 -0
  23. package/compliance/cache/3.0.6/domains/signals/index.yaml +266 -0
  24. package/compliance/cache/3.0.6/domains/sponsored-intelligence/index.yaml +256 -0
  25. package/compliance/cache/3.0.6/index.json +324 -0
  26. package/compliance/cache/3.0.6/protocols/brand/index.yaml +163 -0
  27. package/compliance/cache/3.0.6/protocols/creative/index.yaml +412 -0
  28. package/compliance/cache/3.0.6/protocols/governance/index.yaml +683 -0
  29. package/compliance/cache/3.0.6/protocols/media-buy/creative-reception.yaml +247 -0
  30. package/compliance/cache/3.0.6/protocols/media-buy/index.yaml +769 -0
  31. package/compliance/cache/3.0.6/protocols/media-buy/scenarios/create_media_buy_async.yaml +232 -0
  32. package/compliance/cache/3.0.6/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
  33. package/compliance/cache/3.0.6/protocols/media-buy/scenarios/delivery_reporting.yaml +205 -0
  34. package/compliance/cache/3.0.6/protocols/media-buy/scenarios/governance_approved.yaml +211 -0
  35. package/compliance/cache/3.0.6/protocols/media-buy/scenarios/governance_conditions.yaml +196 -0
  36. package/compliance/cache/3.0.6/protocols/media-buy/scenarios/governance_denied.yaml +192 -0
  37. package/compliance/cache/3.0.6/protocols/media-buy/scenarios/governance_denied_recovery.yaml +244 -0
  38. package/compliance/cache/3.0.6/protocols/media-buy/scenarios/invalid_transitions.yaml +284 -0
  39. package/compliance/cache/3.0.6/protocols/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
  40. package/compliance/cache/3.0.6/protocols/media-buy/scenarios/inventory_list_targeting.yaml +271 -0
  41. package/compliance/cache/3.0.6/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +195 -0
  42. package/compliance/cache/3.0.6/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
  43. package/compliance/cache/3.0.6/protocols/media-buy/scenarios/proposal_finalize.yaml +243 -0
  44. package/compliance/cache/3.0.6/protocols/media-buy/scenarios/refine_products.yaml +148 -0
  45. package/compliance/cache/3.0.6/protocols/media-buy/state-machine.yaml +442 -0
  46. package/compliance/cache/3.0.6/protocols/signals/index.yaml +266 -0
  47. package/compliance/cache/3.0.6/protocols/sponsored-intelligence/index.yaml +256 -0
  48. package/compliance/cache/3.0.6/specialisms/audience-sync/index.yaml +280 -0
  49. package/compliance/cache/3.0.6/specialisms/brand-rights/index.yaml +350 -0
  50. package/compliance/cache/3.0.6/specialisms/brand-rights/scenarios/governance_denied.yaml +204 -0
  51. package/compliance/cache/3.0.6/specialisms/collection-lists/index.yaml +359 -0
  52. package/compliance/cache/3.0.6/specialisms/content-standards/index.yaml +572 -0
  53. package/compliance/cache/3.0.6/specialisms/creative-ad-server/index.yaml +383 -0
  54. package/compliance/cache/3.0.6/specialisms/creative-generative/generative-seller.yaml +758 -0
  55. package/compliance/cache/3.0.6/specialisms/creative-generative/index.yaml +746 -0
  56. package/compliance/cache/3.0.6/specialisms/creative-template/index.yaml +413 -0
  57. package/compliance/cache/3.0.6/specialisms/governance-aware-seller/index.yaml +136 -0
  58. package/compliance/cache/3.0.6/specialisms/governance-delivery-monitor/index.yaml +441 -0
  59. package/compliance/cache/3.0.6/specialisms/governance-spend-authority/denied.yaml +221 -0
  60. package/compliance/cache/3.0.6/specialisms/governance-spend-authority/index.yaml +330 -0
  61. package/compliance/cache/3.0.6/specialisms/property-lists/index.yaml +482 -0
  62. package/compliance/cache/3.0.6/specialisms/sales-broadcast-tv/index.yaml +689 -0
  63. package/compliance/cache/3.0.6/specialisms/sales-catalog-driven/index.yaml +779 -0
  64. package/compliance/cache/3.0.6/specialisms/sales-guaranteed/index.yaml +504 -0
  65. package/compliance/cache/3.0.6/specialisms/sales-non-guaranteed/index.yaml +428 -0
  66. package/compliance/cache/3.0.6/specialisms/sales-proposal-mode/index.yaml +520 -0
  67. package/compliance/cache/3.0.6/specialisms/sales-social/index.yaml +584 -0
  68. package/compliance/cache/3.0.6/specialisms/signal-marketplace/index.yaml +415 -0
  69. package/compliance/cache/3.0.6/specialisms/signal-marketplace/scenarios/governance_denied.yaml +207 -0
  70. package/compliance/cache/3.0.6/specialisms/signal-owned/index.yaml +316 -0
  71. package/compliance/cache/3.0.6/test-kits/acme-outdoor.yaml +210 -0
  72. package/compliance/cache/3.0.6/test-kits/bistro-oranje.yaml +126 -0
  73. package/compliance/cache/3.0.6/test-kits/nova-motors.yaml +262 -0
  74. package/compliance/cache/3.0.6/test-kits/osei-natural.yaml +126 -0
  75. package/compliance/cache/3.0.6/test-kits/signed-requests-runner.yaml +155 -0
  76. package/compliance/cache/3.0.6/test-kits/substitution-observer-runner.yaml +690 -0
  77. package/compliance/cache/3.0.6/test-kits/summit-foods.yaml +125 -0
  78. package/compliance/cache/3.0.6/test-kits/webhook-receiver-runner.yaml +265 -0
  79. package/compliance/cache/3.0.6/test-vectors/plan-hash/001-minimal-plan.json +43 -0
  80. package/compliance/cache/3.0.6/test-vectors/plan-hash/002-full-plan.json +217 -0
  81. package/compliance/cache/3.0.6/test-vectors/plan-hash/003-bookkeeping-stripped.json +60 -0
  82. package/compliance/cache/3.0.6/test-vectors/plan-hash/004a-human-review-omitted.json +43 -0
  83. package/compliance/cache/3.0.6/test-vectors/plan-hash/004b-human-review-explicit-null.json +49 -0
  84. package/compliance/cache/3.0.6/test-vectors/plan-hash/005a-policy-categories-order-1.json +53 -0
  85. package/compliance/cache/3.0.6/test-vectors/plan-hash/005b-policy-categories-order-2.json +57 -0
  86. package/compliance/cache/3.0.6/test-vectors/plan-hash/006a-ext-trace-v1.json +49 -0
  87. package/compliance/cache/3.0.6/test-vectors/plan-hash/006b-ext-trace-v2.json +53 -0
  88. package/compliance/cache/3.0.6/test-vectors/plan-hash/007-unicode-objectives.json +43 -0
  89. package/compliance/cache/3.0.6/test-vectors/plan-hash/008-numeric-canonicalization.json +65 -0
  90. package/compliance/cache/3.0.6/test-vectors/request-signing/README.md +219 -0
  91. package/compliance/cache/3.0.6/test-vectors/request-signing/canonicalization.json +241 -0
  92. package/compliance/cache/3.0.6/test-vectors/request-signing/keys.json +60 -0
  93. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/001-no-signature-header.json +24 -0
  94. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/002-wrong-tag.json +26 -0
  95. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/003-expired-signature.json +26 -0
  96. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/004-window-too-long.json +26 -0
  97. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/005-alg-not-allowed.json +26 -0
  98. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/006-missing-covered-component.json +26 -0
  99. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/007-missing-content-digest.json +26 -0
  100. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/008-unknown-keyid.json +26 -0
  101. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +27 -0
  102. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/010-content-digest-mismatch.json +33 -0
  103. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/011-malformed-header.json +27 -0
  104. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/012-missing-expires-param.json +26 -0
  105. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/013-expires-le-created.json +27 -0
  106. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/014-missing-nonce-param.json +27 -0
  107. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/015-signature-invalid.json +28 -0
  108. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/016-replayed-nonce.json +35 -0
  109. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/017-key-revoked.json +38 -0
  110. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +28 -0
  111. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/019-signature-without-signature-input.json +26 -0
  112. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/020-rate-abuse.json +34 -0
  113. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +31 -0
  114. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/022-multi-valued-content-type.json +31 -0
  115. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +32 -0
  116. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/024-unquoted-string-param.json +31 -0
  117. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +43 -0
  118. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/026-non-ascii-host.json +31 -0
  119. package/compliance/cache/3.0.6/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +25 -0
  120. package/compliance/cache/3.0.6/test-vectors/request-signing/positive/001-basic-post.json +30 -0
  121. package/compliance/cache/3.0.6/test-vectors/request-signing/positive/002-post-with-content-digest.json +31 -0
  122. package/compliance/cache/3.0.6/test-vectors/request-signing/positive/003-es256-post.json +30 -0
  123. package/compliance/cache/3.0.6/test-vectors/request-signing/positive/004-multiple-signature-labels.json +26 -0
  124. package/compliance/cache/3.0.6/test-vectors/request-signing/positive/005-default-port-stripped.json +30 -0
  125. package/compliance/cache/3.0.6/test-vectors/request-signing/positive/006-dot-segment-path.json +30 -0
  126. package/compliance/cache/3.0.6/test-vectors/request-signing/positive/007-query-byte-preserved.json +30 -0
  127. package/compliance/cache/3.0.6/test-vectors/request-signing/positive/008-percent-encoded-path.json +30 -0
  128. package/compliance/cache/3.0.6/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +30 -0
  129. package/compliance/cache/3.0.6/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +30 -0
  130. package/compliance/cache/3.0.6/test-vectors/request-signing/positive/011-ipv6-authority.json +30 -0
  131. package/compliance/cache/3.0.6/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +30 -0
  132. package/compliance/cache/3.0.6/test-vectors/webhook-signing/README.md +211 -0
  133. package/compliance/cache/3.0.6/test-vectors/webhook-signing/keys.json +61 -0
  134. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/001-wrong-tag.json +26 -0
  135. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/002-expired-signature.json +26 -0
  136. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/003-window-too-long.json +26 -0
  137. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +26 -0
  138. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/005-missing-authority-component.json +26 -0
  139. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/006-missing-content-digest.json +25 -0
  140. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/007-unknown-keyid.json +26 -0
  141. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +26 -0
  142. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +26 -0
  143. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +26 -0
  144. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/011-signature-without-input.json +25 -0
  145. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/012-missing-expires-param.json +26 -0
  146. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/013-expires-le-created.json +26 -0
  147. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +26 -0
  148. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/015-signature-invalid.json +26 -0
  149. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/016-replayed-nonce.json +37 -0
  150. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/017-key-revoked.json +32 -0
  151. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/018-rate-abuse.json +33 -0
  152. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/019-revocation-stale.json +32 -0
  153. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +41 -0
  154. package/compliance/cache/3.0.6/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +26 -0
  155. package/compliance/cache/3.0.6/test-vectors/webhook-signing/positive/001-basic-post.json +24 -0
  156. package/compliance/cache/3.0.6/test-vectors/webhook-signing/positive/002-es256-post.json +24 -0
  157. package/compliance/cache/3.0.6/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +24 -0
  158. package/compliance/cache/3.0.6/test-vectors/webhook-signing/positive/004-default-port-stripped.json +24 -0
  159. package/compliance/cache/3.0.6/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +24 -0
  160. package/compliance/cache/3.0.6/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +24 -0
  161. package/compliance/cache/3.0.6/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +25 -0
  162. package/compliance/cache/3.0.6/universal/capability-discovery.yaml +125 -0
  163. package/compliance/cache/3.0.6/universal/collection-lists-pagination-integrity.yaml +306 -0
  164. package/compliance/cache/3.0.6/universal/content-standards-pagination-integrity.yaml +326 -0
  165. package/compliance/cache/3.0.6/universal/deterministic-testing.yaml +1343 -0
  166. package/compliance/cache/3.0.6/universal/error-compliance.yaml +474 -0
  167. package/compliance/cache/3.0.6/universal/fictional-entities.yaml +307 -0
  168. package/compliance/cache/3.0.6/universal/get-media-buys-pagination-integrity.yaml +160 -0
  169. package/compliance/cache/3.0.6/universal/get-signals-pagination-integrity.yaml +211 -0
  170. package/compliance/cache/3.0.6/universal/idempotency.yaml +593 -0
  171. package/compliance/cache/3.0.6/universal/pagination-integrity-creative-formats.yaml +258 -0
  172. package/compliance/cache/3.0.6/universal/pagination-integrity-list-accounts.yaml +262 -0
  173. package/compliance/cache/3.0.6/universal/pagination-integrity.yaml +263 -0
  174. package/compliance/cache/3.0.6/universal/property-lists-pagination-integrity.yaml +307 -0
  175. package/compliance/cache/3.0.6/universal/runner-output-contract.yaml +358 -0
  176. package/compliance/cache/3.0.6/universal/schema-validation.yaml +526 -0
  177. package/compliance/cache/3.0.6/universal/security.yaml +431 -0
  178. package/compliance/cache/3.0.6/universal/signed-requests.yaml +205 -0
  179. package/compliance/cache/3.0.6/universal/storyboard-schema.yaml +1176 -0
  180. package/compliance/cache/3.0.6/universal/v3-envelope-integrity.yaml +106 -0
  181. package/compliance/cache/3.0.6/universal/webhook-emission.yaml +337 -0
  182. package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/media-buy/scenarios/inventory_list_targeting.yaml +5 -0
  183. package/compliance/cache/{3.0.5 → 3.0.6.previous}/index.json +2 -2
  184. package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/media-buy/scenarios/inventory_list_targeting.yaml +5 -0
  185. package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/sales-guaranteed/index.yaml +1 -1
  186. package/compliance/cache/{3.0.5 → 3.0.6.previous}/universal/storyboard-schema.yaml +15 -0
  187. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  188. package/dist/lib/core/AgentClient.js +20 -0
  189. package/dist/lib/core/AgentClient.js.map +1 -1
  190. package/dist/lib/mock-server/creative-template/seed-data.d.ts +1 -1
  191. package/dist/lib/mock-server/creative-template/seed-data.d.ts.map +1 -1
  192. package/dist/lib/mock-server/creative-template/seed-data.js +53 -0
  193. package/dist/lib/mock-server/creative-template/seed-data.js.map +1 -1
  194. package/dist/lib/mock-server/creative-template/server.d.ts.map +1 -1
  195. package/dist/lib/mock-server/creative-template/server.js +12 -0
  196. package/dist/lib/mock-server/creative-template/server.js.map +1 -1
  197. package/dist/lib/schemas-data/3.0/a2ui/bound-value.json +1 -1
  198. package/dist/lib/schemas-data/3.0/a2ui/component.json +1 -1
  199. package/dist/lib/schemas-data/3.0/a2ui/si-catalog.json +25 -25
  200. package/dist/lib/schemas-data/3.0/a2ui/surface.json +2 -2
  201. package/dist/lib/schemas-data/3.0/a2ui/user-action.json +1 -1
  202. package/dist/lib/schemas-data/3.0/account/get-account-financials-request.json +5 -5
  203. package/dist/lib/schemas-data/3.0/account/get-account-financials-response.json +10 -10
  204. package/dist/lib/schemas-data/3.0/account/list-accounts-request.json +4 -4
  205. package/dist/lib/schemas-data/3.0/account/list-accounts-response.json +6 -6
  206. package/dist/lib/schemas-data/3.0/account/report-usage-request.json +5 -5
  207. package/dist/lib/schemas-data/3.0/account/report-usage-response.json +4 -4
  208. package/dist/lib/schemas-data/3.0/account/sync-accounts-request.json +9 -9
  209. package/dist/lib/schemas-data/3.0/account/sync-accounts-response.json +12 -12
  210. package/dist/lib/schemas-data/3.0/account/sync-governance-request.json +5 -5
  211. package/dist/lib/schemas-data/3.0/account/sync-governance-response.json +8 -8
  212. package/dist/lib/schemas-data/3.0/adagents.json +32 -32
  213. package/dist/lib/schemas-data/3.0/brand/acquire-rights-request.json +8 -8
  214. package/dist/lib/schemas-data/3.0/brand/acquire-rights-response.json +14 -14
  215. package/dist/lib/schemas-data/3.0/brand/creative-approval-request.json +4 -4
  216. package/dist/lib/schemas-data/3.0/brand/creative-approval-response.json +10 -10
  217. package/dist/lib/schemas-data/3.0/brand/get-brand-identity-request.json +3 -3
  218. package/dist/lib/schemas-data/3.0/brand/get-brand-identity-response.json +8 -8
  219. package/dist/lib/schemas-data/3.0/brand/get-rights-request.json +7 -7
  220. package/dist/lib/schemas-data/3.0/brand/get-rights-response.json +9 -9
  221. package/dist/lib/schemas-data/3.0/brand/revocation-notification.json +4 -4
  222. package/dist/lib/schemas-data/3.0/brand/rights-pricing-option.json +5 -5
  223. package/dist/lib/schemas-data/3.0/brand/rights-terms.json +3 -3
  224. package/dist/lib/schemas-data/3.0/brand/update-rights-request.json +4 -4
  225. package/dist/lib/schemas-data/3.0/brand/update-rights-response.json +9 -9
  226. package/dist/lib/schemas-data/3.0/brand.json +14 -14
  227. package/dist/lib/schemas-data/3.0/bundled/content-standards/calibrate-content-request.json +2 -2
  228. package/dist/lib/schemas-data/3.0/bundled/content-standards/calibrate-content-response.json +2 -2
  229. package/dist/lib/schemas-data/3.0/bundled/content-standards/create-content-standards-request.json +2 -2
  230. package/dist/lib/schemas-data/3.0/bundled/content-standards/create-content-standards-response.json +2 -2
  231. package/dist/lib/schemas-data/3.0/bundled/content-standards/get-content-standards-request.json +2 -2
  232. package/dist/lib/schemas-data/3.0/bundled/content-standards/get-content-standards-response.json +2 -2
  233. package/dist/lib/schemas-data/3.0/bundled/content-standards/get-media-buy-artifacts-request.json +2 -2
  234. package/dist/lib/schemas-data/3.0/bundled/content-standards/get-media-buy-artifacts-response.json +2 -2
  235. package/dist/lib/schemas-data/3.0/bundled/content-standards/list-content-standards-request.json +2 -2
  236. package/dist/lib/schemas-data/3.0/bundled/content-standards/list-content-standards-response.json +2 -2
  237. package/dist/lib/schemas-data/3.0/bundled/content-standards/update-content-standards-request.json +2 -2
  238. package/dist/lib/schemas-data/3.0/bundled/content-standards/update-content-standards-response.json +2 -2
  239. package/dist/lib/schemas-data/3.0/bundled/content-standards/validate-content-delivery-request.json +2 -2
  240. package/dist/lib/schemas-data/3.0/bundled/content-standards/validate-content-delivery-response.json +2 -2
  241. package/dist/lib/schemas-data/3.0/bundled/core/tasks-get-request.json +2 -2
  242. package/dist/lib/schemas-data/3.0/bundled/core/tasks-get-response.json +2 -2
  243. package/dist/lib/schemas-data/3.0/bundled/core/tasks-list-request.json +2 -2
  244. package/dist/lib/schemas-data/3.0/bundled/core/tasks-list-response.json +2 -2
  245. package/dist/lib/schemas-data/3.0/bundled/creative/get-creative-delivery-request.json +2 -2
  246. package/dist/lib/schemas-data/3.0/bundled/creative/get-creative-delivery-response.json +2 -2
  247. package/dist/lib/schemas-data/3.0/bundled/creative/get-creative-features-request.json +2 -2
  248. package/dist/lib/schemas-data/3.0/bundled/creative/get-creative-features-response.json +2 -2
  249. package/dist/lib/schemas-data/3.0/bundled/creative/list-creative-formats-request.json +2 -2
  250. package/dist/lib/schemas-data/3.0/bundled/creative/list-creative-formats-response.json +2 -2
  251. package/dist/lib/schemas-data/3.0/bundled/creative/list-creatives-request.json +2 -2
  252. package/dist/lib/schemas-data/3.0/bundled/creative/list-creatives-response.json +2 -2
  253. package/dist/lib/schemas-data/3.0/bundled/creative/preview-creative-request.json +2 -2
  254. package/dist/lib/schemas-data/3.0/bundled/creative/preview-creative-response.json +2 -2
  255. package/dist/lib/schemas-data/3.0/bundled/creative/sync-creatives-request.json +2 -2
  256. package/dist/lib/schemas-data/3.0/bundled/creative/sync-creatives-response.json +2 -2
  257. package/dist/lib/schemas-data/3.0/bundled/media-buy/build-creative-request.json +2 -2
  258. package/dist/lib/schemas-data/3.0/bundled/media-buy/build-creative-response.json +2 -2
  259. package/dist/lib/schemas-data/3.0/bundled/media-buy/create-media-buy-request.json +2 -2
  260. package/dist/lib/schemas-data/3.0/bundled/media-buy/create-media-buy-response.json +2 -2
  261. package/dist/lib/schemas-data/3.0/bundled/media-buy/get-media-buy-delivery-request.json +2 -2
  262. package/dist/lib/schemas-data/3.0/bundled/media-buy/get-media-buy-delivery-response.json +2 -2
  263. package/dist/lib/schemas-data/3.0/bundled/media-buy/get-media-buys-request.json +2 -2
  264. package/dist/lib/schemas-data/3.0/bundled/media-buy/get-media-buys-response.json +2 -2
  265. package/dist/lib/schemas-data/3.0/bundled/media-buy/get-products-request.json +2 -2
  266. package/dist/lib/schemas-data/3.0/bundled/media-buy/get-products-response.json +2 -2
  267. package/dist/lib/schemas-data/3.0/bundled/media-buy/list-creative-formats-request.json +2 -2
  268. package/dist/lib/schemas-data/3.0/bundled/media-buy/list-creative-formats-response.json +2 -2
  269. package/dist/lib/schemas-data/3.0/bundled/media-buy/log-event-request.json +2 -2
  270. package/dist/lib/schemas-data/3.0/bundled/media-buy/log-event-response.json +2 -2
  271. package/dist/lib/schemas-data/3.0/bundled/media-buy/package-request.json +2 -2
  272. package/dist/lib/schemas-data/3.0/bundled/media-buy/provide-performance-feedback-request.json +2 -2
  273. package/dist/lib/schemas-data/3.0/bundled/media-buy/provide-performance-feedback-response.json +2 -2
  274. package/dist/lib/schemas-data/3.0/bundled/media-buy/sync-audiences-request.json +2 -2
  275. package/dist/lib/schemas-data/3.0/bundled/media-buy/sync-audiences-response.json +2 -2
  276. package/dist/lib/schemas-data/3.0/bundled/media-buy/sync-catalogs-request.json +2 -2
  277. package/dist/lib/schemas-data/3.0/bundled/media-buy/sync-catalogs-response.json +2 -2
  278. package/dist/lib/schemas-data/3.0/bundled/media-buy/sync-event-sources-request.json +2 -2
  279. package/dist/lib/schemas-data/3.0/bundled/media-buy/sync-event-sources-response.json +2 -2
  280. package/dist/lib/schemas-data/3.0/bundled/media-buy/update-media-buy-request.json +2 -2
  281. package/dist/lib/schemas-data/3.0/bundled/media-buy/update-media-buy-response.json +2 -2
  282. package/dist/lib/schemas-data/3.0/bundled/property/create-property-list-request.json +2 -2
  283. package/dist/lib/schemas-data/3.0/bundled/property/create-property-list-response.json +2 -2
  284. package/dist/lib/schemas-data/3.0/bundled/property/delete-property-list-request.json +2 -2
  285. package/dist/lib/schemas-data/3.0/bundled/property/delete-property-list-response.json +2 -2
  286. package/dist/lib/schemas-data/3.0/bundled/property/get-property-list-request.json +2 -2
  287. package/dist/lib/schemas-data/3.0/bundled/property/get-property-list-response.json +2 -2
  288. package/dist/lib/schemas-data/3.0/bundled/property/list-property-lists-request.json +2 -2
  289. package/dist/lib/schemas-data/3.0/bundled/property/list-property-lists-response.json +2 -2
  290. package/dist/lib/schemas-data/3.0/bundled/property/update-property-list-request.json +2 -2
  291. package/dist/lib/schemas-data/3.0/bundled/property/update-property-list-response.json +2 -2
  292. package/dist/lib/schemas-data/3.0/bundled/property/validate-property-delivery-request.json +2 -2
  293. package/dist/lib/schemas-data/3.0/bundled/property/validate-property-delivery-response.json +2 -2
  294. package/dist/lib/schemas-data/3.0/bundled/protocol/get-adcp-capabilities-request.json +2 -2
  295. package/dist/lib/schemas-data/3.0/bundled/protocol/get-adcp-capabilities-response.json +2 -2
  296. package/dist/lib/schemas-data/3.0/bundled/signals/activate-signal-request.json +2 -2
  297. package/dist/lib/schemas-data/3.0/bundled/signals/activate-signal-response.json +2 -2
  298. package/dist/lib/schemas-data/3.0/bundled/signals/get-signals-request.json +2 -2
  299. package/dist/lib/schemas-data/3.0/bundled/signals/get-signals-response.json +2 -2
  300. package/dist/lib/schemas-data/3.0/bundled/sponsored-intelligence/si-get-offering-request.json +2 -2
  301. package/dist/lib/schemas-data/3.0/bundled/sponsored-intelligence/si-get-offering-response.json +2 -2
  302. package/dist/lib/schemas-data/3.0/bundled/sponsored-intelligence/si-initiate-session-request.json +2 -2
  303. package/dist/lib/schemas-data/3.0/bundled/sponsored-intelligence/si-initiate-session-response.json +2 -2
  304. package/dist/lib/schemas-data/3.0/bundled/sponsored-intelligence/si-send-message-request.json +2 -2
  305. package/dist/lib/schemas-data/3.0/bundled/sponsored-intelligence/si-send-message-response.json +2 -2
  306. package/dist/lib/schemas-data/3.0/bundled/sponsored-intelligence/si-terminate-session-request.json +2 -2
  307. package/dist/lib/schemas-data/3.0/bundled/sponsored-intelligence/si-terminate-session-response.json +2 -2
  308. package/dist/lib/schemas-data/3.0/collection/base-collection-source.json +3 -3
  309. package/dist/lib/schemas-data/3.0/collection/collection-list-changed-webhook.json +2 -2
  310. package/dist/lib/schemas-data/3.0/collection/collection-list-filters.json +7 -7
  311. package/dist/lib/schemas-data/3.0/collection/collection-list.json +5 -5
  312. package/dist/lib/schemas-data/3.0/collection/create-collection-list-request.json +7 -7
  313. package/dist/lib/schemas-data/3.0/collection/create-collection-list-response.json +4 -4
  314. package/dist/lib/schemas-data/3.0/collection/delete-collection-list-request.json +4 -4
  315. package/dist/lib/schemas-data/3.0/collection/delete-collection-list-response.json +3 -3
  316. package/dist/lib/schemas-data/3.0/collection/get-collection-list-request.json +4 -4
  317. package/dist/lib/schemas-data/3.0/collection/get-collection-list-response.json +10 -10
  318. package/dist/lib/schemas-data/3.0/collection/list-collection-lists-request.json +5 -5
  319. package/dist/lib/schemas-data/3.0/collection/list-collection-lists-response.json +5 -5
  320. package/dist/lib/schemas-data/3.0/collection/update-collection-list-request.json +7 -7
  321. package/dist/lib/schemas-data/3.0/collection/update-collection-list-response.json +4 -4
  322. package/dist/lib/schemas-data/3.0/content-standards/artifact-webhook-payload.json +3 -3
  323. package/dist/lib/schemas-data/3.0/content-standards/artifact.json +7 -7
  324. package/dist/lib/schemas-data/3.0/content-standards/calibrate-content-request.json +4 -4
  325. package/dist/lib/schemas-data/3.0/content-standards/calibrate-content-response.json +8 -8
  326. package/dist/lib/schemas-data/3.0/content-standards/content-standards.json +7 -7
  327. package/dist/lib/schemas-data/3.0/content-standards/create-content-standards-request.json +7 -7
  328. package/dist/lib/schemas-data/3.0/content-standards/create-content-standards-response.json +6 -6
  329. package/dist/lib/schemas-data/3.0/content-standards/get-content-standards-request.json +3 -3
  330. package/dist/lib/schemas-data/3.0/content-standards/get-content-standards-response.json +7 -7
  331. package/dist/lib/schemas-data/3.0/content-standards/get-media-buy-artifacts-request.json +4 -4
  332. package/dist/lib/schemas-data/3.0/content-standards/get-media-buy-artifacts-response.json +8 -8
  333. package/dist/lib/schemas-data/3.0/content-standards/list-content-standards-request.json +5 -5
  334. package/dist/lib/schemas-data/3.0/content-standards/list-content-standards-response.json +8 -8
  335. package/dist/lib/schemas-data/3.0/content-standards/update-content-standards-request.json +7 -7
  336. package/dist/lib/schemas-data/3.0/content-standards/update-content-standards-response.json +6 -6
  337. package/dist/lib/schemas-data/3.0/content-standards/validate-content-delivery-request.json +4 -4
  338. package/dist/lib/schemas-data/3.0/content-standards/validate-content-delivery-response.json +8 -8
  339. package/dist/lib/schemas-data/3.0/core/account-ref.json +2 -2
  340. package/dist/lib/schemas-data/3.0/core/account.json +9 -9
  341. package/dist/lib/schemas-data/3.0/core/activation-key.json +1 -1
  342. package/dist/lib/schemas-data/3.0/core/ad-inventory-config.json +1 -1
  343. package/dist/lib/schemas-data/3.0/core/agent-encryption-key.json +1 -1
  344. package/dist/lib/schemas-data/3.0/core/agent-signing-key.json +1 -1
  345. package/dist/lib/schemas-data/3.0/core/app-item.json +4 -4
  346. package/dist/lib/schemas-data/3.0/core/assets/asset-union.json +15 -15
  347. package/dist/lib/schemas-data/3.0/core/assets/audio-asset.json +3 -3
  348. package/dist/lib/schemas-data/3.0/core/assets/brief-asset.json +2 -2
  349. package/dist/lib/schemas-data/3.0/core/assets/catalog-asset.json +2 -2
  350. package/dist/lib/schemas-data/3.0/core/assets/css-asset.json +2 -2
  351. package/dist/lib/schemas-data/3.0/core/assets/daast-asset.json +4 -4
  352. package/dist/lib/schemas-data/3.0/core/assets/html-asset.json +2 -2
  353. package/dist/lib/schemas-data/3.0/core/assets/image-asset.json +2 -2
  354. package/dist/lib/schemas-data/3.0/core/assets/javascript-asset.json +3 -3
  355. package/dist/lib/schemas-data/3.0/core/assets/markdown-asset.json +2 -2
  356. package/dist/lib/schemas-data/3.0/core/assets/text-asset.json +2 -2
  357. package/dist/lib/schemas-data/3.0/core/assets/url-asset.json +3 -3
  358. package/dist/lib/schemas-data/3.0/core/assets/vast-asset.json +4 -4
  359. package/dist/lib/schemas-data/3.0/core/assets/video-asset.json +7 -7
  360. package/dist/lib/schemas-data/3.0/core/assets/webhook-asset.json +7 -7
  361. package/dist/lib/schemas-data/3.0/core/async-response-data.json +25 -25
  362. package/dist/lib/schemas-data/3.0/core/attribution-window.json +4 -4
  363. package/dist/lib/schemas-data/3.0/core/audience-member.json +3 -3
  364. package/dist/lib/schemas-data/3.0/core/audience-selector.json +4 -4
  365. package/dist/lib/schemas-data/3.0/core/brand-id.json +1 -1
  366. package/dist/lib/schemas-data/3.0/core/brand-ref.json +2 -2
  367. package/dist/lib/schemas-data/3.0/core/business-entity.json +2 -2
  368. package/dist/lib/schemas-data/3.0/core/cancellation-policy.json +2 -2
  369. package/dist/lib/schemas-data/3.0/core/catalog-field-mapping.json +2 -2
  370. package/dist/lib/schemas-data/3.0/core/catalog.json +7 -7
  371. package/dist/lib/schemas-data/3.0/core/catchment.json +5 -5
  372. package/dist/lib/schemas-data/3.0/core/collection-distribution.json +2 -2
  373. package/dist/lib/schemas-data/3.0/core/collection-list-ref.json +1 -1
  374. package/dist/lib/schemas-data/3.0/core/collection-selector.json +1 -1
  375. package/dist/lib/schemas-data/3.0/core/collection.json +13 -13
  376. package/dist/lib/schemas-data/3.0/core/content-rating.json +2 -2
  377. package/dist/lib/schemas-data/3.0/core/context.json +1 -1
  378. package/dist/lib/schemas-data/3.0/core/creative-asset.json +6 -6
  379. package/dist/lib/schemas-data/3.0/core/creative-assignment.json +1 -1
  380. package/dist/lib/schemas-data/3.0/core/creative-brief.json +4 -4
  381. package/dist/lib/schemas-data/3.0/core/creative-consumption.json +1 -1
  382. package/dist/lib/schemas-data/3.0/core/creative-filters.json +4 -4
  383. package/dist/lib/schemas-data/3.0/core/creative-item.json +1 -1
  384. package/dist/lib/schemas-data/3.0/core/creative-manifest.json +7 -7
  385. package/dist/lib/schemas-data/3.0/core/creative-policy.json +3 -3
  386. package/dist/lib/schemas-data/3.0/core/creative-variable.json +1 -1
  387. package/dist/lib/schemas-data/3.0/core/creative-variant.json +5 -5
  388. package/dist/lib/schemas-data/3.0/core/data-provider-signal-selector.json +1 -1
  389. package/dist/lib/schemas-data/3.0/core/date-range.json +1 -1
  390. package/dist/lib/schemas-data/3.0/core/datetime-range.json +1 -1
  391. package/dist/lib/schemas-data/3.0/core/daypart-target.json +2 -2
  392. package/dist/lib/schemas-data/3.0/core/deadline-policy.json +1 -1
  393. package/dist/lib/schemas-data/3.0/core/delivery-forecast.json +7 -7
  394. package/dist/lib/schemas-data/3.0/core/delivery-metrics.json +5 -5
  395. package/dist/lib/schemas-data/3.0/core/deployment.json +3 -3
  396. package/dist/lib/schemas-data/3.0/core/destination-item.json +4 -4
  397. package/dist/lib/schemas-data/3.0/core/destination.json +1 -1
  398. package/dist/lib/schemas-data/3.0/core/diagnostic-issue.json +1 -1
  399. package/dist/lib/schemas-data/3.0/core/duration.json +1 -1
  400. package/dist/lib/schemas-data/3.0/core/education-item.json +4 -4
  401. package/dist/lib/schemas-data/3.0/core/error.json +1 -1
  402. package/dist/lib/schemas-data/3.0/core/event-custom-data.json +2 -2
  403. package/dist/lib/schemas-data/3.0/core/event-source-health.json +3 -3
  404. package/dist/lib/schemas-data/3.0/core/event.json +6 -6
  405. package/dist/lib/schemas-data/3.0/core/ext.json +1 -1
  406. package/dist/lib/schemas-data/3.0/core/feature-requirement.json +1 -1
  407. package/dist/lib/schemas-data/3.0/core/flight-item.json +4 -4
  408. package/dist/lib/schemas-data/3.0/core/forecast-point.json +18 -18
  409. package/dist/lib/schemas-data/3.0/core/forecast-range.json +1 -1
  410. package/dist/lib/schemas-data/3.0/core/format-id.json +1 -1
  411. package/dist/lib/schemas-data/3.0/core/format.json +42 -42
  412. package/dist/lib/schemas-data/3.0/core/frequency-cap.json +4 -4
  413. package/dist/lib/schemas-data/3.0/core/generation-credential.json +3 -3
  414. package/dist/lib/schemas-data/3.0/core/geo-breakdown-support.json +3 -3
  415. package/dist/lib/schemas-data/3.0/core/hotel-item.json +4 -4
  416. package/dist/lib/schemas-data/3.0/core/identifier.json +2 -2
  417. package/dist/lib/schemas-data/3.0/core/industry-identifier.json +2 -2
  418. package/dist/lib/schemas-data/3.0/core/insertion-order.json +1 -1
  419. package/dist/lib/schemas-data/3.0/core/installment-deadlines.json +2 -2
  420. package/dist/lib/schemas-data/3.0/core/installment.json +9 -9
  421. package/dist/lib/schemas-data/3.0/core/job-item.json +3 -3
  422. package/dist/lib/schemas-data/3.0/core/limited-series.json +1 -1
  423. package/dist/lib/schemas-data/3.0/core/material-deadline.json +1 -1
  424. package/dist/lib/schemas-data/3.0/core/mcp-webhook-payload.json +5 -5
  425. package/dist/lib/schemas-data/3.0/core/measurement-readiness.json +5 -5
  426. package/dist/lib/schemas-data/3.0/core/measurement-terms.json +3 -3
  427. package/dist/lib/schemas-data/3.0/core/measurement-window.json +1 -1
  428. package/dist/lib/schemas-data/3.0/core/media-buy-features.json +1 -1
  429. package/dist/lib/schemas-data/3.0/core/media-buy.json +7 -7
  430. package/dist/lib/schemas-data/3.0/core/offering-asset-group.json +15 -15
  431. package/dist/lib/schemas-data/3.0/core/offering.json +5 -5
  432. package/dist/lib/schemas-data/3.0/core/optimization-goal.json +6 -6
  433. package/dist/lib/schemas-data/3.0/core/outcome-measurement.json +2 -2
  434. package/dist/lib/schemas-data/3.0/core/overlay.json +1 -1
  435. package/dist/lib/schemas-data/3.0/core/package.json +14 -14
  436. package/dist/lib/schemas-data/3.0/core/pagination-request.json +1 -1
  437. package/dist/lib/schemas-data/3.0/core/pagination-response.json +1 -1
  438. package/dist/lib/schemas-data/3.0/core/performance-feedback.json +3 -3
  439. package/dist/lib/schemas-data/3.0/core/performance-standard.json +4 -4
  440. package/dist/lib/schemas-data/3.0/core/placement-definition.json +5 -5
  441. package/dist/lib/schemas-data/3.0/core/placement.json +2 -2
  442. package/dist/lib/schemas-data/3.0/core/planned-delivery.json +5 -5
  443. package/dist/lib/schemas-data/3.0/core/price.json +1 -1
  444. package/dist/lib/schemas-data/3.0/core/pricing-option.json +10 -10
  445. package/dist/lib/schemas-data/3.0/core/product-allocation.json +4 -4
  446. package/dist/lib/schemas-data/3.0/core/product-filters.json +16 -16
  447. package/dist/lib/schemas-data/3.0/core/product.json +28 -28
  448. package/dist/lib/schemas-data/3.0/core/property-id.json +1 -1
  449. package/dist/lib/schemas-data/3.0/core/property-list-ref.json +1 -1
  450. package/dist/lib/schemas-data/3.0/core/property-tag.json +1 -1
  451. package/dist/lib/schemas-data/3.0/core/property.json +6 -6
  452. package/dist/lib/schemas-data/3.0/core/proposal.json +6 -6
  453. package/dist/lib/schemas-data/3.0/core/protocol-envelope.json +3 -3
  454. package/dist/lib/schemas-data/3.0/core/provenance.json +6 -6
  455. package/dist/lib/schemas-data/3.0/core/publisher-property-selector.json +3 -3
  456. package/dist/lib/schemas-data/3.0/core/push-notification-config.json +2 -2
  457. package/dist/lib/schemas-data/3.0/core/real-estate-item.json +4 -4
  458. package/dist/lib/schemas-data/3.0/core/reference-asset.json +1 -1
  459. package/dist/lib/schemas-data/3.0/core/reporting-capabilities.json +5 -5
  460. package/dist/lib/schemas-data/3.0/core/reporting-webhook.json +3 -3
  461. package/dist/lib/schemas-data/3.0/core/requirements/asset-requirements.json +13 -13
  462. package/dist/lib/schemas-data/3.0/core/requirements/audio-asset-requirements.json +1 -1
  463. package/dist/lib/schemas-data/3.0/core/requirements/catalog-field-binding.json +4 -4
  464. package/dist/lib/schemas-data/3.0/core/requirements/catalog-requirements.json +5 -5
  465. package/dist/lib/schemas-data/3.0/core/requirements/css-asset-requirements.json +1 -1
  466. package/dist/lib/schemas-data/3.0/core/requirements/daast-asset-requirements.json +1 -1
  467. package/dist/lib/schemas-data/3.0/core/requirements/html-asset-requirements.json +1 -1
  468. package/dist/lib/schemas-data/3.0/core/requirements/image-asset-requirements.json +2 -2
  469. package/dist/lib/schemas-data/3.0/core/requirements/javascript-asset-requirements.json +1 -1
  470. package/dist/lib/schemas-data/3.0/core/requirements/markdown-asset-requirements.json +1 -1
  471. package/dist/lib/schemas-data/3.0/core/requirements/offering-asset-constraint.json +4 -4
  472. package/dist/lib/schemas-data/3.0/core/requirements/text-asset-requirements.json +1 -1
  473. package/dist/lib/schemas-data/3.0/core/requirements/url-asset-requirements.json +1 -1
  474. package/dist/lib/schemas-data/3.0/core/requirements/vast-asset-requirements.json +1 -1
  475. package/dist/lib/schemas-data/3.0/core/requirements/video-asset-requirements.json +6 -6
  476. package/dist/lib/schemas-data/3.0/core/requirements/webhook-asset-requirements.json +1 -1
  477. package/dist/lib/schemas-data/3.0/core/response.json +1 -1
  478. package/dist/lib/schemas-data/3.0/core/rights-constraint.json +4 -4
  479. package/dist/lib/schemas-data/3.0/core/seller-agent-ref.json +1 -1
  480. package/dist/lib/schemas-data/3.0/core/signal-definition.json +3 -3
  481. package/dist/lib/schemas-data/3.0/core/signal-filters.json +2 -2
  482. package/dist/lib/schemas-data/3.0/core/signal-id.json +1 -1
  483. package/dist/lib/schemas-data/3.0/core/signal-pricing-option.json +2 -2
  484. package/dist/lib/schemas-data/3.0/core/signal-pricing.json +6 -6
  485. package/dist/lib/schemas-data/3.0/core/signal-targeting.json +4 -4
  486. package/dist/lib/schemas-data/3.0/core/special.json +2 -2
  487. package/dist/lib/schemas-data/3.0/core/start-timing.json +1 -1
  488. package/dist/lib/schemas-data/3.0/core/store-item.json +3 -3
  489. package/dist/lib/schemas-data/3.0/core/talent.json +2 -2
  490. package/dist/lib/schemas-data/3.0/core/targeting.json +20 -20
  491. package/dist/lib/schemas-data/3.0/core/tasks-get-request.json +3 -3
  492. package/dist/lib/schemas-data/3.0/core/tasks-get-response.json +7 -7
  493. package/dist/lib/schemas-data/3.0/core/tasks-list-request.json +11 -11
  494. package/dist/lib/schemas-data/3.0/core/tasks-list-response.json +6 -6
  495. package/dist/lib/schemas-data/3.0/core/user-match.json +3 -3
  496. package/dist/lib/schemas-data/3.0/core/vehicle-item.json +4 -4
  497. package/dist/lib/schemas-data/3.0/core/vendor-pricing-option.json +2 -2
  498. package/dist/lib/schemas-data/3.0/core/x-entity-types.json +1 -1
  499. package/dist/lib/schemas-data/3.0/creative/asset-types/index.json +5 -5
  500. package/dist/lib/schemas-data/3.0/creative/creative-feature-result.json +2 -2
  501. package/dist/lib/schemas-data/3.0/creative/get-creative-delivery-request.json +5 -5
  502. package/dist/lib/schemas-data/3.0/creative/get-creative-delivery-response.json +7 -7
  503. package/dist/lib/schemas-data/3.0/creative/get-creative-features-request.json +5 -5
  504. package/dist/lib/schemas-data/3.0/creative/get-creative-features-response.json +8 -8
  505. package/dist/lib/schemas-data/3.0/creative/list-creative-formats-request.json +11 -11
  506. package/dist/lib/schemas-data/3.0/creative/list-creative-formats-response.json +7 -7
  507. package/dist/lib/schemas-data/3.0/creative/list-creatives-request.json +8 -8
  508. package/dist/lib/schemas-data/3.0/creative/list-creatives-response.json +14 -14
  509. package/dist/lib/schemas-data/3.0/creative/preview-creative-request.json +11 -11
  510. package/dist/lib/schemas-data/3.0/creative/preview-creative-response.json +12 -12
  511. package/dist/lib/schemas-data/3.0/creative/preview-render.json +1 -1
  512. package/dist/lib/schemas-data/3.0/creative/sync-creatives-async-response-input-required.json +3 -3
  513. package/dist/lib/schemas-data/3.0/creative/sync-creatives-async-response-submitted.json +3 -3
  514. package/dist/lib/schemas-data/3.0/creative/sync-creatives-async-response-working.json +3 -3
  515. package/dist/lib/schemas-data/3.0/creative/sync-creatives-request.json +7 -7
  516. package/dist/lib/schemas-data/3.0/creative/sync-creatives-response.json +13 -13
  517. package/dist/lib/schemas-data/3.0/enums/account-scope.json +1 -1
  518. package/dist/lib/schemas-data/3.0/enums/account-status.json +1 -1
  519. package/dist/lib/schemas-data/3.0/enums/action-source.json +1 -1
  520. package/dist/lib/schemas-data/3.0/enums/adcp-protocol.json +1 -1
  521. package/dist/lib/schemas-data/3.0/enums/adjustment-kind.json +1 -1
  522. package/dist/lib/schemas-data/3.0/enums/advertiser-industry.json +1 -1
  523. package/dist/lib/schemas-data/3.0/enums/age-verification-method.json +1 -1
  524. package/dist/lib/schemas-data/3.0/enums/assessment-status.json +1 -1
  525. package/dist/lib/schemas-data/3.0/enums/asset-content-type.json +1 -1
  526. package/dist/lib/schemas-data/3.0/enums/attribution-model.json +1 -1
  527. package/dist/lib/schemas-data/3.0/enums/audience-source.json +1 -1
  528. package/dist/lib/schemas-data/3.0/enums/audience-status.json +1 -1
  529. package/dist/lib/schemas-data/3.0/enums/audio-channel-layout.json +1 -1
  530. package/dist/lib/schemas-data/3.0/enums/auth-scheme.json +1 -1
  531. package/dist/lib/schemas-data/3.0/enums/available-metric.json +1 -1
  532. package/dist/lib/schemas-data/3.0/enums/billing-party.json +1 -1
  533. package/dist/lib/schemas-data/3.0/enums/binary-verdict.json +1 -1
  534. package/dist/lib/schemas-data/3.0/enums/brand-agent-type.json +1 -1
  535. package/dist/lib/schemas-data/3.0/enums/canceled-by.json +1 -1
  536. package/dist/lib/schemas-data/3.0/enums/catalog-action.json +1 -1
  537. package/dist/lib/schemas-data/3.0/enums/catalog-item-status.json +1 -1
  538. package/dist/lib/schemas-data/3.0/enums/catalog-type.json +1 -1
  539. package/dist/lib/schemas-data/3.0/enums/channels.json +1 -1
  540. package/dist/lib/schemas-data/3.0/enums/cloud-storage-protocol.json +1 -1
  541. package/dist/lib/schemas-data/3.0/enums/co-branding-requirement.json +1 -1
  542. package/dist/lib/schemas-data/3.0/enums/collection-cadence.json +1 -1
  543. package/dist/lib/schemas-data/3.0/enums/collection-kind.json +1 -1
  544. package/dist/lib/schemas-data/3.0/enums/collection-relationship.json +1 -1
  545. package/dist/lib/schemas-data/3.0/enums/collection-status.json +1 -1
  546. package/dist/lib/schemas-data/3.0/enums/consent-basis.json +1 -1
  547. package/dist/lib/schemas-data/3.0/enums/content-id-type.json +1 -1
  548. package/dist/lib/schemas-data/3.0/enums/content-rating-system.json +1 -1
  549. package/dist/lib/schemas-data/3.0/enums/creative-action.json +1 -1
  550. package/dist/lib/schemas-data/3.0/enums/creative-agent-capability.json +1 -1
  551. package/dist/lib/schemas-data/3.0/enums/creative-approval-status.json +1 -1
  552. package/dist/lib/schemas-data/3.0/enums/creative-identifier-type.json +1 -1
  553. package/dist/lib/schemas-data/3.0/enums/creative-quality.json +1 -1
  554. package/dist/lib/schemas-data/3.0/enums/creative-sort-field.json +1 -1
  555. package/dist/lib/schemas-data/3.0/enums/creative-status.json +1 -1
  556. package/dist/lib/schemas-data/3.0/enums/daast-tracking-event.json +1 -1
  557. package/dist/lib/schemas-data/3.0/enums/daast-version.json +1 -1
  558. package/dist/lib/schemas-data/3.0/enums/day-of-week.json +1 -1
  559. package/dist/lib/schemas-data/3.0/enums/delegation-authority.json +1 -1
  560. package/dist/lib/schemas-data/3.0/enums/delivery-type.json +1 -1
  561. package/dist/lib/schemas-data/3.0/enums/demographic-system.json +1 -1
  562. package/dist/lib/schemas-data/3.0/enums/derivative-type.json +1 -1
  563. package/dist/lib/schemas-data/3.0/enums/device-platform.json +1 -1
  564. package/dist/lib/schemas-data/3.0/enums/device-type.json +1 -1
  565. package/dist/lib/schemas-data/3.0/enums/digital-source-type.json +1 -1
  566. package/dist/lib/schemas-data/3.0/enums/dimension-unit.json +1 -1
  567. package/dist/lib/schemas-data/3.0/enums/disclosure-persistence.json +1 -1
  568. package/dist/lib/schemas-data/3.0/enums/disclosure-position.json +1 -1
  569. package/dist/lib/schemas-data/3.0/enums/distance-unit.json +1 -1
  570. package/dist/lib/schemas-data/3.0/enums/distribution-identifier-type.json +1 -1
  571. package/dist/lib/schemas-data/3.0/enums/error-code.json +3 -3
  572. package/dist/lib/schemas-data/3.0/enums/escalation-severity.json +1 -1
  573. package/dist/lib/schemas-data/3.0/enums/event-type.json +1 -1
  574. package/dist/lib/schemas-data/3.0/enums/exclusivity.json +1 -1
  575. package/dist/lib/schemas-data/3.0/enums/feature-check-status.json +1 -1
  576. package/dist/lib/schemas-data/3.0/enums/feed-format.json +1 -1
  577. package/dist/lib/schemas-data/3.0/enums/feedback-source.json +1 -1
  578. package/dist/lib/schemas-data/3.0/enums/forecast-method.json +1 -1
  579. package/dist/lib/schemas-data/3.0/enums/forecast-range-unit.json +1 -1
  580. package/dist/lib/schemas-data/3.0/enums/forecastable-metric.json +1 -1
  581. package/dist/lib/schemas-data/3.0/enums/format-id-parameter.json +1 -1
  582. package/dist/lib/schemas-data/3.0/enums/frame-rate-type.json +1 -1
  583. package/dist/lib/schemas-data/3.0/enums/frequency-cap-scope.json +1 -1
  584. package/dist/lib/schemas-data/3.0/enums/genre-taxonomy.json +1 -1
  585. package/dist/lib/schemas-data/3.0/enums/geo-level.json +1 -1
  586. package/dist/lib/schemas-data/3.0/enums/gop-type.json +1 -1
  587. package/dist/lib/schemas-data/3.0/enums/governance-decision.json +1 -1
  588. package/dist/lib/schemas-data/3.0/enums/governance-domain.json +1 -1
  589. package/dist/lib/schemas-data/3.0/enums/governance-mode.json +1 -1
  590. package/dist/lib/schemas-data/3.0/enums/governance-phase.json +1 -1
  591. package/dist/lib/schemas-data/3.0/enums/history-entry-type.json +1 -1
  592. package/dist/lib/schemas-data/3.0/enums/http-method.json +1 -1
  593. package/dist/lib/schemas-data/3.0/enums/identifier-types.json +1 -1
  594. package/dist/lib/schemas-data/3.0/enums/installment-status.json +1 -1
  595. package/dist/lib/schemas-data/3.0/enums/javascript-module-type.json +1 -1
  596. package/dist/lib/schemas-data/3.0/enums/landing-page-requirement.json +1 -1
  597. package/dist/lib/schemas-data/3.0/enums/makegood-remedy.json +1 -1
  598. package/dist/lib/schemas-data/3.0/enums/markdown-flavor.json +1 -1
  599. package/dist/lib/schemas-data/3.0/enums/match-id-type.json +1 -1
  600. package/dist/lib/schemas-data/3.0/enums/match-type.json +1 -1
  601. package/dist/lib/schemas-data/3.0/enums/media-buy-status.json +1 -1
  602. package/dist/lib/schemas-data/3.0/enums/media-buy-valid-action.json +1 -1
  603. package/dist/lib/schemas-data/3.0/enums/metric-type.json +1 -1
  604. package/dist/lib/schemas-data/3.0/enums/metro-system.json +1 -1
  605. package/dist/lib/schemas-data/3.0/enums/moov-atom-position.json +1 -1
  606. package/dist/lib/schemas-data/3.0/enums/notification-type.json +1 -1
  607. package/dist/lib/schemas-data/3.0/enums/outcome-type.json +1 -1
  608. package/dist/lib/schemas-data/3.0/enums/pacing.json +1 -1
  609. package/dist/lib/schemas-data/3.0/enums/payment-terms.json +1 -1
  610. package/dist/lib/schemas-data/3.0/enums/performance-standard-metric.json +1 -1
  611. package/dist/lib/schemas-data/3.0/enums/policy-category.json +1 -1
  612. package/dist/lib/schemas-data/3.0/enums/policy-enforcement.json +1 -1
  613. package/dist/lib/schemas-data/3.0/enums/postal-system.json +1 -1
  614. package/dist/lib/schemas-data/3.0/enums/preview-output-format.json +1 -1
  615. package/dist/lib/schemas-data/3.0/enums/pricing-model.json +1 -1
  616. package/dist/lib/schemas-data/3.0/enums/production-quality.json +1 -1
  617. package/dist/lib/schemas-data/3.0/enums/property-type.json +1 -1
  618. package/dist/lib/schemas-data/3.0/enums/proposal-status.json +1 -1
  619. package/dist/lib/schemas-data/3.0/enums/publisher-identifier-types.json +1 -1
  620. package/dist/lib/schemas-data/3.0/enums/purchase-type.json +1 -1
  621. package/dist/lib/schemas-data/3.0/enums/reach-unit.json +1 -1
  622. package/dist/lib/schemas-data/3.0/enums/reporting-frequency.json +1 -1
  623. package/dist/lib/schemas-data/3.0/enums/response-type.json +1 -1
  624. package/dist/lib/schemas-data/3.0/enums/restricted-attribute.json +1 -1
  625. package/dist/lib/schemas-data/3.0/enums/right-type.json +1 -1
  626. package/dist/lib/schemas-data/3.0/enums/right-use.json +1 -1
  627. package/dist/lib/schemas-data/3.0/enums/rights-billing-period.json +1 -1
  628. package/dist/lib/schemas-data/3.0/enums/scan-type.json +1 -1
  629. package/dist/lib/schemas-data/3.0/enums/si-session-status.json +1 -1
  630. package/dist/lib/schemas-data/3.0/enums/signal-catalog-type.json +1 -1
  631. package/dist/lib/schemas-data/3.0/enums/signal-source.json +1 -1
  632. package/dist/lib/schemas-data/3.0/enums/signal-value-type.json +1 -1
  633. package/dist/lib/schemas-data/3.0/enums/snapshot-unavailable-reason.json +1 -1
  634. package/dist/lib/schemas-data/3.0/enums/sort-direction.json +1 -1
  635. package/dist/lib/schemas-data/3.0/enums/sort-metric.json +1 -1
  636. package/dist/lib/schemas-data/3.0/enums/special-category.json +1 -1
  637. package/dist/lib/schemas-data/3.0/enums/specialism.json +1 -1
  638. package/dist/lib/schemas-data/3.0/enums/talent-role.json +1 -1
  639. package/dist/lib/schemas-data/3.0/enums/task-status.json +1 -1
  640. package/dist/lib/schemas-data/3.0/enums/task-type.json +1 -1
  641. package/dist/lib/schemas-data/3.0/enums/transport-mode.json +1 -1
  642. package/dist/lib/schemas-data/3.0/enums/travel-time-unit.json +1 -1
  643. package/dist/lib/schemas-data/3.0/enums/uid-type.json +1 -1
  644. package/dist/lib/schemas-data/3.0/enums/universal-macro.json +1 -1
  645. package/dist/lib/schemas-data/3.0/enums/update-frequency.json +1 -1
  646. package/dist/lib/schemas-data/3.0/enums/url-asset-type.json +1 -1
  647. package/dist/lib/schemas-data/3.0/enums/validation-mode.json +1 -1
  648. package/dist/lib/schemas-data/3.0/enums/vast-tracking-event.json +1 -1
  649. package/dist/lib/schemas-data/3.0/enums/vast-version.json +1 -1
  650. package/dist/lib/schemas-data/3.0/enums/viewability-standard.json +1 -1
  651. package/dist/lib/schemas-data/3.0/enums/wcag-level.json +1 -1
  652. package/dist/lib/schemas-data/3.0/enums/webhook-response-type.json +1 -1
  653. package/dist/lib/schemas-data/3.0/enums/webhook-security-method.json +1 -1
  654. package/dist/lib/schemas-data/3.0/error-details/account-setup-required.json +1 -1
  655. package/dist/lib/schemas-data/3.0/error-details/audience-too-small.json +1 -1
  656. package/dist/lib/schemas-data/3.0/error-details/budget-too-low.json +1 -1
  657. package/dist/lib/schemas-data/3.0/error-details/conflict.json +1 -1
  658. package/dist/lib/schemas-data/3.0/error-details/creative-rejected.json +1 -1
  659. package/dist/lib/schemas-data/3.0/error-details/policy-violation.json +1 -1
  660. package/dist/lib/schemas-data/3.0/error-details/rate-limited.json +1 -1
  661. package/dist/lib/schemas-data/3.0/error-details/vendor-error-codes.json +1 -1
  662. package/dist/lib/schemas-data/3.0/extensions/extension-meta.json +1 -1
  663. package/dist/lib/schemas-data/3.0/extensions/index.json +2 -2
  664. package/dist/lib/schemas-data/3.0/governance/attribute-definition.json +1 -1
  665. package/dist/lib/schemas-data/3.0/governance/audience-constraints.json +3 -3
  666. package/dist/lib/schemas-data/3.0/governance/check-governance-request.json +7 -7
  667. package/dist/lib/schemas-data/3.0/governance/check-governance-response.json +6 -6
  668. package/dist/lib/schemas-data/3.0/governance/get-plan-audit-logs-request.json +4 -4
  669. package/dist/lib/schemas-data/3.0/governance/get-plan-audit-logs-response.json +9 -9
  670. package/dist/lib/schemas-data/3.0/governance/policy-category-definition.json +2 -2
  671. package/dist/lib/schemas-data/3.0/governance/policy-entry.json +6 -6
  672. package/dist/lib/schemas-data/3.0/governance/policy-ref.json +1 -1
  673. package/dist/lib/schemas-data/3.0/governance/report-plan-outcome-request.json +6 -6
  674. package/dist/lib/schemas-data/3.0/governance/report-plan-outcome-response.json +4 -4
  675. package/dist/lib/schemas-data/3.0/governance/sync-plans-request.json +13 -13
  676. package/dist/lib/schemas-data/3.0/governance/sync-plans-response.json +4 -4
  677. package/dist/lib/schemas-data/3.0/index.json +364 -364
  678. package/dist/lib/schemas-data/3.0/manifest.json +5 -5
  679. package/dist/lib/schemas-data/3.0/manifest.schema.json +1 -1
  680. package/dist/lib/schemas-data/3.0/media-buy/build-creative-async-response-input-required.json +4 -4
  681. package/dist/lib/schemas-data/3.0/media-buy/build-creative-async-response-submitted.json +3 -3
  682. package/dist/lib/schemas-data/3.0/media-buy/build-creative-async-response-working.json +3 -3
  683. package/dist/lib/schemas-data/3.0/media-buy/build-creative-request.json +11 -11
  684. package/dist/lib/schemas-data/3.0/media-buy/build-creative-response.json +17 -17
  685. package/dist/lib/schemas-data/3.0/media-buy/create-media-buy-async-response-input-required.json +4 -4
  686. package/dist/lib/schemas-data/3.0/media-buy/create-media-buy-async-response-submitted.json +3 -3
  687. package/dist/lib/schemas-data/3.0/media-buy/create-media-buy-async-response-working.json +3 -3
  688. package/dist/lib/schemas-data/3.0/media-buy/create-media-buy-request.json +12 -12
  689. package/dist/lib/schemas-data/3.0/media-buy/create-media-buy-response.json +15 -15
  690. package/dist/lib/schemas-data/3.0/media-buy/get-media-buy-delivery-request.json +17 -17
  691. package/dist/lib/schemas-data/3.0/media-buy/get-media-buy-delivery-response.json +24 -24
  692. package/dist/lib/schemas-data/3.0/media-buy/get-media-buys-request.json +7 -7
  693. package/dist/lib/schemas-data/3.0/media-buy/get-media-buys-response.json +19 -19
  694. package/dist/lib/schemas-data/3.0/media-buy/get-products-async-response-input-required.json +4 -4
  695. package/dist/lib/schemas-data/3.0/media-buy/get-products-async-response-submitted.json +3 -3
  696. package/dist/lib/schemas-data/3.0/media-buy/get-products-async-response-working.json +3 -3
  697. package/dist/lib/schemas-data/3.0/media-buy/get-products-request.json +11 -11
  698. package/dist/lib/schemas-data/3.0/media-buy/get-products-response.json +8 -8
  699. package/dist/lib/schemas-data/3.0/media-buy/list-creative-formats-request.json +11 -11
  700. package/dist/lib/schemas-data/3.0/media-buy/list-creative-formats-response.json +7 -7
  701. package/dist/lib/schemas-data/3.0/media-buy/log-event-request.json +4 -4
  702. package/dist/lib/schemas-data/3.0/media-buy/log-event-response.json +6 -6
  703. package/dist/lib/schemas-data/3.0/media-buy/package-request.json +12 -12
  704. package/dist/lib/schemas-data/3.0/media-buy/package-update.json +13 -13
  705. package/dist/lib/schemas-data/3.0/media-buy/provide-performance-feedback-request.json +6 -6
  706. package/dist/lib/schemas-data/3.0/media-buy/provide-performance-feedback-response.json +6 -6
  707. package/dist/lib/schemas-data/3.0/media-buy/sync-audiences-request.json +7 -7
  708. package/dist/lib/schemas-data/3.0/media-buy/sync-audiences-response.json +9 -9
  709. package/dist/lib/schemas-data/3.0/media-buy/sync-catalogs-async-response-input-required.json +3 -3
  710. package/dist/lib/schemas-data/3.0/media-buy/sync-catalogs-async-response-submitted.json +3 -3
  711. package/dist/lib/schemas-data/3.0/media-buy/sync-catalogs-async-response-working.json +3 -3
  712. package/dist/lib/schemas-data/3.0/media-buy/sync-catalogs-request.json +7 -7
  713. package/dist/lib/schemas-data/3.0/media-buy/sync-catalogs-response.json +9 -9
  714. package/dist/lib/schemas-data/3.0/media-buy/sync-event-sources-request.json +5 -5
  715. package/dist/lib/schemas-data/3.0/media-buy/sync-event-sources-response.json +10 -10
  716. package/dist/lib/schemas-data/3.0/media-buy/update-media-buy-async-response-input-required.json +3 -3
  717. package/dist/lib/schemas-data/3.0/media-buy/update-media-buy-async-response-submitted.json +3 -3
  718. package/dist/lib/schemas-data/3.0/media-buy/update-media-buy-async-response-working.json +3 -3
  719. package/dist/lib/schemas-data/3.0/media-buy/update-media-buy-request.json +10 -10
  720. package/dist/lib/schemas-data/3.0/media-buy/update-media-buy-response.json +10 -10
  721. package/dist/lib/schemas-data/3.0/pricing-options/cpa-option.json +4 -4
  722. package/dist/lib/schemas-data/3.0/pricing-options/cpc-option.json +4 -4
  723. package/dist/lib/schemas-data/3.0/pricing-options/cpcv-option.json +4 -4
  724. package/dist/lib/schemas-data/3.0/pricing-options/cpm-option.json +4 -4
  725. package/dist/lib/schemas-data/3.0/pricing-options/cpp-option.json +5 -5
  726. package/dist/lib/schemas-data/3.0/pricing-options/cpv-option.json +4 -4
  727. package/dist/lib/schemas-data/3.0/pricing-options/flat-rate-option.json +4 -4
  728. package/dist/lib/schemas-data/3.0/pricing-options/price-breakdown.json +2 -2
  729. package/dist/lib/schemas-data/3.0/pricing-options/price-guidance.json +1 -1
  730. package/dist/lib/schemas-data/3.0/pricing-options/time-option.json +4 -4
  731. package/dist/lib/schemas-data/3.0/pricing-options/vcpm-option.json +4 -4
  732. package/dist/lib/schemas-data/3.0/property/authorization-result.json +1 -1
  733. package/dist/lib/schemas-data/3.0/property/base-property-source.json +4 -4
  734. package/dist/lib/schemas-data/3.0/property/create-property-list-request.json +7 -7
  735. package/dist/lib/schemas-data/3.0/property/create-property-list-response.json +4 -4
  736. package/dist/lib/schemas-data/3.0/property/delete-property-list-request.json +4 -4
  737. package/dist/lib/schemas-data/3.0/property/delete-property-list-response.json +3 -3
  738. package/dist/lib/schemas-data/3.0/property/delivery-record.json +3 -3
  739. package/dist/lib/schemas-data/3.0/property/get-property-list-request.json +4 -4
  740. package/dist/lib/schemas-data/3.0/property/get-property-list-response.json +7 -7
  741. package/dist/lib/schemas-data/3.0/property/list-property-lists-request.json +5 -5
  742. package/dist/lib/schemas-data/3.0/property/list-property-lists-response.json +5 -5
  743. package/dist/lib/schemas-data/3.0/property/property-error.json +2 -2
  744. package/dist/lib/schemas-data/3.0/property/property-feature-definition.json +2 -2
  745. package/dist/lib/schemas-data/3.0/property/property-feature-result.json +4 -4
  746. package/dist/lib/schemas-data/3.0/property/property-feature-value.json +2 -2
  747. package/dist/lib/schemas-data/3.0/property/property-feature.json +1 -1
  748. package/dist/lib/schemas-data/3.0/property/property-list-changed-webhook.json +2 -2
  749. package/dist/lib/schemas-data/3.0/property/property-list-filters.json +5 -5
  750. package/dist/lib/schemas-data/3.0/property/property-list.json +6 -6
  751. package/dist/lib/schemas-data/3.0/property/update-property-list-request.json +7 -7
  752. package/dist/lib/schemas-data/3.0/property/update-property-list-response.json +4 -4
  753. package/dist/lib/schemas-data/3.0/property/validate-property-delivery-request.json +5 -5
  754. package/dist/lib/schemas-data/3.0/property/validate-property-delivery-response.json +4 -4
  755. package/dist/lib/schemas-data/3.0/property/validation-result.json +5 -5
  756. package/dist/lib/schemas-data/3.0/protocol/get-adcp-capabilities-request.json +3 -3
  757. package/dist/lib/schemas-data/3.0/protocol/get-adcp-capabilities-response.json +25 -25
  758. package/dist/lib/schemas-data/3.0/signals/activate-signal-request.json +5 -5
  759. package/dist/lib/schemas-data/3.0/signals/activate-signal-response.json +7 -7
  760. package/dist/lib/schemas-data/3.0/signals/get-signals-request.json +8 -8
  761. package/dist/lib/schemas-data/3.0/signals/get-signals-response.json +10 -10
  762. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-capabilities.json +1 -1
  763. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-get-offering-request.json +3 -3
  764. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-get-offering-response.json +4 -4
  765. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-identity.json +1 -1
  766. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-initiate-session-request.json +5 -5
  767. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-initiate-session-response.json +7 -7
  768. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-send-message-request.json +3 -3
  769. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-send-message-response.json +7 -7
  770. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-terminate-session-request.json +3 -3
  771. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-terminate-session-response.json +5 -5
  772. package/dist/lib/schemas-data/3.0/sponsored-intelligence/si-ui-element.json +1 -1
  773. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  774. package/dist/lib/server/create-adcp-server.d.ts +33 -0
  775. package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
  776. package/dist/lib/server/create-adcp-server.js +127 -1
  777. package/dist/lib/server/create-adcp-server.js.map +1 -1
  778. package/dist/lib/server/credential-policy.d.ts +221 -0
  779. package/dist/lib/server/credential-policy.d.ts.map +1 -0
  780. package/dist/lib/server/credential-policy.js +260 -0
  781. package/dist/lib/server/credential-policy.js.map +1 -0
  782. package/dist/lib/server/decisioning/account.d.ts +14 -0
  783. package/dist/lib/server/decisioning/account.d.ts.map +1 -1
  784. package/dist/lib/server/decisioning/account.js.map +1 -1
  785. package/dist/lib/server/decisioning/runtime/entity-hydration.generated.js +1 -1
  786. package/dist/lib/server/decisioning/runtime/from-platform.d.ts.map +1 -1
  787. package/dist/lib/server/decisioning/runtime/from-platform.js +36 -11
  788. package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
  789. package/dist/lib/server/dynamic-registry.d.ts +219 -0
  790. package/dist/lib/server/dynamic-registry.d.ts.map +1 -0
  791. package/dist/lib/server/dynamic-registry.js +245 -0
  792. package/dist/lib/server/dynamic-registry.js.map +1 -0
  793. package/dist/lib/server/index.d.ts +9 -0
  794. package/dist/lib/server/index.d.ts.map +1 -1
  795. package/dist/lib/server/index.js +21 -4
  796. package/dist/lib/server/index.js.map +1 -1
  797. package/dist/lib/server/operational-platform.d.ts +239 -0
  798. package/dist/lib/server/operational-platform.d.ts.map +1 -0
  799. package/dist/lib/server/operational-platform.js +94 -0
  800. package/dist/lib/server/operational-platform.js.map +1 -0
  801. package/dist/lib/server/socket-mode/conformance-client.d.ts +83 -0
  802. package/dist/lib/server/socket-mode/conformance-client.d.ts.map +1 -0
  803. package/dist/lib/server/socket-mode/conformance-client.js +117 -0
  804. package/dist/lib/server/socket-mode/conformance-client.js.map +1 -0
  805. package/dist/lib/server/socket-mode/index.d.ts +15 -0
  806. package/dist/lib/server/socket-mode/index.d.ts.map +1 -0
  807. package/dist/lib/server/socket-mode/index.js +20 -0
  808. package/dist/lib/server/socket-mode/index.js.map +1 -0
  809. package/dist/lib/server/socket-mode/ws-transport.d.ts +26 -0
  810. package/dist/lib/server/socket-mode/ws-transport.d.ts.map +1 -0
  811. package/dist/lib/server/socket-mode/ws-transport.js +93 -0
  812. package/dist/lib/server/socket-mode/ws-transport.js.map +1 -0
  813. package/dist/lib/server/wire-safe.d.ts +211 -0
  814. package/dist/lib/server/wire-safe.d.ts.map +1 -0
  815. package/dist/lib/server/wire-safe.js +231 -0
  816. package/dist/lib/server/wire-safe.js.map +1 -0
  817. package/dist/lib/server/wire-spec-fields.generated.d.ts +168 -0
  818. package/dist/lib/server/wire-spec-fields.generated.d.ts.map +1 -0
  819. package/dist/lib/server/wire-spec-fields.generated.js +172 -0
  820. package/dist/lib/server/wire-spec-fields.generated.js.map +1 -0
  821. package/dist/lib/testing/compliance/index.d.ts +2 -0
  822. package/dist/lib/testing/compliance/index.d.ts.map +1 -1
  823. package/dist/lib/testing/compliance/index.js +6 -1
  824. package/dist/lib/testing/compliance/index.js.map +1 -1
  825. package/dist/lib/testing/compliance/summary.d.ts +77 -0
  826. package/dist/lib/testing/compliance/summary.d.ts.map +1 -0
  827. package/dist/lib/testing/compliance/summary.js +176 -0
  828. package/dist/lib/testing/compliance/summary.js.map +1 -0
  829. package/dist/lib/testing/comply-controller.d.ts +42 -1
  830. package/dist/lib/testing/comply-controller.d.ts.map +1 -1
  831. package/dist/lib/testing/comply-controller.js +13 -1
  832. package/dist/lib/testing/comply-controller.js.map +1 -1
  833. package/dist/lib/testing/storyboard/compliance.d.ts +26 -0
  834. package/dist/lib/testing/storyboard/compliance.d.ts.map +1 -1
  835. package/dist/lib/testing/storyboard/compliance.js +51 -0
  836. package/dist/lib/testing/storyboard/compliance.js.map +1 -1
  837. package/dist/lib/testing/storyboard/index.d.ts +2 -2
  838. package/dist/lib/testing/storyboard/index.d.ts.map +1 -1
  839. package/dist/lib/testing/storyboard/index.js +4 -2
  840. package/dist/lib/testing/storyboard/index.js.map +1 -1
  841. package/dist/lib/testing/storyboard/request-builder.d.ts.map +1 -1
  842. package/dist/lib/testing/storyboard/request-builder.js +63 -40
  843. package/dist/lib/testing/storyboard/request-builder.js.map +1 -1
  844. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  845. package/dist/lib/testing/storyboard/runner.js +58 -5
  846. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  847. package/dist/lib/types/core.generated.d.ts +54 -14
  848. package/dist/lib/types/core.generated.d.ts.map +1 -1
  849. package/dist/lib/types/core.generated.js +2 -2
  850. package/dist/lib/types/error-codes.d.ts +2 -2
  851. package/dist/lib/types/index.d.ts +1 -1
  852. package/dist/lib/types/index.d.ts.map +1 -1
  853. package/dist/lib/types/index.js.map +1 -1
  854. package/dist/lib/types/manifest.generated.d.ts +5 -5
  855. package/dist/lib/types/manifest.generated.js +3 -3
  856. package/dist/lib/types/manifest.generated.js.map +1 -1
  857. package/dist/lib/types/schemas.generated.d.ts +465 -381
  858. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  859. package/dist/lib/types/schemas.generated.js +171 -143
  860. package/dist/lib/types/schemas.generated.js.map +1 -1
  861. package/dist/lib/types/tools.generated.d.ts +42 -14
  862. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  863. package/dist/lib/version.d.ts +7 -7
  864. package/dist/lib/version.d.ts.map +1 -1
  865. package/dist/lib/version.js +6 -5
  866. package/dist/lib/version.js.map +1 -1
  867. package/docs/llms.txt +4 -3
  868. package/examples/hello_creative_adapter_ad_server.ts +22 -3
  869. package/examples/hello_creative_adapter_template.ts +61 -6
  870. package/examples/hello_seller_adapter_guaranteed.ts +85 -10
  871. package/examples/hello_seller_adapter_multi_tenant.ts +39 -5
  872. package/examples/hello_seller_adapter_non_guaranteed.ts +54 -3
  873. package/examples/hello_seller_adapter_social.ts +1 -1
  874. package/examples/hello_signals_adapter_marketplace.ts +34 -29
  875. package/package.json +6 -5
  876. package/skills/SHAPE-GOTCHAS.md +18 -0
  877. package/skills/build-brand-rights-agent/SKILL.md +61 -597
  878. package/skills/build-creative-agent/SKILL.md +69 -750
  879. package/skills/build-generative-seller-agent/SKILL.md +43 -583
  880. package/skills/build-governance-agent/SKILL.md +63 -959
  881. package/skills/build-holdco-agent/SKILL.md +8 -0
  882. package/skills/build-retail-media-agent/SKILL.md +46 -480
  883. package/skills/build-seller-agent/SKILL.md +53 -1797
  884. package/skills/build-si-agent/SKILL.md +50 -368
  885. package/skills/build-signals-agent/SKILL.md +49 -539
  886. package/skills/cross-cutting.md +84 -0
  887. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/brand/index.yaml +0 -0
  888. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/creative/index.yaml +0 -0
  889. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/governance/index.yaml +0 -0
  890. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/media-buy/creative-reception.yaml +0 -0
  891. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/media-buy/index.yaml +0 -0
  892. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  893. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +0 -0
  894. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/media-buy/scenarios/delivery_reporting.yaml +0 -0
  895. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/media-buy/scenarios/governance_approved.yaml +0 -0
  896. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/media-buy/scenarios/governance_conditions.yaml +0 -0
  897. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/media-buy/scenarios/governance_denied.yaml +0 -0
  898. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
  899. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/media-buy/scenarios/invalid_transitions.yaml +0 -0
  900. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -0
  901. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/media-buy/scenarios/measurement_terms_rejected.yaml +0 -0
  902. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/media-buy/scenarios/pending_creatives_to_start.yaml +0 -0
  903. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/media-buy/scenarios/proposal_finalize.yaml +0 -0
  904. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/media-buy/scenarios/refine_products.yaml +0 -0
  905. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/media-buy/state-machine.yaml +0 -0
  906. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/signals/index.yaml +0 -0
  907. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/domains/sponsored-intelligence/index.yaml +0 -0
  908. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/brand/index.yaml +0 -0
  909. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/creative/index.yaml +0 -0
  910. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/governance/index.yaml +0 -0
  911. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/media-buy/creative-reception.yaml +0 -0
  912. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/media-buy/index.yaml +0 -0
  913. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  914. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +0 -0
  915. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/media-buy/scenarios/delivery_reporting.yaml +0 -0
  916. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/media-buy/scenarios/governance_approved.yaml +0 -0
  917. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/media-buy/scenarios/governance_conditions.yaml +0 -0
  918. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/media-buy/scenarios/governance_denied.yaml +0 -0
  919. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
  920. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/media-buy/scenarios/invalid_transitions.yaml +0 -0
  921. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -0
  922. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +0 -0
  923. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +0 -0
  924. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -0
  925. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/media-buy/scenarios/refine_products.yaml +0 -0
  926. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/media-buy/state-machine.yaml +0 -0
  927. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/signals/index.yaml +0 -0
  928. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/protocols/sponsored-intelligence/index.yaml +0 -0
  929. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/audience-sync/index.yaml +0 -0
  930. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/brand-rights/index.yaml +0 -0
  931. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -0
  932. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/collection-lists/index.yaml +0 -0
  933. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/content-standards/index.yaml +0 -0
  934. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/creative-ad-server/index.yaml +0 -0
  935. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/creative-generative/generative-seller.yaml +0 -0
  936. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/creative-generative/index.yaml +0 -0
  937. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/creative-template/index.yaml +0 -0
  938. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/governance-aware-seller/index.yaml +0 -0
  939. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/governance-delivery-monitor/index.yaml +0 -0
  940. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/governance-spend-authority/denied.yaml +0 -0
  941. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/governance-spend-authority/index.yaml +0 -0
  942. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/property-lists/index.yaml +0 -0
  943. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/sales-broadcast-tv/index.yaml +0 -0
  944. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/sales-catalog-driven/index.yaml +0 -0
  945. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/sales-non-guaranteed/index.yaml +0 -0
  946. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/sales-proposal-mode/index.yaml +0 -0
  947. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/sales-social/index.yaml +0 -0
  948. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/signal-marketplace/index.yaml +0 -0
  949. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -0
  950. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/specialisms/signal-owned/index.yaml +0 -0
  951. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-kits/acme-outdoor.yaml +0 -0
  952. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-kits/bistro-oranje.yaml +0 -0
  953. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-kits/nova-motors.yaml +0 -0
  954. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-kits/osei-natural.yaml +0 -0
  955. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-kits/signed-requests-runner.yaml +0 -0
  956. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-kits/substitution-observer-runner.yaml +0 -0
  957. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-kits/summit-foods.yaml +0 -0
  958. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-kits/webhook-receiver-runner.yaml +0 -0
  959. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/plan-hash/001-minimal-plan.json +0 -0
  960. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/plan-hash/002-full-plan.json +0 -0
  961. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -0
  962. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/plan-hash/004a-human-review-omitted.json +0 -0
  963. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -0
  964. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -0
  965. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -0
  966. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -0
  967. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -0
  968. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/plan-hash/007-unicode-objectives.json +0 -0
  969. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -0
  970. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/README.md +0 -0
  971. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/canonicalization.json +0 -0
  972. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/keys.json +0 -0
  973. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/001-no-signature-header.json +0 -0
  974. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/002-wrong-tag.json +0 -0
  975. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/003-expired-signature.json +0 -0
  976. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/004-window-too-long.json +0 -0
  977. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/005-alg-not-allowed.json +0 -0
  978. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/006-missing-covered-component.json +0 -0
  979. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/007-missing-content-digest.json +0 -0
  980. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/008-unknown-keyid.json +0 -0
  981. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +0 -0
  982. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/010-content-digest-mismatch.json +0 -0
  983. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/011-malformed-header.json +0 -0
  984. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/012-missing-expires-param.json +0 -0
  985. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/013-expires-le-created.json +0 -0
  986. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/014-missing-nonce-param.json +0 -0
  987. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/015-signature-invalid.json +0 -0
  988. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/016-replayed-nonce.json +0 -0
  989. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/017-key-revoked.json +0 -0
  990. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +0 -0
  991. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/019-signature-without-signature-input.json +0 -0
  992. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/020-rate-abuse.json +0 -0
  993. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +0 -0
  994. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/022-multi-valued-content-type.json +0 -0
  995. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +0 -0
  996. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/024-unquoted-string-param.json +0 -0
  997. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +0 -0
  998. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/026-non-ascii-host.json +0 -0
  999. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +0 -0
  1000. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/positive/001-basic-post.json +0 -0
  1001. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -0
  1002. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/positive/003-es256-post.json +0 -0
  1003. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/positive/004-multiple-signature-labels.json +0 -0
  1004. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/positive/005-default-port-stripped.json +0 -0
  1005. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/positive/006-dot-segment-path.json +0 -0
  1006. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -0
  1007. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -0
  1008. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +0 -0
  1009. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +0 -0
  1010. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/positive/011-ipv6-authority.json +0 -0
  1011. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +0 -0
  1012. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/README.md +0 -0
  1013. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/keys.json +0 -0
  1014. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -0
  1015. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -0
  1016. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -0
  1017. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -0
  1018. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -0
  1019. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -0
  1020. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -0
  1021. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -0
  1022. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -0
  1023. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -0
  1024. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -0
  1025. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -0
  1026. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -0
  1027. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -0
  1028. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -0
  1029. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -0
  1030. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -0
  1031. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -0
  1032. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -0
  1033. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -0
  1034. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -0
  1035. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/positive/001-basic-post.json +0 -0
  1036. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/positive/002-es256-post.json +0 -0
  1037. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -0
  1038. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -0
  1039. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -0
  1040. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -0
  1041. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -0
  1042. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/universal/capability-discovery.yaml +0 -0
  1043. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/universal/collection-lists-pagination-integrity.yaml +0 -0
  1044. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/universal/content-standards-pagination-integrity.yaml +0 -0
  1045. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/universal/deterministic-testing.yaml +0 -0
  1046. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/universal/error-compliance.yaml +0 -0
  1047. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/universal/fictional-entities.yaml +0 -0
  1048. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/universal/get-media-buys-pagination-integrity.yaml +0 -0
  1049. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/universal/get-signals-pagination-integrity.yaml +0 -0
  1050. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/universal/idempotency.yaml +0 -0
  1051. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/universal/pagination-integrity-creative-formats.yaml +0 -0
  1052. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/universal/pagination-integrity-list-accounts.yaml +0 -0
  1053. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/universal/pagination-integrity.yaml +0 -0
  1054. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/universal/property-lists-pagination-integrity.yaml +0 -0
  1055. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/universal/runner-output-contract.yaml +0 -0
  1056. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/universal/schema-validation.yaml +0 -0
  1057. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/universal/security.yaml +0 -0
  1058. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/universal/signed-requests.yaml +0 -0
  1059. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/universal/v3-envelope-integrity.yaml +0 -0
  1060. /package/compliance/cache/{3.0.5 → 3.0.6.previous}/universal/webhook-emission.yaml +0 -0
@@ -5,794 +5,113 @@ description: Use when building an AdCP creative agent — an ad server, creative
5
5
 
6
6
  # Build a Creative Agent
7
7
 
8
- ## Overview
8
+ A creative agent accepts assets from buyers, stores or transforms them, and returns serving artifacts (tags, rendered manifests, previews). The fastest path to a passing agent is to **fork a worked adapter** that matches your archetype. This skill tells you which one and what cross-cutting rules apply.
9
9
 
10
- A creative agent manages the creative lifecycle: accepts assets from buyers, stores them in a library, builds serving tags, and renders previews. Unlike a generative seller (which also sells inventory), a creative agent is a standalone creative platform — it manages creatives but doesn't sell media.
10
+ ## Pick your fork target
11
11
 
12
- > **Common shape gotchas:** `PreviewCreativeResponse` is a three-way discriminated union (`single` | `batch` | `variant`); `BuildCreativeReturn` has 4 valid shapes (framework auto-wraps bare manifests); `VASTAsset` requires `delivery_type` (`'inline'` or `'redirect'`) before `content`/`vast_url`. See [SHAPE-GOTCHAS.md](../SHAPE-GOTCHAS.md) for the patterns adopters consistently get wrong on first pass — schema validators catch these at runtime; type checkers don't.
12
+ Three creative archetypes; two have dedicated worked adapters, the third lives in `build-generative-seller-agent` because it's coupled with selling inventory.
13
13
 
14
- ## When to Use
14
+ | Specialism | Archetype | Fork this | Mock upstream | Storyboard |
15
+ | --- | --- | --- | --- | --- |
16
+ | `creative-ad-server` | Stateful library, pricing + billing (Innovid, Flashtalking, CM360, GAM-creative) | [`hello_creative_adapter_ad_server.ts`](../../examples/hello_creative_adapter_ad_server.ts) | `npx adcp mock-server creative-ad-server` | `creative_ad_server` |
17
+ | `creative-template` | Stateless transform from inline manifest (Celtra, AudioStack, ElevenLabs, Resemble) | [`hello_creative_adapter_template.ts`](../../examples/hello_creative_adapter_template.ts) | `npx adcp mock-server creative-template` | `creative_template` |
18
+ | `creative-generative` | Brief-to-creative generation (AI ad networks coupled with sales) | → `skills/build-generative-seller-agent/` | — | `creative_generative` |
15
19
 
16
- - User wants to build an ad server, creative management platform, or creative rendering service
17
- - User mentions `build_creative`, `preview_creative`, `sync_creatives`, or `list_creatives`
18
- - User references creative formats, VAST tags, serving tags, or creative libraries
20
+ The `interaction_model` in each specialism's `index.yaml` is the forcing function: `stateful_ad_server`, `stateless_transform`, `stateless_generate`. Decide which one matches your business, then fork the adapter for that row.
19
21
 
20
- **Not this skill:**
21
-
22
- - Selling inventory + generating creatives → `skills/build-generative-seller-agent/`
23
- - Selling inventory (no creative management) → `skills/build-seller-agent/`
24
- - Serving audience segments → `skills/build-signals-agent/`
25
-
26
- **Often claimed alongside:** [`creative-generative`](../build-generative-seller-agent/SKILL.md) (hybrid creative platform — template-driven + AI-generated ads share the same library), [`sales-catalog-driven`](../build-retail-media-agent/SKILL.md) (retail-media dynamic-creative rendering). See [Common multi-specialism bundles](../../examples/README.md#common-multi-specialism-bundles).
27
-
28
- ## Specialisms This Skill Covers
29
-
30
- Creative specialisms are three distinct archetypes with materially different tool contracts. Pick the one that matches your platform — do not try to make one handler cover all three.
31
-
32
- | Specialism | Archetype | `build_creative` behavior | `sync_creatives` behavior | See |
33
- | --------------------- | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -------------------------------------------------------- |
34
- | `creative-ad-server` | Stateful library, pricing + billing | Look up in library by `target_format_id`; return VAST/tag output with macro placeholders; price the output (`pricing_option_id`, `vendor_cost`) | Accept assets into the library; support `include_pricing=true` on `list_creatives` | [§ creative-ad-server](#specialism-creative-ad-server) |
35
- | `creative-template` | Stateless transform | Build from inline `creative_manifest` in the request; no `ctx.store` lookup; support `target_format_ids` (plural) for multi-format | Not used — agents in this specialism are stateless | [§ creative-template](#specialism-creative-template) |
36
- | `creative-generative` | Brief-to-creative generation | Generate assets from `message` + `brand.domain`; honor `quality: draft\|production`; support refinement (re-send manifest in) | Not used — output is ephemeral; buyer syncs to the seller separately | [§ creative-generative](#specialism-creative-generative) |
37
-
38
- The `interaction_model` in each specialism's `index.yaml` is the forcing function: `stateful_ad_server`, `stateless_transform`, `stateless_generate`. Decide which one matches your business, then follow the archetype section below.
39
-
40
- ## Protocol-Wide Requirements
22
+ For exact response shapes, error codes, and optional fields, `docs/llms.txt` is the canonical reference. The fork target stays in sync with the spec because PR #1394's three-gate contract fails CI when it drifts.
41
23
 
42
- Full treatment in `skills/build-seller-agent/SKILL.md` §Protocol-Wide Requirements and §Composing. Minimum viable pointers for a creative agent:
24
+ ## When to use this skill
43
25
 
44
- - **`idempotency_key`** on every mutating request (`sync_creatives`, `build_creative`, `report_usage`, any `sync_*` you implement). Pass `createIdempotencyStore` to `createAdcpServerFromPlatform(platform, { idempotency })`.
45
- - **Authentication** via `serve({ authenticate })` with `verifyApiKey`/`verifyBearer` from `@adcp/sdk/server`. Unauthenticated agents fail the universal `security_baseline` storyboard.
46
- - **Signature-header transparency**: accept requests with `Signature-Input`/`Signature` headers even if you don't claim `signed-requests`.
26
+ - User wants to build an ad server, creative management platform, or audio creative agent
27
+ - User mentions `sync_creatives`, `build_creative`, `list_creative_formats`, or VAST/tag generation
47
28
 
48
- ## Webhooks (for async review pipelines)
49
-
50
- Creative review flows are naturally async — `sync_creatives` may return `pending_review` with a task envelope, and your review pipeline emits completion webhooks when the creative is approved, rejected, or transitions to a new state. `build_creative` for the ad-server archetype emits `report_usage` completion webhooks. Use `ctx.emitWebhook` — don't hand-roll `fetch` with HMAC signing.
51
-
52
- Pass `webhooks: { signerKey }` to `createAdcpServerFromPlatform(platform, { webhooks })` and call `ctx.emitWebhook({ url, payload, operation_id })` from any handler. The framework handles RFC 9421 signing, stable `idempotency_key` across retries, backoff + terminal error handling. Full pattern in [`skills/build-seller-agent/SKILL.md`](../build-seller-agent/SKILL.md) § Webhooks.
53
-
54
- **`operation_id` rules** (the top at-least-once-delivery bug): stable across retries. `creative_review.${creative_id}` or `report_usage.${report_batch_id}` — NOT a fresh UUID per retry.
55
-
56
- ## Before Writing Code
57
-
58
- Determine these things. Ask the user — don't guess.
29
+ **Not this skill:**
59
30
 
60
- ### 1. What kind of creative platform?
31
+ - Brief-to-creative generation coupled with selling inventory (AI ad network) → `skills/build-generative-seller-agent/`
32
+ - Publisher creative service that pairs with selling — usually a `build-seller-agent` adopter that omits a creative-* specialism claim
61
33
 
62
- - **Ad server** (Innovid, Flashtalking, CM360) — specialism `creative-ad-server`. Stateful library, builds serving tags (VAST, display tags), tracks delivery, reconciles billing.
63
- - **Creative management platform** (Celtra) — specialism `creative-template`. Stateless transformation from inline manifest, template rendering across formats.
64
- - **Generative creative agent** — specialism `creative-generative`. Takes a brief + brand reference, generates finished creatives from scratch (no inventory sold — that's `build-generative-seller-agent`).
65
- - **Publisher creative service** — accepts buyer assets, validates against publisher specs, renders previews. Usually pairs with `build-seller-agent` and doesn't claim a creative specialism on its own.
34
+ ## Cross-cutting rules
66
35
 
67
- ### 2. What formats?
36
+ Every creative agent hits the cross-cutting rules in [`../cross-cutting.md`](../cross-cutting.md). The high-traffic ones for creative agents (deep-linked to the rule):
68
37
 
69
- Get specific formats the platform supports. Common ones:
38
+ - [`idempotency_key`](../cross-cutting.md#idempotency_key-is-required-on-every-mutating-call) on `sync_creatives`, `build_creative`, `report_usage`
39
+ - [Authentication](../cross-cutting.md#authentication-is-mandatory) — `serve({ authenticate })` baseline
40
+ - [Webhooks](../cross-cutting.md#webhooks-stable-operation_id-across-retries) — `creative_review.${creative_id}` and `report_usage.${report_batch_id}` operation_ids must be stable across retries
70
41
 
71
- - **Display**: `display_300x250`, `display_728x90`, `display_160x600`
72
- - **Video**: `video_30s`, `vast_30s`, `video_15s`
73
- - **Native**: `native_content` (image + headline + description)
74
- - **Rich media**: `html5_300x250` (interactive HTML)
42
+ Two creative-specific notes on top of those:
75
43
 
76
- Each format needs: dimensions, accepted asset types (image, video, html, text), mime types.
44
+ ### Webhooks for async review pipelines
77
45
 
78
- ### 3. What operations?
46
+ Creative review is naturally async. `sync_creatives` may return `pending_review` with a task envelope; your review pipeline emits `creative_review` completion webhooks when state transitions. `build_creative` for the ad-server archetype emits `report_usage` completion webhooks. Use `ctx.emitWebhook` per the pattern in [`../cross-cutting.md` § Webhooks](../cross-cutting.md#webhooks-stable-operation_id-across-retries).
79
47
 
80
- - **Sync** — accept and store creatives from buyers (always needed)
81
- - **List** — query the creative library with filtering (recommended)
82
- - **Preview** — render a visual preview of a creative (recommended)
83
- - **Build** — produce serving tags (VAST, display tags, etc.) from stored creatives (recommended)
48
+ ### `previewCreative` and `listCreativeFormats` are no-account tools
84
49
 
85
- ### 4. Review pipeline?
50
+ Both run with `NoAccountCtx<TCtxMeta>` — they don't carry an authenticated account. The fork target's resolver synthesizes a default-listing network so `ctx.account` resolves cleanly inside the no-account handler (migration recipe #11). If you fork from scratch you'll trip this; let the hello adapter do it.
86
51
 
87
- What happens when a creative is synced:
52
+ `preview_creative` should return `urlRender` or `bothRender`, **not `htmlRender` alone**. The creative-template storyboard asserts `previews[0].renders[0].preview_url` is renderable. If your platform can host a preview URL, use `urlRender`. If you only have inline HTML, use `bothRender` (emit both `preview_url` and `preview_html`).
88
53
 
89
- - **Instant accept** creative passes validation, immediately available
90
- - **Pending review** — human or automated review before going live
91
- - **Rejection** — creative fails validation (wrong dimensions, prohibited content)
54
+ ## Specialism deltas at a glance
92
55
 
93
- ## Tools and Required Response Shapes
56
+ The fork targets cover the baseline + specialism deltas. Quick reference for what each archetype needs that the others don't:
94
57
 
95
- > **Before writing any handler's return statement, fetch [`docs/llms.txt`](../../docs/llms.txt) and grep for `#### \`<tool_name>\``(e.g.`#### \`build_creative\``) to read the exact required + optional field list.** The schema-derived contract lives there; this skill covers patterns, gotchas, and domain-specific examples. Strict response validation is on by default in dev it will tell you the exact field path if you drift, so write the obvious thing and trust the contract.
96
- >
97
- > **Cross-cutting pitfalls matrix runs keep catching:**
98
- >
99
- > - **Declare `capabilities.specialisms: ['creative-ad-server'] as const` (or `'creative-template'` / `'creative-generative'`) on the `DecisioningPlatform` you pass to `createAdcpServerFromPlatform`.** Value is `string[]` of enum ids (not `[{id, version}]`). Agents that don't declare their specialism fail the grader with "No applicable tracks found" even if every tool works — tracks are gated on the specialism claim.
100
- > - **`list_creative_formats` response — each `Format` MUST have strict-shape `renders[]` and `assets[]`** (matrix v2 PR #1207 keeps catching this).
101
- > - `renders[i]` requires `role` (string) PLUS exactly one of `dimensions: { width, height }` (object — NOT `{ width, height }` inline at the render root) OR `parameters_from_format_id: true`.
102
- > - `assets[i]` requires the **discriminator quartet**: `item_type: 'individual' as const` + `asset_id` + `asset_type` (`'image'`/`'video'`/`'audio'`/`'text'`/`'click_url'`/`'html'`) + `required: boolean`. Missing any of these fails strict validation with `must match exactly one schema in oneOf`.
103
- >
104
- > ```ts
105
- > // ✗ WRONG — passes lenient mode but fails strict (the actual mistake matrix v2 catches)
106
- > { format_id, renders: [{ width: 300, height: 250 }],
107
- > assets: [{ asset_id: 'image', required: true }] }
108
- >
109
- > // ✓ RIGHT — passes strict
110
- > { format_id,
111
- > renders: [{ role: 'primary', dimensions: { width: 300, height: 250 } }],
112
- > assets: [{
113
- > item_type: 'individual' as const,
114
- > asset_id: 'image',
115
- > asset_type: 'image',
116
- > required: true,
117
- > accepted_media_types: ['image/jpeg', 'image/png'],
118
- > }] }
119
- > ```
120
- >
121
- > - `build_creative` response is `{ creative_manifest: { format_id, assets } }` (single) or `{ creative_manifests: [...] }` (multi). Platform-native fields at the top level (`tag_url`, `creative_id`, `media_type`) are **invalid** — use `buildCreativeResponse({ creative_manifest })` / `buildCreativeMultiResponse({ creative_manifests })` from `@adcp/sdk/server` to lock the shape at compile time.
122
- > - Each asset in `creative_manifest.assets` requires an `asset_type` discriminator. Use the typed factories (`imageAsset`, `videoAsset`, `audioAsset`, `htmlAsset`, `urlAsset`, `textAsset`) so the discriminator is injected for you; a plain `{ serving_tag: { content: '<vast>...' } }` fails validation.
123
- > - `preview_creative` renders have the same pattern — each `renders[]` entry is a oneOf on `output_format`. Use `urlRender({...})`, `htmlRender({...})`, or `bothRender({...})` to inject the discriminator and require the matching `preview_url` / `preview_html` field automatically.
124
- > - `get_creative_delivery` requires **top-level `currency: string`** (ISO 4217), in addition to any per-row spend fields. `reporting_period/start` and `/end` are ISO 8601 **date-time** strings (`new Date().toISOString()`), not date-only.
125
- > - `videoAsset({...})` requires `width` + `height` per GA (previously optional). Set realistic pixel values — `{ url, width: 1920, height: 1080 }`.
126
- > - `list_creatives` response — each `creatives[i].pricing_options[j]` uses the **vendor-pricing discriminator**, which is different from products' `pricing_model`. Field name is `model` (not `pricing_model`), valid values are `cpm` / `percent_of_media` / `flat_fee` / `per_unit` / `custom`. Each model has its own required fields: `cpm` needs `{model, cpm, currency}`; `flat_fee` needs `{model, amount, period, currency}` (`period` is required — the schema rejects `flat_fee` without it); `percent_of_media` needs `{model, percent, currency}`; `per_unit` needs `{model, unit, unit_price, currency}`. If you echo pricing_options from a seed fixture, normalize the shape — storyboard fixtures sometimes carry abbreviated shapes that fail validation on the way out.
58
+ **`creative-ad-server`** stateful library (`POST/GET/PATCH /v1/creatives`), tag generation via macro substitution against a stored snippet, per-creative pricing (`include_pricing=true` on `list_creatives`, `pricing_option_id` echoed by `build_creative`, `report_usage` closes the loop), `getCreativeDelivery` with multi-id pass-through and required top-level `currency` + `reporting_period`. Output formats from `list_creative_formats` are **serving-tag formats** (VAST 4.2, display tag HTML, native JSON), not input visual formats.
127
59
 
128
- **Handler bindings read the Contract column entry before writing each return:**
60
+ **`creative-template`**stateless: build from inline `creative_manifest` in the request, no `ctx.store` lookup. Multi-format path: `target_format_ids` (plural) returns `{ creative_manifests: [...] }` (auto-wrapped to `buildCreativeMultiResponse`); single returns `{ creative_manifest: ... }`. Formats declare `variables[]` the template substitutes.
129
61
 
130
- | Tool | Handler | Contract (field list) | Gotchas |
131
- | ----------------------- | ------------------------------ | --------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
132
- | `get_adcp_capabilities` | auto-generated | n/a | Do not register manually. |
133
- | `list_creative_formats` | `creative.listCreativeFormats` | [`#list_creative_formats`](../../docs/llms.txt#list_creative_formats) | Each `renders[]` entry MUST have `role` + exactly one of `dimensions` (object) OR `parameters_from_format_id: true` — `{width, height}` shorthand fails. Each `assets[]` entry MUST have `item_type: 'individual' as const` + `asset_id` + `asset_type` (image/video/audio/text/click_url/html) + `required: boolean`. See the strict-shape callout above the table. |
134
- | `sync_creatives` | `creative.syncCreatives` | [`#sync_creatives`](../../docs/llms.txt#sync_creatives) | Echo `creative_id`; `action` ∈ `created \| updated \| unchanged \| failed \| deleted`. |
135
- | `list_creatives` | `creative.listCreatives` | [`#list_creatives`](../../docs/llms.txt#list_creatives) | Honor `args.filters?.format_ids` when present. `created_date` + `updated_date` on each row are required ISO timestamps. |
136
- | `preview_creative` | `creative.previewCreative` | [`#preview_creative`](../../docs/llms.txt#preview_creative) | `renders[].output_format` is a discriminator — use `urlRender({...})`, `htmlRender({...})`, or `bothRender({...})` so the discriminator is injected and the required `preview_url`/`preview_html` field is enforced at compile time. |
137
- | `build_creative` | `creative.buildCreative` | [`#build_creative`](../../docs/llms.txt#build_creative) | Check `args.target_format_id` → library lookup; fall back to `args.creative_id`. Response requires `creative_manifest.format_id` + `creative_manifest.assets`. |
62
+ Audio templates (TTS / mix / master, e.g. AudioStack / ElevenLabs / Resemble) follow the same shape with two deltas: (a) format declares `parameterizedRender({ role: 'primary' })` because audio has no width/height — encode duration/codec/bitrate in `accepts_parameters`, not in render entries; (b) the upstream pipeline is naturally minutes-long (voice-over → mix → master), so the adapter returns a task envelope and emits `creative_review` webhooks on completion.
138
63
 
139
- Asset values use type-specific shapes, not a generic `asset_type` discriminator:
64
+ **Audio adopters extend `hello_creative_adapter_template.ts` with four deltas:**
140
65
 
141
- - Image: `{ url: string, width: number, height: number, format: string }`
142
- - Video: `{ url: string, duration_ms: number, format: string }`
143
- - Audio: `{ url: string, container_format: string, codec: string, duration_ms: number, channels?: string, sampling_rate_hz?: number }`
144
- - HTML: `{ content: string }` (not `{ html: string }`)
145
- - Text: `{ content: string }` (not `{ text: string }` — the field is `content`, same as HTML)
66
+ 1. Add `audio_url?: string` to `UpstreamRender.output` and extend `output_kind` to include `'audio_url'`
67
+ 2. Add an `audio_url` arm to `outputSlot(t)` returning `FormatAsset.audio({ asset_id: 'serving_tag', required: false })` — declares the output slot in the format so build_creative's response key matches a declared asset_id per `creative-manifest.json:14`.
68
+ 3. Add an audio-output branch to `projectRenderToManifest`:
69
+ ```ts
70
+ } else if (out.audio_url) {
71
+ assets['serving_tag'] = audioAsset({ url: out.audio_url });
72
+ }
73
+ ```
74
+ The `audioAsset` builder injects the `asset_type: 'audio'` discriminator the creative-manifest oneOf requires.
75
+ 4. Seed an audio template in your upstream platform — see `tpl_audiostack_spot_30s_v1` in `src/lib/mock-server/creative-template/seed-data.ts` for the worked reference.
146
76
 
147
- ### Context and Ext Passthrough
148
-
149
- The framework auto-echoes the request's `context` into every response from typed sub-platform handlers — **do not set `context` yourself in your handler return values.** It's injected post-handler only when the field isn't already present.
150
-
151
- **Crucial:** `context` is schema-typed as an object. If your handler hand-sets a string or narrative description, validation fails with `/context: must be object` and the framework does not overwrite. Leave the field out entirely.
152
-
153
- Some schemas also define an `ext` field for vendor-namespaced extensions. If your request schema includes `ext`, accept it without error. Tools with explicit `ext` support: `get_creative_delivery`, `get_creative_features`.
154
-
155
- ## SDK Quick Reference
156
-
157
- | SDK piece | Usage |
158
- | ----------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
159
- | `createAdcpServerFromPlatform(platform, opts)` | Create server from a typed `DecisioningPlatform` — compile-time specialism enforcement, auto-capabilities |
160
- | `createAdcpServer(config)` _(legacy)_ | v5 handler-bag entry. Mid-migration / escape-hatch only; reach via `@adcp/sdk/server/legacy/v5` |
161
- | `serve(() => createAdcpServerFromPlatform(platform, opts))` | Start HTTP server on `:3001/mcp` |
162
- | `creative: { listCreativeFormats, syncCreatives, ... }` | Domain group — register handlers by name |
163
- | `ctx.store.put(collection, id, data)` | Persist state (creative library) across requests |
164
- | `ctx.store.get(collection, id)` | Retrieve persisted state |
165
- | `ctx.store.list(collection)` | List all items in a collection (for `list_creatives`) |
166
- | `listCreativeFormatsResponse(data)` | Auto-applied response builder (don't call manually) |
167
- | `syncCreativesResponse(data)` | Auto-applied response builder (don't call manually) |
168
- | `listCreativesResponse(data)` | Auto-applied response builder (don't call manually) |
169
- | `buildCreativeResponse(data)` | Auto-applied response builder (don't call manually) |
170
- | `previewCreativeResponse(data)` | Auto-applied response builder (don't call manually) |
171
- | `adcpError(code, { message })` | Structured error |
172
-
173
- Import: `import { createAdcpServerFromPlatform, serve, adcpError } from '@adcp/sdk/server';`
174
-
175
- ## Setup
77
+ **Storyboard coverage for audio is not yet upstream** — the `creative_template/build_creative` step asserts display-shaped assets, tracked at [adcontextprotocol/adcp#4015](https://github.com/adcontextprotocol/adcp/issues/4015). Until that ships, audio adopters validate via `npm run compliance:fork-matrix -- --test-name-pattern="hello-creative-adapter-template"` (display + video gate inherited) plus a manual round-trip against the seeded audio template:
176
78
 
177
79
  ```bash
178
- npm init -y
179
- npm install @adcp/sdk
180
- npm install -D typescript @types/node
181
- ```
182
-
183
- Minimal `tsconfig.json`:
184
-
185
- ```json
186
- {
187
- "compilerOptions": {
188
- "target": "ES2022",
189
- "module": "Node16",
190
- "moduleResolution": "Node16",
191
- "strict": true,
192
- "skipLibCheck": true,
193
- "outDir": "dist"
194
- }
195
- }
196
- ```
197
-
198
- `skipLibCheck: true` avoids false-positive errors from transitive `.d.ts` files (e.g., `@opentelemetry/api`).
199
-
200
- ## Implementation
201
-
202
- 1. Single `.ts` file — all tools in one file
203
- 2. Use `createAdcpServerFromPlatform` with `creative: CreativeAdServerPlatform` (or `CreativeBuilderPlatform`) on a `DecisioningPlatform` class — `get_adcp_capabilities` is auto-generated
204
- 3. Handlers return raw data objects — response builders are auto-applied
205
- 4. Use `ctx.store` for persisting the creative library across requests (InMemoryStateStore by default)
206
- 5. Register `preview_creative` manually on the returned server (union schema not in domain group)
207
- 6. Set `sandbox: true` on all mock/demo responses
208
- 7. Context passthrough is handled by the framework — no need to manually echo `args.context`
209
-
210
- ```typescript
211
- import {
212
- createAdcpServerFromPlatform,
213
- serve,
214
- adcpError,
215
- urlRender,
216
- createIdempotencyStore,
217
- memoryBackend,
218
- type DecisioningPlatform,
219
- type CreativeAdServerPlatform,
220
- type AccountStore,
221
- } from '@adcp/sdk/server';
222
-
223
- const formats = [
224
- {
225
- format_id: { agent_url: 'https://creative.example.com/mcp', id: 'display_banner_300x250' },
226
- name: 'Display Banner 300x250',
227
- description: 'Standard MRec display unit',
228
- renders: [
229
- { role: 'primary', dimensions: { width: 300, height: 250 } }, // role + dimensions (oneOf)
230
- ],
231
- assets: [
232
- {
233
- item_type: 'individual' as const,
234
- asset_id: 'image',
235
- asset_type: 'image',
236
- required: true,
237
- accepted_media_types: ['image/png', 'image/jpeg'],
238
- },
239
- ],
240
- },
241
- ];
242
-
243
- // The plain literal above works, but creative agents declaring richer
244
- // acceptance specs (technical `requirements`, carousel/collection wrappers)
245
- // should use the typed slot builders — see "Format asset slot builders"
246
- // below.
247
-
248
- // Idempotency — required for v3 compliance on any agent with mutating
249
- // handlers. `sync_creatives`, `build_creative`, and `calibrate_content`
250
- // are all mutating for creative agents.
251
- const idempotency = createIdempotencyStore({
252
- backend: memoryBackend(), // pgBackend(pool) for production
253
- ttlSeconds: 86400, // 24 hours (spec bounds: 1h–7d)
254
- });
255
-
256
- class MyCreative implements DecisioningPlatform {
257
- capabilities = {
258
- specialisms: ['creative-ad-server'] as const,
259
- config: {},
260
- };
261
-
262
- accounts: AccountStore = {
263
- resolve: async ref => ({
264
- id: 'account_id' in ref ? ref.account_id : 'cr_acc_1',
265
- operator: 'me',
266
- ctx_metadata: {},
267
- }),
268
- upsert: async () => ({ ok: true, items: [] }),
269
- list: async () => ({ items: [], nextCursor: null }),
270
- };
271
-
272
- creative: CreativeAdServerPlatform = {
273
- listCreativeFormats: async (params, ctx) => {
274
- return { formats };
275
- },
276
-
277
- syncCreatives: async (params, ctx) => {
278
- const results = [];
279
- for (const creative of params.creatives) {
280
- const now = new Date().toISOString();
281
- const existing = await ctx.store.get('creatives', creative.creative_id);
282
- await ctx.store.put('creatives', creative.creative_id, {
283
- ...creative,
284
- status: 'approved',
285
- created_date: existing?.created_date ?? now,
286
- updated_date: now,
287
- });
288
- results.push({
289
- creative_id: creative.creative_id,
290
- action: existing ? ('updated' as const) : ('created' as const),
291
- });
292
- }
293
- return { creatives: results };
294
- },
295
-
296
- listCreatives: async (params, ctx) => {
297
- // `ctx.store.list` returns `{ items, nextCursor? }` — destructure.
298
- let { items: creatives } = await ctx.store.list('creatives');
299
- if (params.filters?.format_ids) {
300
- creatives = creatives.filter(c => params.filters!.format_ids!.some(fid => fid.id === c.format_id?.id));
301
- }
302
- return {
303
- query_summary: { total_matching: creatives.length, returned: creatives.length, filters_applied: [] },
304
- creatives,
305
- pagination: { has_more: false },
306
- };
307
- },
308
-
309
- buildCreative: async (params, ctx) => {
310
- // `ctx.store.list` returns `{ items, nextCursor? }` — destructure.
311
- // Calling `.find`/`.map` on the raw result throws `TypeError` and
312
- // the dispatcher wraps it as `SERVICE_UNAVAILABLE`.
313
- const { items: creatives } = await ctx.store.list('creatives');
314
- const match = params.target_format_id
315
- ? creatives.find(c => c.format_id?.id === params.target_format_id!.id)
316
- : params.creative_id
317
- ? await ctx.store.get('creatives', params.creative_id)
318
- : null;
319
- // Return structured errors — don't throw. The dispatcher now unwraps
320
- // thrown envelopes, but throwing still releases the idempotency claim
321
- // before the throw is caught. If your handler mutated state before
322
- // throwing, a retry with the same key re-executes the write. Returning
323
- // an error envelope has the same claim-release semantics, so the rule
324
- // holds for both paths: mutate last, or don't mutate at all on error.
325
- if (!match) return adcpError('CREATIVE_NOT_FOUND', { message: 'No matching creative' });
326
- return {
327
- creative_manifest: { format_id: match.format_id, assets: match.assets ?? {} },
328
- sandbox: true,
329
- };
330
- },
331
-
332
- previewCreative: async params => {
333
- return {
334
- response_type: 'single',
335
- previews: [
336
- {
337
- preview_id: `prev_${Date.now()}`,
338
- input: { name: params.creative_manifest?.name ?? 'Preview' },
339
- renders: [
340
- urlRender({
341
- render_id: `r_${Date.now()}`,
342
- preview_url: 'https://example.com/preview.png',
343
- role: 'primary',
344
- dimensions: { width: 300, height: 250 },
345
- }),
346
- ],
347
- },
348
- ],
349
- expires_at: new Date(Date.now() + 3600000).toISOString(),
350
- };
351
- },
352
- };
353
- }
354
-
355
- const platform = new MyCreative();
356
-
357
- serve(() =>
358
- createAdcpServerFromPlatform(platform, {
359
- name: 'My Creative Agent',
360
- version: '1.0.0',
361
- idempotency,
362
- // Principal scoping for idempotency. MUST never return undefined —
363
- // every mutating request would reject as SERVICE_UNAVAILABLE.
364
- resolveSessionKey: () => 'default-principal',
365
- })
366
- );
367
- ```
368
-
369
- ### Key implementation detail: creative library
370
-
371
- Use `ctx.store` to persist synced creatives. The framework provides `InMemoryStateStore` by default — no need for module-level Maps or external state management.
372
-
373
- The `sync_creatives` handler adds/updates entries via `ctx.store.put('creatives', id, data)`. The `list_creatives` handler queries via `ctx.store.list('creatives')` (include `created_date` and `updated_date` in each creative). The `preview_creative` handler previews the `creative_manifest` sent in the request (no library lookup needed). The `build_creative` handler finds a synced creative by `target_format_id` (matching the format), then builds a serving tag from it.
374
-
375
- ### Format asset slot builders
376
-
377
- Ad servers and creative management platforms declare the technical acceptance contract in `Format.assets[]` — what a buyer must submit for a creative to be accepted. The spec's closed enums and field shapes are easy to get slightly wrong in a handwritten literal; strict response validation then rejects the format even when it's structurally close.
378
-
379
- Four recurring mistakes:
380
-
381
- 1. **Image** uses `formats: ('jpg' | 'png' | 'gif' | 'webp' | 'svg' | 'avif' | 'tiff' | 'pdf' | 'eps')[]` — not `file_types`. Image `aspect_ratio` matches `^\d+(\.\d+)?:\d+(\.\d+)?$` (single-valued).
382
- 2. **Video** uses `containers: ('mp4' | 'webm' | 'mov' | 'avi' | 'mkv')[]` and `codecs: ('h264' | 'h265' | 'vp8' | 'vp9' | 'av1' | 'prores')[]`. Video `aspect_ratio` is integer-only `^\d+:\d+$`. Durations are `min_duration_ms` / `max_duration_ms`.
383
- 3. **Audio** uses `formats: ('mp3' | 'aac' | 'wav' | 'ogg' | 'flac')[]`. Durations are `*_duration_ms`.
384
- 4. **`min_count` / `max_count`** live on the `repeatable_group` wrapper. Formats that render multiple items (galleries, story frames, product showcases) declare an `item_type: 'repeatable_group'` slot with `assets[]` inside — never put counts on an individual asset.
385
-
386
- Use the typed slot builders when declaring acceptance specs. `requirements` is strictly typed per `asset_type`, so misnamed fields and wrong units fail at compile time:
387
-
388
- ```typescript
389
- import {
390
- imageAssetSlot,
391
- videoAssetSlot,
392
- repeatableGroup,
393
- imageGroupAsset,
394
- textGroupAsset,
395
- } from '@adcp/sdk';
396
-
397
- // MRec banner with typed image requirements
398
- {
399
- format_id: { agent_url: AGENT_URL, id: 'display_banner_300x250' },
400
- name: 'Display Banner 300x250',
401
- renders: [{ role: 'primary', dimensions: { width: 300, height: 250 } }],
402
- assets: [
403
- imageAssetSlot({
404
- asset_id: 'image',
405
- required: true,
406
- requirements: { formats: ['jpg', 'png', 'webp'], max_file_size_kb: 200 },
407
- }),
408
- ],
409
- }
410
-
411
- // In-stream video, 6–30s
412
- {
413
- format_id: { agent_url: AGENT_URL, id: 'video_instream_16x9' },
414
- name: 'In-Stream Video 16:9',
415
- renders: [{ role: 'primary', dimensions: { width: 1920, height: 1080 } }],
416
- assets: [
417
- videoAssetSlot({
418
- asset_id: 'video',
419
- required: true,
420
- requirements: {
421
- aspect_ratio: '16:9',
422
- containers: ['mp4', 'webm'],
423
- codecs: ['h264', 'h265'],
424
- min_duration_ms: 6000,
425
- max_duration_ms: 30000,
426
- },
427
- }),
428
- ],
429
- }
430
-
431
- // Gallery format — 3 to 8 image+headline pairs. Counts on the GROUP.
432
- {
433
- format_id: { agent_url: AGENT_URL, id: 'gallery_1x1' },
434
- name: 'Image Gallery',
435
- renders: [{ role: 'primary', dimensions: { width: 1080, height: 1080 } }],
436
- assets: [
437
- repeatableGroup({
438
- asset_group_id: 'cards',
439
- required: true,
440
- min_count: 3,
441
- max_count: 8,
442
- selection_mode: 'sequential',
443
- assets: [
444
- imageGroupAsset({ asset_id: 'card_image', required: true, requirements: { aspect_ratio: '1:1', formats: ['jpg', 'png'] } }),
445
- textGroupAsset({ asset_id: 'card_headline', required: true, requirements: { max_length: 40 } }),
446
- ],
447
- }),
448
- ],
449
- }
450
- ```
451
-
452
- Ad servers whose output is a serving-tag (VAST, display tag HTML) declare those via `vastAssetSlot`, `htmlAssetSlot`, or `javascriptAssetSlot` with their respective requirement shapes (`vast_version`, `sandbox`, `module_type`).
453
-
454
- ## Idempotency
455
-
456
- AdCP v3 requires an `idempotency_key` on every mutating request — for creative agents that's `sync_creatives`, `build_creative`, and `calibrate_content`. Idempotency is already wired in the Implementation example above. The framework then handles:
457
-
458
- - Missing/malformed key → `INVALID_REQUEST` (spec pattern `^[A-Za-z0-9_.:-]{16,255}$`)
459
- - JCS-canonicalized payload hashing with same-key-different-payload → `IDEMPOTENCY_CONFLICT` (no payload leaked in the error body)
460
- - Past-TTL replay → `IDEMPOTENCY_EXPIRED` (±60s clock-skew tolerance)
461
- - Cache hits replay the cached envelope with `replayed: true` injected
462
- - `adcp.idempotency.replay_ttl_seconds` auto-declared on `get_adcp_capabilities`
463
- - Only successful responses cache — failed renders re-execute on retry
464
- - Atomic claim so concurrent retries with a fresh key don't all race to run
465
-
466
- Scoping is per-principal via `resolveSessionKey` (override with `resolveIdempotencyPrincipal` for custom scoping). `ttlSeconds` must be 3600–604800 — out of range throws at construction. If you register mutating handlers without wiring `idempotency`, the framework logs an error at server-creation time.
467
-
468
- ## Protecting your agent
469
-
470
- **An AdCP agent that accepts unauthenticated requests is non-compliant** (see `security_baseline` in the universal storyboard bundle). Ask the operator: "API key, OAuth, or both?" — then wire one of these into `serve()`.
471
-
472
- ```typescript
473
- import { serve } from '@adcp/sdk';
474
- import { verifyApiKey, verifyBearer, anyOf } from '@adcp/sdk/server';
475
-
476
- // API key — simplest, good for B2B integrations
477
- serve(createAgent, {
478
- authenticate: verifyApiKey({
479
- verify: async token => {
480
- const row = await db.api_keys.findUnique({ where: { token } });
481
- return row ? { principal: row.account_id } : null;
482
- },
483
- }),
484
- });
485
-
486
- // OAuth — best when buyers authenticate as themselves
487
- const AGENT_URL = 'https://my-agent.example.com/mcp';
488
- serve(createAgent, {
489
- publicUrl: AGENT_URL, // canonical RFC 8707 audience — also served as `resource` in protected-resource metadata
490
- authenticate: verifyBearer({
491
- jwksUri: 'https://auth.example.com/.well-known/jwks.json',
492
- issuer: 'https://auth.example.com',
493
- audience: AGENT_URL, // MUST equal publicUrl
494
- }),
495
- protectedResource: { authorization_servers: ['https://auth.example.com'] },
496
- });
497
-
498
- // Both
499
- serve(createAgent, {
500
- publicUrl: AGENT_URL,
501
- authenticate: anyOf(verifyApiKey({ verify: lookupKey }), verifyBearer({ jwksUri, issuer, audience: AGENT_URL })),
502
- protectedResource: { authorization_servers: [issuer] },
503
- });
504
- ```
505
-
506
- The framework produces RFC 6750-compliant `WWW-Authenticate: Bearer` 401s on failure, and serves `/.well-known/oauth-protected-resource<mountPath>` with `publicUrl` as the `resource` field so buyers get tokens bound to the right audience. The default JWT allowlist is asymmetric-only (RS*/ES*/PS\*/EdDSA) to prevent algorithm-confusion attacks.
507
-
508
- ## Deterministic Testing (for `creative_generative/seller` and `deterministic_testing`)
509
-
510
- Creative generative sellers — and any creative agent that wants to pass `deterministic_testing` — must expose `comply_test_controller` so the grader can force creative-status transitions deterministically. `createComplyController` handles the scaffolding:
511
-
512
- ```ts
513
- import { createComplyController } from '@adcp/sdk/testing';
514
-
515
- const controller = createComplyController({
516
- sandboxGate: input => input.auth?.sandbox === true,
517
- seed: {
518
- creative: params => creativeRepo.upsert(params.creative_id, params.fixture),
519
- },
520
- force: {
521
- creative_status: params => creativeRepo.transition(params.creative_id, params.status, params.rejection_reason),
522
- },
523
- });
524
-
525
- controller.register(server);
80
+ npx adcp mock-server creative-template --port 4250
81
+ # In another shell:
82
+ curl -X POST http://127.0.0.1:4250/v3/workspaces/ws_acme_studio/renders \
83
+ -H 'Authorization: Bearer mock_creative_template_key_do_not_use_in_prod' \
84
+ -H 'Content-Type: application/json' \
85
+ -d '{"template_id":"tpl_audiostack_spot_30s_v1","mode":"build","inputs":[{"slot_id":"script","value":"Built for the trail."}],"client_request_id":"smoke-1"}'
86
+ # → { "render_id": "rnd_…", "status": "queued" }
87
+ # Poll twice (queued → running → complete):
88
+ curl -H 'Authorization: Bearer mock_creative_template_key_do_not_use_in_prod' \
89
+ http://127.0.0.1:4250/v3/workspaces/ws_acme_studio/renders/rnd_…
90
+ # Final: { ..., "status": "complete", "output": { "audio_url": "….mp3", "preview_url": "...", "assets": [{ "kind": "audio_url", "mime_type": "audio/mpeg" }] } }
526
91
  ```
527
92
 
528
- `controller.register(server)` auto-emits the `capabilities.compliance_testing.scenarios` block per AdCP 3.0 don't put `compliance_testing` in `supported_protocols`, that's a spec violation on 3.0. Throw `TestControllerError('INVALID_TRANSITION', msg, currentState)` from the adapter when the state machine disallows the transition — the helper emits the typed error envelope. Omitted adapters auto-return `UNKNOWN_SCENARIO`.
93
+ **`creative-generative`**generate from `message` + `brand.domain`; honor `quality: draft|production`; support refinement (re-send manifest in). Goes through `skills/build-generative-seller-agent/` because it's coupled with selling inventory.
529
94
 
530
- Validate with: `adcp storyboard run <agent> deterministic_testing --auth $TOKEN`.
531
-
532
- ## Validate Locally
533
-
534
- **Full validation checklist:** [docs/guides/VALIDATE-YOUR-AGENT.md](../../docs/guides/VALIDATE-YOUR-AGENT.md). Creative-agent-specific commands:
95
+ ## Validate locally
535
96
 
536
97
  ```bash
537
- # Boot
538
- npx tsx agent.ts &
539
-
540
- # Happy path — the archetype you're claiming
541
- npx @adcp/sdk@latest storyboard run http://localhost:3001/mcp creative_ad_server --auth $TOKEN # stateful
542
- npx @adcp/sdk@latest storyboard run http://localhost:3001/mcp creative_template --auth $TOKEN # stateless
543
- npx @adcp/sdk@latest storyboard run http://localhost:3001/mcp creative_generative --auth $TOKEN # brief-to-creative
544
-
545
- # Cross-cutting obligations (all creative agents)
546
- npx @adcp/sdk@latest storyboard run http://localhost:3001/mcp \
547
- --storyboards security_baseline,idempotency,schema_validation,error_compliance --auth $TOKEN
548
-
549
- # Rejection-surface fuzz — includes preview_creative (referential, fixture-eligible)
550
- npx @adcp/sdk@latest fuzz http://localhost:3001/mcp \
551
- --tools list_creative_formats,list_creatives,get_creative_features,preview_creative \
552
- --fixture creative_ids=cre_a,cre_b \
553
- --auth-token $TOKEN
554
- ```
555
-
556
- Common failure decoder:
557
-
558
- - `response_schema` on `preview_creative` → the union schema requires manual registration; see § creative-template
559
- - `mcp_error` on creative lifecycle → confirm `sync_creatives` status enum is `approved`/`rejected`/`pending_approval`, not a custom value
560
- - `field_present` on build response → `creative_manifest` must be fully populated, not just `id`
561
-
562
- **Keep iterating until all steps pass.** Can't bind ports? `npm run compliance:skill-matrix -- --filter creative` runs an isolated end-to-end test.
563
-
564
- ## Common Mistakes
565
-
566
- | Mistake | Fix |
567
- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
568
- | Using `createTaskCapableServer` + `server.tool()` | Use `createAdcpServerFromPlatform` with a typed `creative: CreativeAdServerPlatform` (or `CreativeBuilderPlatform`) field |
569
- | Calling `createAdcpServer` directly in new code | Reach for `createAdcpServerFromPlatform`; `createAdcpServer` lives at `@adcp/sdk/server/legacy/v5` for mid-migration / escape-hatch only |
570
- | Manually registering `get_adcp_capabilities` | Auto-generated by `createAdcpServerFromPlatform` from your typed `DecisioningPlatform` — do not register it |
571
- | Calling `server.registerTool('preview_creative', ...)` | `AdcpServer` does not expose `registerTool` — put `previewCreative` in the `creative:` domain group like the other handlers |
572
- | Using module-level Maps for state | Use `ctx.store.put/get/list` — framework provides `InMemoryStateStore` by default |
573
- | Calling response builders manually in domain handlers | Handlers return raw data — response builders are auto-applied across the `creative:` group, including `preview_creative` |
574
- | `list_creatives` ignores format filter | Check `args.filters?.format_ids` and filter results |
575
- | `preview_creative` returns wrong response_type | Must be `'single'` for single creative previews |
576
- | `preview_creative` looks up by creative_id | Preview the `creative_manifest` from the request — no library lookup needed |
577
- | `build_creative` looks up by `args.creative_id` only | Storyboard sends `target_format_id` — find a synced creative matching that format |
578
- | `build_creative` missing creative_manifest | Required field — contains the built output |
579
- | `creative_manifest` includes `name` field | `CreativeManifest` has no `name` — only `format_id` and `assets` |
580
- | HTML asset uses `{ html: '...' }` | Use `{ content: '...' }` — the schema field is `content`, not `html` |
581
- | format_ids in list_creative_formats don't match what sellers reference | Sellers include your format_ids in their products — if the buyer can't look them up via list_creative_formats, creative sync breaks |
582
-
583
- ## Storyboards
584
-
585
- | Storyboard | Tests |
586
- | ---------------------- | ---------------------------------------------------------------- |
587
- | `creative_lifecycle` | Full lifecycle: format discovery → sync → list → preview → build |
588
- | `creative_template` | Stateless template rendering (build + preview only) |
589
- | `creative_sales_agent` | Sales agent that accepts pushed assets |
590
- | `creative_ad_server` | Ad server with pre-loaded library |
591
-
592
- ## Specialism Details
593
-
594
- ### <a name="specialism-creative-ad-server"></a>creative-ad-server
595
-
596
- Storyboard: `creative_ad_server`. Stateful — the library is pre-loaded; buyers do **not** push assets via `sync_creatives` at runtime. Pricing and billing round-trips are first-class.
597
-
598
- **Fork target**: [`examples/hello_creative_adapter_ad_server.ts`](../../examples/hello_creative_adapter_ad_server.ts) is the worked, passing reference adapter for this specialism. CI gates strict tsc + storyboard pass + upstream-traffic façade — all 7 storyboard steps pass on the worked build.
98
+ # Run the fork-matrix gates for both creative archetypes
99
+ npm run compliance:fork-matrix -- --test-name-pattern="hello-creative-adapter"
599
100
 
600
- The adapter demonstrates the stateful-library deltas vs `creative-template`:
601
-
602
- - **Library shape** — `POST /v1/creatives` writes, `GET /v1/creatives` reads (cursor pagination + multi-id pass-through), `PATCH` mutates. Maps directly onto `CreativeAdServerPlatform.{syncCreatives, listCreatives}`. Library state is owned by the adopter's UI / API ingestion; the comply controller's `seed.creative` is the only test path that writes via the adapter.
603
- - **Tag generation** — `buildCreative` looks up the creative by id, calls upstream `POST /v1/creatives/{id}/render` for macro substitution against a stored snippet template (`{click_url}`, `{impression_pixel}`, `{cb}`, `{advertiser_id}`, `{creative_id}`, `{asset_url}` …), and returns `BuildCreativeSuccess` with `creative_manifest.assets` carrying the rendered tag (HTML / VAST / native). The mock's `tag_url` points at a real iframe-embeddable `/serve/{id}` endpoint adopters can iframe in storyboards.
604
- - **`previewCreative`** — `NoAccountCtx<TCtxMeta>` no-account tool; returns the same iframe URL as a `preview_url`. The resolver synthesizes a default-listing network so `ctx.account` resolves cleanly inside the no-account handler. See migration recipe #11.
605
- - **`listCreativeFormats`** — also `NoAccountCtx`. Project upstream catalog to closed-shape `Format.renders[]` (display fixed dims, video/CTV at 1080p baseline, parameterized with `accepts_parameters[]`) per the typed builders from `@adcp/sdk` (#1325).
606
- - **Per-creative pricing** — when the adopter bills through AdCP, `listCreatives` with `include_pricing=true` surfaces `pricing_options`, `buildCreative` echoes the applied `pricing_option_id`, and `reportUsage` closes the loop. Adopters that bill out of band (CM360-style flat license / SaaS contract) omit these fields and surface `report_usage` records as `not_accepted` rather than fake-accepting.
607
- - **`getCreativeDelivery`** — multi-id pass-through per #1342 + #1410; required top-level `currency` + `reporting_period` per the response schema.
608
-
609
- Output formats returned by `list_creative_formats` for ad servers are **serving-tag formats** (VAST 4.2, display tag HTML, native JSON payload), not input visual formats. Replace the `// SWAP:` markers with calls to your real backend.
610
-
611
- ### <a name="specialism-creative-template"></a>creative-template
612
-
613
- Storyboard: `creative_template`. Stateless — build from the inline `creative_manifest` in the request, do not call `ctx.store`.
614
-
615
- **Fork target**: `examples/hello_creative_adapter_template.ts` is the worked, passing reference adapter for this specialism. CI gates strict tsc + storyboard pass + upstream-traffic façade. Replace the `// SWAP:` markers with calls to your real backend.
616
-
617
- Formats declare `variables` the template will substitute:
618
-
619
- ```typescript
620
- import { displayRender } from '@adcp/sdk';
621
-
622
- listCreativeFormats: async (params) => ({
623
- formats: [{
624
- format_id: { agent_url: AGENT_URL, id: 'banner_300x250_template' },
625
- name: 'Responsive 300x250 Banner Template',
626
- type: 'display' as const,
627
- renders: [displayRender({ role: 'primary', dimensions: { width: 300, height: 250 } })],
628
- variables: [ // template-agent specific
629
- { variable_id: 'headline', type: 'text', max_length: 40 },
630
- { variable_id: 'cta', type: 'text', max_length: 20 },
631
- { variable_id: 'hero_image', type: 'image' },
632
- { variable_id: 'accent_color', type: 'color' },
633
- ],
634
- assets: [/* acceptance specs */],
635
- }],
636
- }),
637
- ```
638
-
639
- `build_creative` must branch on single vs. multi-format:
640
-
641
- ```typescript
642
- buildCreative: async (params) => {
643
- const inputManifest = params.creative_manifest; // already provided — no lookup
644
-
645
- // Multi-format path (plural target_format_ids)
646
- if (params.target_format_ids?.length) {
647
- return {
648
- creative_manifests: params.target_format_ids.map((fid) => renderTemplate(fid, inputManifest)),
649
- sandbox: true,
650
- }; // wraps to buildCreativeMultiResponse
651
- }
652
-
653
- // Single-format
654
- const targetFid = params.target_format_id ?? inputManifest.format_id;
655
- return {
656
- creative_manifest: renderTemplate(targetFid, inputManifest),
657
- sandbox: true,
658
- };
659
- },
101
+ # Or validate your forked agent directly against its storyboard
102
+ adcp storyboard run http://127.0.0.1:3002/mcp creative_ad_server \
103
+ --bearer "$ADCP_AUTH_TOKEN" --include-bundles --json
660
104
  ```
661
105
 
662
- Output can be HTML (`{ content: '<div>...</div>' }`), JavaScript tag (`{ content: '<script>...</script>' }`), or VAST XML. `asset_type: 'url'` is valid for click-through URLs.
663
-
664
- `list_creative_formats` accepts filter params (`type`, `max_width`, `max_height`). Return an empty array — not an error — when nothing matches.
665
-
666
- **`preview_creative` should return `urlRender` or `bothRender` — not `htmlRender` alone.** The creative-template storyboard asserts the preview carries a renderable URL (`previews[0].renders[0].preview_url`). An html-only render is spec-valid but fails that assertion. If your platform can render the creative to a hosted preview URL, use `urlRender`. If you only have inline HTML, use `bothRender` (emit both `preview_url: "<sandbox URL>"` and `preview_html: "<inline markup>"`).
667
-
668
- #### Audio creative-template (TTS / mix / master)
669
-
670
- Audio creative agents (AudioStack, ElevenLabs, Resemble) fit the `creative-template` archetype — stateless transform from an inline manifest to a rendered audio file. Three things differ from display:
671
-
672
- 1. **No width/height.** The `Format.renders[]` item schema has a `oneOf` — each render must satisfy either `dimensions` (width + height required) OR `parameters_from_format_id: true`. Audio has no dimensions, so audio renders go through the parameterized branch. Use `parameterizedRender({ role: 'primary' })` — it auto-injects `parameters_from_format_id: true`. Encode duration/codec/bitrate in the `format_id` parameters (declared via `accepts_parameters`), not in the render entry.
673
- 2. **Async render pipelines.** TTS → mix → master is typically minutes long. Don't block the `build_creative` call waiting for the pipeline; the platform-native SDK (AudioStack's 300s poll window, etc.) belongs inside a task worker. If the platform's API returns quickly, build synchronously; otherwise return the task envelope and emit a `creative_review` completion webhook (see the [Webhooks](#webhooks-for-async-review-pipelines) section above for the wiring).
674
- 3. **Inputs are text assets keyed by `asset_id`.** The buyer sends `creative_manifest.assets.script` (a `TextAsset` with `content: string`) — read `inputManifest.assets.script?.content`, not `.text`.
675
-
676
- Format declaration:
677
-
678
- ```typescript
679
- import { parameterizedRender } from '@adcp/sdk';
680
-
681
- listCreativeFormats: async () => ({
682
- formats: [{
683
- format_id: {
684
- agent_url: AGENT_URL,
685
- id: 'audio_ad',
686
- parameters: { duration_seconds: 30, codec: 'mp3' },
687
- },
688
- name: 'Audio Ad',
689
- type: 'audio' as const,
690
- accepts_parameters: [
691
- { parameter_id: 'duration_seconds', type: 'number' },
692
- { parameter_id: 'codec', type: 'string' },
693
- ],
694
- renders: [parameterizedRender({ role: 'primary' })],
695
- assets: [
696
- { asset_id: 'script', asset_type: 'text', required: true, item_type: 'individual', description: 'Ad script (~70-75 words for a 30s read)' },
697
- { asset_id: 'voice', asset_type: 'text', required: false, item_type: 'individual', description: 'TTS voice name (e.g. "sara", "isaac")' },
698
- { asset_id: 'music_template', asset_type: 'text', required: false, item_type: 'individual', description: 'Music-bed template; omit for voice-only' },
699
- ],
700
- }],
701
- }),
702
- ```
106
+ Each gate is the three-gate contract from [`docs/guides/EXAMPLE-TEST-CONTRACT.md`](../../docs/guides/EXAMPLE-TEST-CONTRACT.md): tsc strict / storyboard zero-failures / upstream façade. Adopters who fork extend the test file with their own adapter path and `expectedRoutes`.
703
107
 
704
- Handler inline manifest in, rendered audio out:
705
-
706
- ```typescript
707
- import { buildCreativeResponse, audioAsset } from '@adcp/sdk/server';
708
-
709
- buildCreative: async (params) => {
710
- const inputManifest = params.creative_manifest; // already inline — no lookup
711
- const targetFid = params.target_format_id ?? inputManifest.format_id;
712
-
713
- // Read inputs from the inline manifest's assets (TextAsset.content, not .text)
714
- const script = inputManifest.assets.script?.content ?? '';
715
- const voice = inputManifest.assets.voice?.content;
716
- const musicTemplate = inputManifest.assets.music_template?.content;
717
-
718
- // Platform pipeline (script → speech → mix). Wrap in a task worker if long-running.
719
- const rendered = await renderAudio({ script, voice, musicTemplate });
720
-
721
- return buildCreativeResponse({
722
- creative_manifest: {
723
- format_id: targetFid,
724
- assets: {
725
- audio: audioAsset({
726
- url: rendered.url,
727
- container_format: 'mp3',
728
- codec: 'mp3',
729
- duration_ms: rendered.durationMs,
730
- channels: 'stereo',
731
- sampling_rate_hz: 44100,
732
- }),
733
- },
734
- },
735
- sandbox: params.account?.sandbox === true,
736
- });
737
- },
738
- ```
739
-
740
- Common trap — returning platform-native fields (`{ tag_url, creative_id, media_type }`) at the top level instead of wrapping in `creative_manifest`. The wire schema rejects it; `buildCreativeResponse` catches it at compile time.
741
-
742
- ### <a name="specialism-creative-generative"></a>creative-generative
743
-
744
- Storyboard: `creative_generative`. Takes a brief (`message`) and brand reference (`brand.domain`), generates finished assets.
745
-
746
- ```typescript
747
- buildCreative: (async params => {
748
- const { message, brand, quality } = params;
749
- const brandDomain = brand?.domain ?? 'unknown';
750
- const q = quality ?? 'draft';
751
-
752
- // Multi-format: return one manifest per target
753
- if (params.target_format_ids?.length) {
754
- const manifests = await Promise.all(
755
- params.target_format_ids.map(fid => generateForFormat(fid, message, brandDomain, q))
756
- );
757
- return { creative_manifests: manifests, sandbox: true };
758
- }
759
-
760
- // Single / refinement: if params.creative_manifest is present, use its assets as a seed
761
- const targetFid = params.target_format_id ?? params.creative_manifest?.format_id;
762
- const manifest = await generateForFormat(targetFid, message, brandDomain, q, params.creative_manifest);
763
- return { creative_manifest: manifest, sandbox: true };
764
- },
765
- async function generateForFormat(fid, message, brandDomain, quality, seed) {
766
- const priorHeadline = seed?.assets?.headline?.text; // refinement — reuse buyer-approved copy
767
- // ... call your image/copy model here
768
- return {
769
- format_id: fid,
770
- assets: {
771
- generated_image: {
772
- url: `${AGENT_URL}/generated/${fid.id}-${quality}.jpg`,
773
- width: 300,
774
- height: 250,
775
- format: 'jpeg',
776
- },
777
- headline: { text: priorHeadline ?? 'Generated headline' },
778
- cta: { text: 'Shop now' },
779
- },
780
- // Provenance metadata when your output is AI-generated:
781
- provenance: {
782
- digital_source_type: 'ai',
783
- ai_tool: 'your-generator-v1',
784
- },
785
- };
786
- });
787
- ```
108
+ For deeper validation (fuzz, request-signing grading, custom invariants): [`docs/guides/VALIDATE-YOUR-AGENT.md`](../../docs/guides/VALIDATE-YOUR-AGENT.md).
788
109
 
789
- Brand resolution: fetch `https://{brand.domain}/brand.json` (or your internal brand store) to pull logos, voice, palette — use that to style the generated assets. If brand resolution fails, return `BRAND_NOT_FOUND` rather than silently using defaults.
110
+ ## Common shape gotchas
790
111
 
791
- Quality levels: `draft` is fast + cheap (thumbnails, placeholder copy); `production` is final-quality (full-resolution, real copy, brand-reviewed). Use the distinction to let buyers iterate cheaply before paying for final renders.
112
+ `BuildCreativeReturn` has 4 valid shapes (framework auto-wraps the bare manifest). `VASTAsset` requires an embedded `delivery_type` discriminator. `Format.renders[]` is a `oneOf` — `dimensions` (width + height) OR `parameters_from_format_id: true`, never both, never neither. See [`../SHAPE-GOTCHAS.md`](../SHAPE-GOTCHAS.md) schema validators catch these at runtime; type checkers don't.
792
113
 
793
- ## Reference
114
+ ## Migration notes
794
115
 
795
- - `storyboards/creative_lifecycle.yaml` full creative lifecycle storyboard
796
- - `docs/guides/BUILD-AN-AGENT.md` — SDK patterns
797
- - `docs/TYPE-SUMMARY.md` — curated type signatures
798
- - `docs/llms.txt` — full protocol reference
116
+ - 6.6 → 6.7: `defineCreativeAdServerPlatform` family drops `req: unknown` casts; `Format.renders[]` codegen is closed-shape (#1325) so typed render builders compose under strict tsc; `NoAccountCtx<TCtxMeta>` narrows the no-account tools. See [`docs/migration-6.6-to-6.7.md`](../../docs/migration-6.6-to-6.7.md).
117
+ - 4.x → 5.x: [`docs/migration-4.x-to-5.x.md`](../../docs/migration-4.x-to-5.x.md).