@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
@@ -1,1006 +1,110 @@
1
1
  ---
2
2
  name: build-governance-agent
3
- description: Use when building an AdCP governance agent — a platform that evaluates media buys against spending authority, manages property lists, and enforces content standards.
3
+ description: Use when building an AdCP governance agent — campaign governance (spending authority, approval/denial), property/collection lists for brand safety, or content standards for creative compliance.
4
4
  ---
5
5
 
6
6
  # Build a Governance Agent
7
7
 
8
- ## Overview
8
+ A governance agent enforces policy on the buy side. It evaluates spending authority, maintains property and collection lists, and defines content standards. There is no dedicated `hello_governance_adapter_*.ts` yet — this skill collapses against the seller adapter pattern and the documented tool surface.
9
9
 
10
- A governance agent sits between buyers and sellers, evaluating proposed media buys against organizational policies. Three domains: campaign governance (spending authority, approval/denial), property governance (inclusion/exclusion lists for brand safety), and content standards (creative compliance rules). Determine which domains the user needs.
10
+ ## Pick your fork target
11
11
 
12
- ## When to Use
12
+ | Specialism | Status | Fork this | Storyboard |
13
+ | --- | --- | --- | --- |
14
+ | `governance-spend-authority` | stable | [`hello_seller_adapter_multi_tenant.ts`](../../examples/hello_seller_adapter_multi_tenant.ts) — `campaignGovernance` block | `governance_spend_authority` |
15
+ | `governance-delivery-monitor` | stable | Same; add `phase: 'delivery'` branch on `checkGovernance` | `governance_delivery_monitor` |
16
+ | `property-lists` | stable | [`hello_seller_adapter_multi_tenant.ts`](../../examples/hello_seller_adapter_multi_tenant.ts) — `propertyLists` block | `property_lists` |
17
+ | `collection-lists` | stable | Same shape as property-lists; add IMDb/Gracenote/EIDR resolution | placeholder |
18
+ | `content-standards` | stable | Add `contentStandards` domain group via `defineContentStandardsPlatform` | placeholder |
19
+ | `measurement-verification` | preview | v3.1 placeholder. Baseline only. | placeholder |
13
20
 
14
- - User wants to build an agent that evaluates or approves media buys
15
- - User mentions governance, brand safety, spending authority, property lists, or content standards
16
- - User references `check_governance`, `sync_plans`, `create_property_list`, or `calibrate_content`
21
+ The multi-tenant adapter is the canonical fork target it implements `campaignGovernance` (sync_plans, check_governance, report_plan_outcome, get_plan_audit_logs), `propertyLists` (CRUD + `validate_property_delivery`), and `brandRights` against a per-tenant in-memory store with full tenant isolation via `createTenantStore`.
17
22
 
18
- **Not this skill:**
19
-
20
- - Selling ad inventory → `skills/build-seller-agent/`
21
- - Serving audience segments → `skills/build-signals-agent/`
22
- - Managing brand identity and licensing → `skills/build-brand-rights-agent/`
23
-
24
- **Often claimed alongside:** `measurement-verification` _(preview)_ + `content-standards` — governance vendors (IAS, DV) typically claim all three together. See [Common multi-specialism bundles](../../examples/README.md#common-multi-specialism-bundles).
25
-
26
- ## Specialisms This Skill Covers
27
-
28
- Your compliance obligations come from the specialisms you claim in `get_adcp_capabilities`. Each maps to a storyboard at `compliance/cache/latest/specialisms/<id>/`:
29
-
30
- | Specialism | Status | Delta from baseline | See |
31
- | ----------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------ |
32
- | `governance-spend-authority` | stable | `check_governance` evaluates `binding` against Plan's `budget.total`, `human_review_required`, and `custom_policies`; return `approved`, `conditions`, or `denied` | [§ governance-spend-authority](#specialism-governance-spend-authority) |
33
- | `governance-delivery-monitor` | stable | `check_governance` with `phase: 'delivery'` + `delivery_metrics`; compute drift vs Plan's `budget.reallocation_threshold`; return `BUDGET_DRIFT_EXCEEDED` findings | [§ governance-delivery-monitor](#specialism-governance-delivery-monitor) |
34
- | `property-lists` | stable | Tool family `property_list` — implement CRUD plus `validate_property_delivery` with full `violations[]` | [§ property-lists](#specialism-property-lists) |
35
- | `collection-lists` | stable | Tool family `collection_list` — program-level brand safety (shows, series, podcasts) identified by platform-independent IDs: IMDb, Gracenote, EIDR. Mirrors property-lists CRUD plus collection resolution. | [§ collection-lists](#specialism-collection-lists) |
36
- | `content-standards` | stable | `policies[]` is an array of `{ policy_id, enforcement, policy, policy_categories?, channels? }`; `validate_content_delivery` uses `records[].artifact` (not `creative_id`); re-read policies per call for `standards_version_change` | [§ content-standards](#specialism-content-standards) |
37
- | `measurement-verification` | preview | v3.1 placeholder (empty `phases`). Pass universal + governance baseline only. Advertise `measurement_verification` capability for discoverability. | Baseline only |
38
-
39
- **Not in this skill:** `audience-sync` lives under `protocol: media-buy`. Build it in `skills/build-seller-agent/` instead — it uses `sync_audiences` (overloaded for discovery, add, and delete) and `list_accounts` under the `accounts` / `eventTracking` domain groups.
40
-
41
- Specialism ID (kebab-case) = storyboard directory. Storyboard `id:` (snake_case, e.g. `campaign_governance_conditions`) is the category name — multiple specialisms can reference the same storyboard category.
42
-
43
- ## Protocol-Wide Requirements
44
-
45
- Every production governance agent — regardless of specialism — must wire these. Full treatment in `skills/build-seller-agent/SKILL.md` §Protocol-Wide Requirements and §Composing OAuth, signing, and idempotency; minimum-viable pointers:
46
-
47
- - **`idempotency_key`** on every mutating request (`sync_plans`, `create_property_list`/`update_property_list`/`delete_property_list`, `create_collection_list`/`update_collection_list`/`delete_collection_list`, `create_content_standards`/`update_content_standards`, `calibrate_content`). Pass `createIdempotencyStore` to `createAdcpServerFromPlatform(platform, { idempotency })`.
48
- - **Authentication** via `serve({ authenticate: verifyApiKey(...)/verifyBearer(...) })` from `@adcp/sdk/server`. Unauthenticated agents fail the universal `security_baseline` storyboard.
49
- - **Signature-header transparency**: don't reject requests that carry `Signature-Input`/`Signature` headers even if you don't claim `signed-requests`.
50
- - **Resolve-then-authorize** on id lookups (`get_property_list`, `get_content_standards`, `get_collection_list`): return byte-equivalent errors whether the id is cross-tenant or nonexistent — always `REFERENCE_NOT_FOUND`, never `PERMISSION_DENIED`. `adcp fuzz` runs a paired-probe invariant that enforces this; stand up two test tenants and pass `--auth-token` + `--auth-token-cross-tenant` for full coverage. See `skills/build-seller-agent/SKILL.md` §Resolve-then-authorize for the full rules.
51
- - **`comply_test_controller`** — required to pass the `governance_spend_authority` and `property_lists` storyboards. Each seeds fixtures via `comply_test_controller.seed_plan` / `seed_property_list` before running the business-logic phases. Register via `createComplyController({ seed: { plan, property_list, collection_list, content_standards } })` and call `controller.register(server)` — same pattern as seller. Full treatment in `skills/build-seller-agent/SKILL.md` §Compliance Testing. Without it, all business-logic steps skip with `missing_test_controller` and the track vacuously "passes" (no tests run, vacuous green detected by the grader as fail).
52
-
53
- ## Before Writing Code
54
-
55
- ### 1. Which Governance Domains?
56
-
57
- - **Campaign governance** — evaluates media buys against spending authority. Returns approved, denied, or approved with conditions.
58
- - **Property governance** — maintains inclusion/exclusion lists of publisher properties for brand safety.
59
- - **Content standards** — defines creative compliance rules and validates delivery against them.
60
-
61
- Most governance agents start with campaign governance. Add property and content standards as needed.
62
-
63
- ### 2. Decision Logic
64
-
65
- For campaign governance, how should the agent decide?
66
-
67
- - **Budget threshold** — deny buys over a per-transaction limit
68
- - **Policy conditions** — approve with conditions (e.g., "weekly reporting required for CTV")
69
- - **Channel restrictions** — deny certain channels or require review
70
- - **Delivery monitoring** — re-evaluate when spend drifts past threshold
71
-
72
- ### 3. Property List Types
73
-
74
- - **Inclusion lists** — only serve ads on these properties
75
- - **Exclusion lists** — never serve ads on these properties
76
- - **GARM category filters** — exclude by IAB/GARM category
77
-
78
- ## Tools and Required Response Shapes
79
-
80
- > **Before writing any handler's return statement, fetch [`docs/llms.txt`](../../docs/llms.txt) and grep for `#### \`<tool_name>\``(e.g.`#### \`check_governance\``) 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.
81
- >
82
- > **Cross-cutting pitfalls matrix runs keep catching:**
83
- >
84
- > - **Declare `capabilities.specialisms: ['governance-spend-authority', 'property-lists'] as const` 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.
85
- > - Every mutating-tool response (`create_property_list`, `create_collection_list`, `create_content_standards`, etc.) has `additionalProperties: false` — don't add extra fields. Return exactly what the schema declares.
86
-
87
- ### Campaign Governance
88
-
89
- **`get_adcp_capabilities`** — register first, empty `{}` schema
90
-
91
- ```
92
- capabilitiesResponse({
93
- adcp: { major_versions: [3] },
94
- supported_protocols: ['governance'],
95
- })
96
- ```
97
-
98
- **`sync_plans`** — `SyncPlansRequestSchema.shape`
99
-
100
- Register governance plans. Each plan in the response needs `plan_id`, `status`, and `version`.
101
-
102
- ```
103
- taskToolResponse({
104
- plans: [{
105
- plan_id: string, // required — echo from request
106
- status: 'active', // required — 'active' | 'paused'
107
- version: 1, // required — integer version number
108
- }],
109
- })
110
- ```
111
-
112
- **`check_governance`** — `CheckGovernanceRequestSchema.shape`
23
+ ### What to delete if you're single-specialism
113
24
 
114
- Evaluate a media buy against the registered plan. The request carries a `binding` (what is being evaluated) and a `phase`:
25
+ **Forking the multi-tenant adapter for a single specialism? Delete these blocks first** leaning on stable symbol names rather than line numbers (the adapter evolves; greppable identifiers don't):
115
26
 
116
- ```
117
- // Request shape:
118
- {
119
- plan_id: string, // required — registered via sync_plans
120
- phase?: 'create' | 'delivery', // optional — authoritative when present
121
- binding: { // what to evaluate (create-phase)
122
- type: 'media_buy',
123
- media_buy_id?: string, // on delivery phase, the already-created buy
124
- account: { brand: {...}, operator: string },
125
- total_budget: { amount: number, currency: string },
126
- packages: [{ product_id, pricing_option_id, budget }],
127
- },
128
- delivery_metrics?: { // on delivery-phase checks — NOT delivery_evidence
129
- reporting_period: { start: string, end: string },
130
- spend: number,
131
- cumulative_spend: number,
132
- channel_distribution: { [channel: string]: number }, // percent by channel
133
- pacing: 'ahead' | 'on_pace' | 'behind',
134
- },
135
- governance_context?: string, // prior check's context, for re-evaluation
136
- }
137
- ```
138
-
139
- `phase` is an optional top-level field (`'create' | 'delivery'`). When present, it is authoritative — use it to route. When absent, the presence of `delivery_metrics` is the corroborating signal. The storyboard sends both for delivery-phase checks.
27
+ A single-specialism `governance-spend-authority` adopter (an in-house policy engine, IAS, DoubleVerify) deletes:
140
28
 
141
- The Plan object (stored via `sync_plans`) drives decisions. Expected shape:
29
+ - The `brandRights = defineBrandRightsPlatform({ ... })` block (the entire brand-rights surface)
30
+ - The `propertyLists = definePropertyListsPlatform({ ... })` block if you don't claim `property-lists`
31
+ - The `private async enforceGovernance(...)` helper and the `interface GovernanceBinding` — these belong to `brandRights` cross-specialism dispatch, not to standalone governance
32
+ - Per-tenant `brands` / `rights` Maps on `TenantState` (no brand-rights catalog to seed)
142
33
 
143
- ```
144
- {
145
- plan_id: string,
146
- brand: { domain: string },
147
- objectives: string,
148
- budget: {
149
- total: number,
150
- currency: string,
151
- // Exactly one of the next two is required:
152
- reallocation_threshold?: number, // absolute currency amount the orchestrator can reallocate without human escalation
153
- reallocation_unlimited?: boolean, // set true for full autonomy up to total (prefer this over threshold == total)
154
- },
155
- flight: { start: string, end: string },
156
- countries: string[],
157
- human_review_required?: boolean, // GDPR Art 22 / EU AI Act Annex III — when true, every action on this plan needs human review regardless of budget. Set automatically by the agent if any resolved policy has requires_human_review: true.
158
- custom_policies: [ // array of structured policy objects — NOT bare strings
159
- {
160
- policy_id: string,
161
- enforcement: 'must' | 'should',
162
- policy: string, // prose description of the rule
163
- },
164
- ],
165
- }
166
- ```
34
+ A single-specialism `property-lists` adopter mirrors this: keep the `propertyLists` block; delete `campaignGovernance`, `brandRights`, `enforceGovernance`, the brand/rights Maps, and the `governanceBindings` map.
167
35
 
168
- Authority is split into two independent concerns:
36
+ **Keep**: the `accounts` / `createTenantStore` block (translates to single-tenant by passing one tenant entry — needed for tenant isolation), `agentRegistry`, the specialism block(s) you claim, `getTenant(ctx)` resolution. **Don't keep `enforceGovernance` if you also delete `brandRights`** — the helper has no caller and wires a non-existent governance binding.
169
37
 
170
- - **`budget.reallocation_threshold` / `reallocation_unlimited`** budget autonomy. Dollar-denominated cap on how much the orchestrator can shift around without asking.
171
- - **`human_review_required`** — decisions affecting data subjects (targeting, creative, delivery). Fires regardless of budget. Driven by regulation, not finance.
38
+ For `content-standards` and `collection-lists`, no worked fork target ships yet wire `defineContentStandardsPlatform` / `defineCollectionListsPlatform` from `@adcp/sdk/server` against the multi-tenant scaffolding.
172
39
 
173
- Both can be true simultaneously on the same plan.
174
-
175
- The response needs `check_id`, `status`, `plan_id`, and `explanation`.
176
-
177
- ```
178
- // Approved:
179
- taskToolResponse({
180
- check_id: string, // required — unique check identifier
181
- status: 'approved', // required — enum: 'approved' | 'denied' | 'conditions'
182
- plan_id: string, // required — echo from request
183
- explanation: string, // required — human-readable explanation
184
- governance_context: string, // pass to create_media_buy
185
- })
186
-
187
- // Approved with conditions — status is literally 'conditions' (not 'approved' plus a conditions array):
188
- taskToolResponse({
189
- check_id: string,
190
- status: 'conditions',
191
- plan_id: string,
192
- explanation: 'Approved with conditions',
193
- conditions: [{ // array of binding conditions
194
- field: string, // required — what the condition applies to
195
- reason: string, // required — why the condition exists
196
- required_value: string, // optional — specific value required
197
- }],
198
- governance_context: string,
199
- })
200
-
201
- // Denied — also the way human review is signalled (no separate 'escalate' status):
202
- taskToolResponse({
203
- check_id: string,
204
- status: 'denied',
205
- plan_id: string,
206
- explanation: 'Exceeds spending authority',
207
- findings: [{ // array of policy findings
208
- category_id: string, // required — policy category ID
209
- severity: 'info' | 'warning' | 'critical', // required — human-review signal uses 'critical'
210
- explanation: string, // required — human-readable
211
- }],
212
- })
213
- ```
40
+ For exact response shapes, error codes, and optional fields, `docs/llms.txt` is the canonical reference.
214
41
 
215
- **`get_plan_audit_logs`** `GetPlanAuditLogsRequestSchema.shape`
42
+ ## When to use this skill
216
43
 
217
- ```
218
- taskToolResponse({
219
- plan_id: string,
220
- logs: [{
221
- timestamp: string, // ISO timestamp
222
- action: string,
223
- actor: string,
224
- }],
225
- })
226
- ```
227
-
228
- ### Property Governance
229
-
230
- **`create_property_list`** — `CreatePropertyListRequestSchema.shape`
231
-
232
- Response must include `list` object and `auth_token`.
233
-
234
- ```
235
- taskToolResponse({
236
- list: {
237
- list_id: string, // required
238
- name: string, // required — echo from request
239
- description: string,
240
- property_count: 0,
241
- },
242
- auth_token: string, // required — token for subsequent operations
243
- })
244
- ```
245
-
246
- **`get_property_list`** — `GetPropertyListRequestSchema.shape`
247
-
248
- ```
249
- taskToolResponse({
250
- list: {
251
- list_id: string,
252
- name: string,
253
- },
254
- })
255
- ```
256
-
257
- **`update_property_list`** — `UpdatePropertyListRequestSchema.shape`
258
-
259
- ```
260
- taskToolResponse({
261
- list: {
262
- list_id: string,
263
- name: string,
264
- },
265
- })
266
- ```
267
-
268
- **`list_property_lists`** — `ListPropertyListsRequestSchema.shape`
269
-
270
- ```
271
- taskToolResponse({
272
- lists: [{
273
- list_id: string,
274
- name: string,
275
- }],
276
- })
277
- ```
278
-
279
- **`delete_property_list`** — `DeletePropertyListRequestSchema.shape`
280
-
281
- ```
282
- taskToolResponse({
283
- deleted: true, // required — boolean
284
- list_id: string, // required — echo from request
285
- })
286
- ```
44
+ - User wants to enforce campaign governance, property lists, collection lists, or content standards
45
+ - User describes themselves as a brand-safety vendor (IAS, DoubleVerify), policy engine (OPA/Cerbos), or compliance platform
46
+ - User mentions `check_governance`, `validate_property_delivery`, `validate_content_delivery`
287
47
 
288
- **`validate_property_delivery`** no generated schema, use `{}` for input
289
-
290
- The storyboard's enforcement phase asserts per-record `violations` with list reference and severity. A minimal `{property, compliant}` response will pass schema but fail the behavioral checks.
291
-
292
- ```
293
- // Request:
294
- {
295
- list_id: string,
296
- records: [{
297
- record_id: string,
298
- property: { type: 'domain' | 'bundle_id' | ..., value: string },
299
- impressions: number,
300
- }],
301
- }
302
-
303
- // Response:
304
- taskToolResponse({
305
- compliant: true, // required — overall compliance
306
- list_id: string, // echo from request
307
- results: [{
308
- record_id: string, // echo
309
- property: { type, value }, // echo
310
- impressions: number,
311
- compliant: boolean,
312
- violations: [{ // empty when compliant
313
- list_id: string,
314
- list_type: 'inclusion' | 'exclusion',
315
- severity: 'critical',
316
- explanation: string, // e.g. "Property {value} is not on inclusion list {name}"
317
- }],
318
- }],
319
- violations: [], // flattened — all violations across results
320
- })
321
- ```
322
-
323
- ### Content Standards
324
-
325
- **`list_content_standards`** — `ListContentStandardsRequestSchema.shape`
326
-
327
- ```
328
- taskToolResponse({
329
- standards: [{
330
- standards_id: string,
331
- name: string,
332
- }],
333
- })
334
- ```
335
-
336
- **`create_content_standards`** — `CreateContentStandardsRequestSchema.shape`
337
-
338
- ```
339
- taskToolResponse({
340
- standards_id: string, // required — generated ID
341
- })
342
- ```
343
-
344
- **`get_content_standards`** — `GetContentStandardsRequestSchema.shape`
345
-
346
- `policies` is an array of structured rules. Each entry has a `policy_id`, enforcement level (`must` or `should`), a prose `policy` description, optional `policy_categories`, and optional `channels` scope. The prose lives **inside each entry**, not at the container level.
347
-
348
- ```
349
- taskToolResponse({
350
- standards_id: string,
351
- name: string,
352
- policies: [
353
- {
354
- policy_id: 'no_violent_imagery',
355
- policy_categories: ['brand_safety'],
356
- enforcement: 'must',
357
- policy: 'No violent or controversial imagery',
358
- },
359
- {
360
- policy_id: 'min_display_dpi',
361
- policy_categories: ['imagery_quality'],
362
- enforcement: 'should',
363
- channels: ['display'],
364
- policy: 'Minimum 72 DPI for display assets',
365
- },
366
- ],
367
- scope: { languages_any: ['en'], description: 'Acme Outdoor creative standards' },
368
- })
369
- ```
370
-
371
- On `create_content_standards` / `update_content_standards`, the buyer sends the same `policies[]` array. Store it indexed by `standards_id` and re-read on every `calibrate_content` / `validate_content_delivery` call — the `standards_version_change` storyboard phase re-issues policies and expects the next calibration to reflect the update (a memoized calibration will fail that phase).
372
-
373
- **`update_content_standards`** — `UpdateContentStandardsRequestSchema.shape`
374
-
375
- ```
376
- taskToolResponse({
377
- success: true,
378
- standards_id: string,
379
- })
380
- ```
381
-
382
- **`calibrate_content`** — `CalibrateContentRequestSchema.shape`
383
-
384
- Verdict mapping: any `enforcement: 'must'` violation → `'fail'`. Only `'should'` violations → `'review'`. No violations → `'pass'`. The `standards_version_change` phase depends on this — after policies update, the same artifact must flip verdicts.
385
-
386
- ```
387
- taskToolResponse({
388
- verdict: 'pass' | 'fail' | 'review',
389
- confidence: 0.95,
390
- explanation: string,
391
- features: [],
392
- })
393
- ```
394
-
395
- **`validate_content_delivery`** — `ValidateContentDeliveryRequestSchema.shape`
396
-
397
- The request uses `records[].artifact`, not `creative_id`. Each record scopes a served impression with `property_rid`, `artifact_id`, and `assets`. Response returns per-record compliance plus a `summary`.
398
-
399
- ```
400
- // Request:
401
- {
402
- standards_id: string,
403
- records: [{
404
- record_id: string,
405
- property_rid: string,
406
- artifact: {
407
- artifact_id: string,
408
- property_rid: string,
409
- description?: string, // optional prose describing the ad — used by calibration matchers
410
- assets: [{ // ARRAY of assets — not an object
411
- type: 'image' | 'video' | 'html' | 'text',
412
- url: string,
413
- width?: number,
414
- height?: number,
415
- duration_ms?: number,
416
- }],
417
- },
418
- impressions: number,
419
- }],
420
- }
421
-
422
- // Response:
423
- taskToolResponse({
424
- summary: {
425
- compliant: true,
426
- total_impressions: number,
427
- non_compliant_impressions: 0,
428
- },
429
- results: [{
430
- record_id: string, // echo from request
431
- artifact: {
432
- artifact_id: string,
433
- property_rid: string,
434
- description?: string, // optional prose describing the ad — used by calibration matchers
435
- assets: [{ // ARRAY of assets — not an object
436
- type: 'image' | 'video' | 'html' | 'text',
437
- url: string,
438
- width?: number,
439
- height?: number,
440
- duration_ms?: number,
441
- }],
442
- },
443
- impressions: number,
444
- compliant: boolean,
445
- violations: [{ // empty when compliant
446
- rule: string, // e.g. "No tobacco advertising"
447
- severity: 'must' | 'should',
448
- evidence: string, // why it failed
449
- remediation: string, // how to fix
450
- }],
451
- }],
452
- })
453
- ```
454
-
455
- ### Context and Ext Passthrough
456
-
457
- The framework auto-echoes the request's `context` into every response — **do not set `context` yourself in your handler return values.** It's injected post-handler only when the field isn't already present.
458
-
459
- **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; the framework handles it.
460
-
461
- 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: `sync_governance`.
462
-
463
- ## SDK Quick Reference
464
-
465
- | SDK piece | Usage |
466
- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
467
- | `createAdcpServerFromPlatform(platform, opts)` | Create server from a typed `DecisioningPlatform` — compile-time specialism enforcement, auto-generated capabilities, ctx_metadata round-trip |
468
- | `createAdcpServer(config)` _(legacy)_ | v5 handler-bag entry. Mid-migration / escape-hatch only; reach via `@adcp/sdk/server/legacy/v5` |
469
- | `serve(() => createAdcpServerFromPlatform(platform, opts))` | Start HTTP server on `:3001/mcp` |
470
- | `ctx.store` | State persistence — `get/put/patch/delete/list` domain objects |
471
- | `adcpError(code, { message })` | Structured error |
472
-
473
- Handlers return raw data objects. The framework auto-wraps responses and auto-generates `get_adcp_capabilities` from registered handlers.
474
-
475
- Import: `import { createAdcpServerFromPlatform, serve, adcpError } from '@adcp/sdk/server';`
48
+ **Not this skill:**
476
49
 
477
- ## Setup
50
+ - Selling inventory while consuming governance signals → `skills/build-seller-agent/` (governance-aware seller track)
51
+ - Brand identity / rights licensing → `skills/build-brand-rights-agent/`
52
+ - Audience sync (despite the name overlap) → `skills/build-seller-agent/` (audience-sync track)
478
53
 
479
- ```bash
480
- npm init -y
481
- npm install @adcp/sdk
482
- npm install -D typescript @types/node
483
- ```
54
+ ## Cross-cutting rules
484
55
 
485
- Minimal `tsconfig.json`:
486
-
487
- ```json
488
- {
489
- "compilerOptions": {
490
- "target": "ES2022",
491
- "module": "Node16",
492
- "moduleResolution": "Node16",
493
- "strict": true,
494
- "skipLibCheck": true,
495
- "outDir": "dist"
496
- }
497
- }
498
- ```
56
+ Every governance agent hits the cross-cutting rules in [`../cross-cutting.md`](../cross-cutting.md). The high-traffic ones for governance (deep-linked to the rule):
499
57
 
500
- `skipLibCheck: true` avoids false-positive errors from transitive `.d.ts` files (e.g., `@opentelemetry/api`).
501
-
502
- ## Implementation
503
-
504
- 1. Single `.ts` file — `class MyGovernance implements DecisioningPlatform` with `campaignGovernance`, `propertyLists`, `collectionLists`, `contentStandards` typed sub-platforms
505
- 2. Do not register `get_adcp_capabilities` — the framework generates it from registered handlers
506
- 3. Return raw data objects from handlers — the framework wraps responses automatically
507
- 4. Use `ctx.store` to persist plans, property lists, and content standards
508
- 5. Set `sandbox: true` on all mock/demo responses
509
- 6. Handlers receive `(params, ctx)` — `ctx.store` for state, `ctx.account` for resolved account
510
-
511
- ```typescript
512
- import { randomUUID } from 'node:crypto';
513
- import {
514
- createAdcpServerFromPlatform,
515
- serve,
516
- createIdempotencyStore,
517
- memoryBackend,
518
- type DecisioningPlatform,
519
- type CampaignGovernancePlatform,
520
- type PropertyListsPlatform,
521
- type AccountStore,
522
- } from '@adcp/sdk/server';
523
-
524
- const idempotency = createIdempotencyStore({
525
- backend: memoryBackend(),
526
- ttlSeconds: 86400,
527
- });
528
-
529
- class MyGovernance implements DecisioningPlatform {
530
- capabilities = {
531
- specialisms: ['governance-spend-authority', 'property-lists'] as const,
532
- config: {},
533
- };
534
-
535
- accounts: AccountStore = {
536
- resolve: async ref => ({
537
- id: 'account_id' in ref ? ref.account_id : 'gov_acc_1',
538
- operator: 'me',
539
- ctx_metadata: {},
540
- }),
541
- upsert: async () => ({ ok: true, items: [] }),
542
- list: async () => ({ items: [], nextCursor: null }),
543
- };
544
-
545
- campaignGovernance: CampaignGovernancePlatform = {
546
- syncPlans: async (req, ctx) => {
547
- for (const plan of req.plans) {
548
- await ctx.store.put('plan', plan.plan_id, plan);
549
- }
550
- return {
551
- plans: req.plans.map(p => ({
552
- plan_id: p.plan_id,
553
- status: 'active' as const,
554
- version: 1,
555
- })),
556
- };
557
- },
558
- checkGovernance: async (req, ctx) => {
559
- const plan = await ctx.store.get('plan', req.plan_id);
560
- // ... decision logic ...
561
- return {
562
- check_id: `chk_${randomUUID()}`,
563
- status: 'approved' as const,
564
- plan_id: req.plan_id,
565
- explanation: 'Within spending authority',
566
- };
567
- },
568
- // ... reportPlanOutcome, getPlanAuditLogs, etc.
569
- };
570
-
571
- propertyLists: PropertyListsPlatform = {
572
- listPropertyLists: async (req, ctx) => ({ property_lists: [] }),
573
- createPropertyList: async (req, ctx) => ({
574
- /* ... */
575
- }),
576
- updatePropertyList: async (req, ctx) => ({
577
- /* ... */
578
- }),
579
- deletePropertyList: async (req, ctx) => ({
580
- /* ... */
581
- }),
582
- };
583
- }
584
-
585
- const platform = new MyGovernance();
586
-
587
- serve(() =>
588
- createAdcpServerFromPlatform(platform, {
589
- name: 'Governance Agent',
590
- version: '1.0.0',
591
- idempotency,
592
- })
593
- );
594
- ```
58
+ - [`idempotency_key`](../cross-cutting.md#idempotency_key-is-required-on-every-mutating-call) on `sync_plans`, `sync_governance`, `report_plan_outcome`, `create_property_list` / `update_property_list` / `delete_property_list`, `create_collection_list` / `update_collection_list` / `delete_collection_list`, `create_content_standards` / `update_content_standards` / `calibrate_content`
59
+ - [Resolve-then-authorize](../cross-cutting.md#resolve-then-authorize--uniform-errors-for-not-found--not-yours) — byte-equivalent errors on `property_list_id` / `collection_list_id` / `plan_id` cross-tenant lookups
60
+ - [Account resolution](../cross-cutting.md#account-resolution-pick-a-security-preset) — `createTenantStore` for multi-tenant policy hubs
595
61
 
596
- **Decision logic for check_governance:**
62
+ One governance-specific rule on top:
597
63
 
598
- Route decisions based on the plan state and request parameters:
64
+ ### `comply_test_controller` is required
599
65
 
600
- - Compare request budget against plan's `budget.total`; enforce reallocation autonomy using `budget.reallocation_threshold` (denominated in `budget.currency`) or `budget.reallocation_unlimited: true` — exactly one must be set
601
- - If `reallocation_threshold` is set and a reallocation exceeds it → require human review / deny
602
- - If `plan.human_review_required: true` → action must escalate regardless of `mode` (advisory/audit cannot downgrade)
603
- - Auto-flip `plan.human_review_required: true` when resolved `policy_categories` include `fair_housing | fair_lending | fair_employment | pharmaceutical_advertising`, or when `policy_ids` include `eu_ai_act_annex_iii`
604
- - If `human_review_required: true` but the brand/brand-ref has no `data_subject_contestation` contact → emit a critical finding
605
- - Require a `human_override` artifact (reason ≥20 chars, approver email) on re-sync to downgrade `human_review_required: true → false`
606
- - If policy conditions match → approve with conditions
607
- - If `phase: 'delivery'` → check delivery_metrics for drift
66
+ Both `governance_spend_authority` and `property_lists` storyboards seed fixtures via `comply_test_controller.seed_plan` / `seed_property_list` before running the business-logic phases. Register via `createComplyController({ seed: { plan, property_list, collection_list, content_standards } })` and call `controller.register(server)` — same pattern as the seller adapter wires for media-buy seeding.
608
67
 
609
- ## Idempotency
68
+ Without the test controller, every business-logic step skips with `missing_test_controller` and the track "passes" vacuously — the grader treats vacuous green as fail. Wire it on day one.
610
69
 
611
- AdCP v3 requires an `idempotency_key` on every mutating request — for governance agents that's `create_property_list` / `update_property_list` / `delete_property_list`, `create_content_standards` / `update_content_standards`, `sync_plans`, and `report_plan_outcome` (`check_governance` and the various `get_*` / `list_*` tools are read-only and exempt). Pass `createIdempotencyStore` from `@adcp/sdk/server` to `createAdcpServerFromPlatform(platform, { idempotency })` and the framework handles missing-key rejection (`INVALID_REQUEST`), JCS-canonicalized payload hashing, `IDEMPOTENCY_CONFLICT` on same-key-different-payload (no payload leaked in the error), `IDEMPOTENCY_EXPIRED` past the TTL, `replayed: true` envelope injection on cache hits, and automatic declaration of `adcp.idempotency.replay_ttl_seconds` on `get_adcp_capabilities`. Only successful responses cache — errors re-execute on retry so a failed `sync_plans` or outcome report can be retried cleanly. Scoping is per-principal via `resolveSessionKey` (or override with `resolveIdempotencyPrincipal`) — typically the operator / tenant id.
70
+ ## Specialism deltas at a glance
612
71
 
613
- ```typescript
614
- import { createIdempotencyStore, memoryBackend } from '@adcp/sdk/server';
72
+ **`governance-spend-authority`** — `check_governance` evaluates the request's `binding` against the Plan's `budget.total`, `human_review_required`, and `custom_policies`. Returns one of `approved` / `conditions` / `denied`. The Plan model is the source of truth: read `sync_plans` / `get_plan` to materialize the spending authority, then check the inbound binding against it.
615
73
 
616
- const idempotency = createIdempotencyStore({
617
- backend: memoryBackend(), // or pgBackend(pool) for production
618
- ttlSeconds: 86400, // 3600–604800 per spec; throws if out of range
619
- });
74
+ **`governance-delivery-monitor`** `check_governance` with `phase: 'delivery'` + `delivery_metrics`. Compute drift vs Plan's `budget.reallocation_threshold`; return `BUDGET_DRIFT_EXCEEDED` findings when delivery exceeds the threshold.
620
75
 
621
- const server = createAdcpServerFromPlatform(platform, {
622
- name: '...',
623
- version: '...',
624
- idempotency,
625
- // MUST never return undefined — or every mutating request rejects as
626
- // SERVICE_UNAVAILABLE. A constant works for a demo; production uses
627
- // `(ctx) => ctx.account?.id` against the typed `Account<MyMeta>`.
628
- resolveSessionKey: () => 'default-principal',
629
- });
630
- ```
76
+ **`property-lists`** tool family `property_list_*` (`create`, `read`, `update`, `delete`, `list`). `validate_property_delivery` returns full `violations[]` (publisher property not in the inclusion list, or hit the exclusion list). Property identity is `{agent_url, id}` — buyers fetch lists by reference, not by inline copy.
631
77
 
632
- ## Protecting your agent
633
-
634
- **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()`.
635
-
636
- ```typescript
637
- import { serve } from '@adcp/sdk';
638
- import { verifyApiKey, verifyBearer, anyOf } from '@adcp/sdk/server';
639
-
640
- // API key — simplest, good for B2B integrations
641
- serve(createAgent, {
642
- authenticate: verifyApiKey({
643
- verify: async token => {
644
- const row = await db.api_keys.findUnique({ where: { token } });
645
- return row ? { principal: row.account_id } : null;
646
- },
647
- }),
648
- });
649
-
650
- // OAuth — best when buyers authenticate as themselves
651
- const AGENT_URL = 'https://my-agent.example.com/mcp';
652
- serve(createAgent, {
653
- publicUrl: AGENT_URL, // canonical RFC 8707 audience — also served as `resource` in protected-resource metadata
654
- authenticate: verifyBearer({
655
- jwksUri: 'https://auth.example.com/.well-known/jwks.json',
656
- issuer: 'https://auth.example.com',
657
- audience: AGENT_URL, // MUST equal publicUrl
658
- }),
659
- protectedResource: { authorization_servers: ['https://auth.example.com'] },
660
- });
661
-
662
- // Both
663
- serve(createAgent, {
664
- publicUrl: AGENT_URL,
665
- authenticate: anyOf(verifyApiKey({ verify: lookupKey }), verifyBearer({ jwksUri, issuer, audience: AGENT_URL })),
666
- protectedResource: { authorization_servers: [issuer] },
667
- });
668
- ```
78
+ **`collection-lists`** program-level brand safety (shows, series, podcasts) identified by platform-independent IDs: **IMDb** (movies/TV), **Gracenote** (TV/audio metadata), **EIDR** (entertainment industry standard). Mirrors property-lists CRUD plus collection resolution.
669
79
 
670
- 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.
80
+ **`content-standards`** `policies[]` is an array of `{ policy_id, enforcement, policy, policy_categories?, channels? }`. `validate_content_delivery` uses `records[].artifact` (not `creative_id`). Re-read policies per call so `standards_version_change` events don't serve stale policy.
671
81
 
672
- ## Validate Locally
82
+ **`measurement-verification`** v3.1 placeholder (empty `phases`). Pass universal + governance baseline only. Advertise the capability for discoverability.
673
83
 
674
- **Full validation checklist:** [docs/guides/VALIDATE-YOUR-AGENT.md](../../docs/guides/VALIDATE-YOUR-AGENT.md). Governance-specific commands:
84
+ ## Validate locally
675
85
 
676
86
  ```bash
677
- # Boot
678
- npx tsx agent.ts &
679
-
680
- # Happy paths — run the storyboards matching your claimed specialisms
681
- npx @adcp/sdk@latest storyboard run http://localhost:3001/mcp \
682
- --storyboards governance_spend_authority,governance_spend_authority/denied,governance_delivery_monitor \
683
- --auth $TOKEN
684
- npx @adcp/sdk@latest storyboard run http://localhost:3001/mcp \
685
- --storyboards property_lists,collection_lists,content_standards \
686
- --auth $TOKEN
687
-
688
- # Cross-cutting obligations
689
- npx @adcp/sdk@latest storyboard run http://localhost:3001/mcp \
690
- --storyboards security_baseline,idempotency,schema_validation,error_compliance --auth $TOKEN
691
-
692
- # Rejection-surface fuzz — includes update_property_list / update_content_standards (Tier 3)
693
- npx @adcp/sdk@latest fuzz http://localhost:3001/mcp --auto-seed --auth-token $TOKEN
694
- ```
87
+ # Run the fork-matrix gate (tsc strict)
88
+ npm run compliance:fork-matrix -- --test-name-pattern="hello-seller-adapter-multi-tenant"
695
89
 
696
- Common failure decoder:
697
-
698
- - `authority_level` field present → 3.0 GA removed it; use `human_review_required: boolean` instead
699
- - `status: 'escalated'` on `check_governance` → enum is `approved` / `denied` / `conditions`
700
- - Missing `check_id` on `check_governance` response → required; generate a unique ID per check
701
- - `finding.code` / `finding.message` → schema requires `category_id`, `severity`, `explanation`
702
-
703
- **Keep iterating until all steps pass.** Can't bind ports? `npm run compliance:skill-matrix -- --filter governance` runs an isolated end-to-end test.
704
-
705
- ## Common Mistakes
706
-
707
- | Mistake | Fix |
708
- | ------------------------------------------------------ | ----------------------------------------------------------------------------------------------------- |
709
- | Manually registering `get_adcp_capabilities` | Framework auto-generates it from registered handlers — do not register it yourself |
710
- | Using `server.tool()` instead of domain groups | Use `governance: { syncPlans, checkGovernance, ... }` — framework wires schemas and response builders |
711
- | Using in-memory Maps for state | Use `ctx.store.put/get/patch/delete/list` — built-in state persistence |
712
- | `check_governance` missing `check_id` | Generate a unique ID per check — required field |
713
- | `check_governance` returns `decision` not `status` | Field is `status`, not `decision`. Values: `approved`, `denied`, `conditions` |
714
- | Conditions use `description` instead of `reason` | Condition schema requires `field` and `reason`, not `condition_id` and `description` |
715
- | Findings use `code`/`message` instead of proper fields | Finding schema requires `category_id`, `severity`, `explanation` |
716
- | `sync_plans` response missing `version` | Each plan needs `version: 1` (integer) — required field |
717
- | `delete_property_list` missing `deleted: true` | Boolean `deleted` field is required in response |
718
- | `create_property_list` missing `auth_token` | `auth_token` is required — generate a token string |
719
- | Dropping `context` from responses | Echo `args.context` back unchanged in every response — buyers use it for correlation |
720
-
721
- ## Storyboards
722
-
723
- | Storyboard | Tests |
724
- | -------------------------------- | ------------------------------------------------------------------ |
725
- | `campaign_governance_conditions` | Approved with conditions flow |
726
- | `campaign_governance_delivery` | Delivery monitoring with drift re-evaluation |
727
- | `campaign_governance_denied` | Denied — buy exceeds spending authority |
728
- | `property_lists` | Property list lifecycle: create, query, update, delete, validate |
729
- | `collection_lists` | Collection list lifecycle: create, query (resolve), update, delete |
730
- | `content_standards` | Content standards lifecycle: create, calibrate, validate |
731
-
732
- ## Specialism Details
733
-
734
- ### <a name="specialism-governance-spend-authority"></a>governance-spend-authority
735
-
736
- Storyboard category: `campaign_governance_*`. The agent holds a Plan and evaluates each binding against it.
737
-
738
- Minimal decision logic:
739
-
740
- ```typescript
741
- checkGovernance: async (params, ctx) => {
742
- const plan = await ctx.store.get('plan', params.plan_id);
743
- if (!plan) return adcpError('NOT_FOUND', { message: `Plan ${params.plan_id} not found` });
744
-
745
- const budget = params.binding.total_budget.amount;
746
-
747
- // 1. Human-review gate — GDPR Art 22 / EU AI Act.
748
- // Every action on a human_review_required plan must be escalated, regardless of budget.
749
- // Signal as `denied` + a critical-severity finding.
750
- // The buyer resolves review off-protocol and re-calls check_governance with a fresh governance_context.
751
- if (plan.human_review_required) {
752
- return {
753
- check_id: `chk_${Date.now()}`,
754
- status: 'denied' as const,
755
- plan_id: params.plan_id,
756
- explanation: 'Plan requires human review before this action can proceed',
757
- findings: [{
758
- category_id: 'HUMAN_REVIEW_REQUIRED',
759
- severity: 'critical',
760
- explanation: 'plan.human_review_required is true — resolve off-protocol and retry with a fresh governance_context',
761
- }],
762
- };
763
- }
764
-
765
- // 2. Budget ceiling — cannot exceed plan.budget.total.
766
- if (budget > plan.budget.total) {
767
- return { check_id: `chk_${Date.now()}`, status: 'denied' as const, plan_id: params.plan_id,
768
- explanation: `Budget ${budget} exceeds plan ceiling ${plan.budget.total}`,
769
- findings: [{ category_id: 'BUDGET_EXCEEDED', severity: 'critical',
770
- explanation: `Over plan ceiling by ${budget - plan.budget.total}` }],
771
- };
772
- }
773
-
774
- // 3. Custom policy matching — custom_policies is an array of structured objects
775
- const conditions = [];
776
- for (const policy of plan.custom_policies ?? []) {
777
- if (policy.policy.toLowerCase().includes('ctv') && hasCtv(params.binding)) {
778
- conditions.push({ field: 'reporting.frequency', reason: policy.policy, policy_id: policy.policy_id });
779
- }
780
- }
781
-
782
- return {
783
- check_id: `chk_${Date.now()}`,
784
- status: conditions.length ? 'conditions' as const : 'approved' as const, // 3-value enum, pick one
785
- plan_id: params.plan_id,
786
- explanation: conditions.length ? 'Approved with conditions' : 'Within spending authority',
787
- conditions,
788
- governance_context: `gov_ctx_${params.plan_id}_${Date.now()}`, // opaque string — buyer echoes back to create_media_buy
789
- };
790
- },
791
- ```
792
-
793
- `governance_context` is an opaque string your agent mints and the buyer echoes back. Use it to tie a specific approval to a specific `create_media_buy` call — sign it or tag it with the plan revision if you care about tamper-resistance.
794
-
795
- ### <a name="specialism-governance-delivery-monitor"></a>governance-delivery-monitor
796
-
797
- Storyboard: `governance_delivery_monitor`. Same `check_governance` tool, but the request carries `delivery_metrics` instead of a bare binding — that's the cue to run drift logic.
798
-
799
- ```typescript
800
- checkGovernance: async (params, ctx) => {
801
- if (params.phase === 'delivery' || params.delivery_metrics) {
802
- const plan = await ctx.store.get('plan', params.plan_id);
803
- const reallocationThreshold = plan.budget.reallocation_threshold; // absolute $, e.g. 8000
804
-
805
- // Check total-spend drift against the reallocation threshold
806
- const cumulative = params.delivery_metrics.cumulative_spend;
807
- const overage = cumulative - plan.budget.total;
808
- const exceeded = Math.abs(overage) > reallocationThreshold;
809
-
810
- // Also flag pacing mismatches that imply channel reallocation
811
- const driftedChannels = Object.entries(params.delivery_metrics.channel_distribution ?? {})
812
- .filter(([channel, percent]) => {
813
- const planAllocation = plan.channel_allocations?.[channel];
814
- return planAllocation != null && Math.abs(percent - planAllocation) > 10; // 10pp threshold
815
- });
816
-
817
- if (!exceeded && driftedChannels.length === 0) {
818
- return { check_id: `chk_${Date.now()}`, status: 'approved' as const, plan_id: params.plan_id,
819
- explanation: 'Delivery within reallocation threshold',
820
- governance_context: params.governance_context ?? `gov_ctx_${params.plan_id}_delivery_approved` };
821
- }
822
-
823
- return {
824
- check_id: `chk_${Date.now()}`,
825
- status: 'conditions' as const, // approved-with-reallocation — use the 'conditions' status, not 'approved'
826
- plan_id: params.plan_id,
827
- explanation: `Drift exceeded threshold: ${overage > 0 ? 'overage' : 'underage'} of ${Math.abs(overage)}`,
828
- conditions: driftedChannels.map(([channel, percent]) => ({
829
- field: `channel_distribution.${channel}`,
830
- reason: `Rebalance away from ${channel} — currently ${percent}%, plan targets ${plan.channel_allocations?.[channel] ?? 'unspecified'}%`,
831
- })),
832
- findings: [{ category_id: 'BUDGET_DRIFT_EXCEEDED', severity: 'warning',
833
- explanation: `Cumulative spend ${cumulative} outside reallocation threshold ±${reallocationThreshold}` }],
834
- };
835
- }
836
- // ... create-phase logic above
837
- },
838
-
839
- // Policy matching in create-phase checks — custom_policies is an array of objects, not strings:
840
- for (const policy of plan.custom_policies ?? []) {
841
- if (policy.policy.toLowerCase().includes('ctv') && hasCtv(params.binding)) {
842
- conditions.push({ field: 'reporting.frequency', reason: policy.policy });
843
- }
844
- }
845
- ```
846
-
847
- The `findings[].category_id` / `severity: 'info' | 'warning' | 'critical'` enum is the schema-canonical shape per [adcontextprotocol/adcp#2286](https://github.com/adcontextprotocol/adcp/issues/2286). Storyboard validations today only check `field_present: findings`, so either spelling passes — but use the schema shape.
848
-
849
- ### <a name="specialism-property-lists"></a>property-lists
850
-
851
- Storyboard: `property_lists`. Specialism and tool family share the same name. Your agent owns both inclusion and exclusion list semantics — track `list_type` on the stored list. Wrap identifiers with `selection_type: 'identifiers'`:
852
-
853
- ```typescript
854
- createPropertyList: async (params, ctx) => {
855
- const list_id = `plist_${Date.now()}`;
856
- const stored = {
857
- list_id,
858
- name: params.name,
859
- description: params.description,
860
- list_type: 'inclusion' as const, // caller-modeled — infer from context or add as ext
861
- base_properties: params.base_properties ?? [], // each entry: { selection_type: 'identifiers', identifiers: [{ type, value }] }
862
- property_count: countIdentifiers(params.base_properties),
863
- status: 'active' as const,
864
- };
865
- await ctx.store.put('property_list', list_id, stored);
866
- return {
867
- list: summarize(stored),
868
- auth_token: `tok_${list_id}`,
869
- };
870
- },
871
-
872
- // Shape of a base_properties entry (matches the storyboard sample):
873
- type BaseProperty = {
874
- selection_type: 'identifiers';
875
- identifiers: Array<{
876
- type: 'domain' | 'bundle_id' | 'app_store_url' | 'podcast_rss_feed' | 'property_rid';
877
- value: string;
878
- }>;
879
- };
880
- ```
881
-
882
- **`list_property_lists` / `list_collection_lists`** — destructure `ctx.store.list`. It returns `{ items, nextCursor? }`, never a bare array. Calling `.map` / `.filter` on the raw result throws `TypeError` and the dispatcher wraps it as `SERVICE_UNAVAILABLE`. Use the typed response helper so you can't accidentally ship a bare `[...]` at the top level (the storyboard runner flags that as shape drift):
883
-
884
- ```typescript
885
- import { listPropertyListsResponse } from '@adcp/sdk/server';
886
-
887
- listPropertyLists: async (params, ctx) => {
888
- const { items } = await ctx.store.list('property_list');
889
- return listPropertyListsResponse({
890
- lists: items.map(list => ({ list_id: list.list_id, name: list.name })),
891
- });
892
- },
893
- ```
894
-
895
- The same pattern applies to `list_collection_lists` (use `listCollectionListsResponse`) and `list_content_standards` (use `listContentStandardsResponse`). Both wrap the same `lists` / `standards` shape and guard against the bare-array drift at compile time.
896
-
897
- `validate_property_delivery` returns `violations[]` with `list_id`, `list_type`, `severity: 'critical'`, and an explanation per non-compliant record — see the response shape in the tool section above.
898
-
899
- The three mutating tools (`create_property_list`, `update_property_list`, `delete_property_list`) require `idempotency_key` per AdCP 3.0 GA — cache the response and return the same object on replay.
900
-
901
- ### <a name="specialism-collection-lists"></a>collection-lists
902
-
903
- Storyboard: `collection_lists`. Where `property-lists` curate surfaces (domains, app bundle IDs), `collection-lists` curate **content programs** (shows, series, podcasts, series arcs) identified by platform-independent IDs: IMDb (`tt0944947`), Gracenote, EIDR. Program-level brand safety — "keep my ads out of all episodes of [show]" cuts across every surface that carries that show.
904
-
905
- **Request shape** — `base_collections[]` wraps identifiers with a `selection_type`, and `filters` is an object (not an array):
906
-
907
- ```typescript
908
- createCollectionList: async (params, ctx) => {
909
- const list_id = `clist_${Date.now()}`;
910
- const stored = {
911
- list_id,
912
- name: params.name,
913
- description: params.description,
914
- base_collections: params.base_collections ?? [], // see shape below
915
- filters: params.filters ?? {}, // object — e.g. { kinds: ['series'] }
916
- collection_count: resolveCollectionCount(params.base_collections, params.filters),
917
- status: 'active' as const,
918
- };
919
- await ctx.store.put('collection_list', list_id, stored);
920
- return { list: summarize(stored), auth_token: `tok_${list_id}` };
921
- },
922
-
923
- // Shape of a base_collections entry:
924
- type BaseCollection = {
925
- selection_type: 'distribution_ids';
926
- identifiers: Array<{
927
- type: 'imdb_id' | 'gracenote_id' | 'eidr';
928
- value: string; // e.g. "tt9999901"
929
- }>;
930
- };
931
-
932
- // Shape of filters:
933
- type Filters = {
934
- kinds?: ('series' | 'movie' | 'podcast' | 'episode')[];
935
- // other filter families added in 3.1
936
- };
937
- ```
90
+ # Run your forked agent against the matching storyboard
91
+ adcp storyboard run http://127.0.0.1:3003/mcp governance_spend_authority \
92
+ --bearer "$ADCP_AUTH_TOKEN" --include-bundles --json
938
93
 
939
- **`get_collection_list`** with `resolve: true` returns the concrete `collections[]` (not `resolved_programs`) — the resolved list of program IDs after filters are applied. Sellers cache this at bid time.
940
-
941
- ```typescript
942
- {
943
- list: {
944
- list_id: string,
945
- name: string,
946
- collection_count: number,
947
- collections: Array<{ type, value }>, // resolved programs
948
- cache_valid_until: string, // ISO timestamp — sellers respect this TTL
949
- },
950
- }
94
+ # Property-lists track
95
+ adcp storyboard run http://127.0.0.1:3003/mcp property_lists \
96
+ --bearer "$ADCP_AUTH_TOKEN" --include-bundles --json
951
97
  ```
952
98
 
953
- No `validate_collection_delivery` tool exists yet (preview in 3.1). Delivery enforcement is a receiving-seller concern; the governance agent's job ends at publishing the resolved list with a `cache_valid_until`.
954
-
955
- ### <a name="specialism-content-standards"></a>content-standards
99
+ The fork-matrix gate is the three-gate contract from [`docs/guides/EXAMPLE-TEST-CONTRACT.md`](../../docs/guides/EXAMPLE-TEST-CONTRACT.md). The multi-tenant adapter currently runs the strict-tsc gate only (no governance / brand-rights mock-server today); storyboard-grader gates land alongside the next mock-server family.
956
100
 
957
- Storyboard: `content_standards`. Two load-bearing protocol shapes the baseline above does not cover:
101
+ For deeper validation: [`docs/guides/VALIDATE-YOUR-AGENT.md`](../../docs/guides/VALIDATE-YOUR-AGENT.md).
958
102
 
959
- 1. **`policies` is an array of structured entries**, not a prose string. Each entry carries its own `enforcement` level — don't parse severity from inline `(must)` / `(should)` markers; read it off the `enforcement` field:
103
+ ## Common shape gotchas
960
104
 
961
- ```typescript
962
- type Policy = {
963
- policy_id: string;
964
- enforcement: 'must' | 'should';
965
- policy: string; // prose description of the rule
966
- policy_categories?: string[]; // e.g. ['brand_safety', 'imagery_quality']
967
- channels?: string[]; // e.g. ['display'] — scoped enforcement
968
- };
969
-
970
- function applies(p: Policy, artifact: { channel: string }): boolean {
971
- return !p.channels || p.channels.includes(artifact.channel);
972
- }
973
- ```
974
-
975
- 2. **`validate_content_delivery` uses `records[].artifact`**, not `results[].creative_id`. See the tool section above for the full shape.
976
-
977
- **Re-read policies per call.** The `standards_version_change` phase issues an update, then re-calibrates the same artifact and expects the new verdict. A memoized calibrator that caches by artifact_id will fail that phase. Always fetch the latest policies from `ctx.store.get('content_standards', standards_id)` inside `calibrate_content` / `validate_content_delivery`.
978
-
979
- `calibrate_content` should return per-rule results, not just a top-level verdict:
980
-
981
- ```typescript
982
- calibrateContent: async (params, ctx) => ({
983
- verdict: 'fail' as const,
984
- confidence: 0.95,
985
- explanation: 'Content violates tobacco-free rule',
986
- rules: [
987
- { rule: 'No tobacco advertising', severity: 'must', passed: false,
988
- evidence: 'Detected cigarette imagery in primary asset',
989
- remediation: 'Remove cigarette imagery or select a compliant creative' },
990
- { rule: 'Weekly pacing reports required for CTV', severity: 'should', passed: true,
991
- evidence: 'Agent has reporting_capabilities frequencies: ["weekly"]', remediation: null },
992
- ],
993
- features: [],
994
- }),
995
- ```
105
+ `policies[]` is `{ policy_id, enforcement, policy, ... }` — a wrapped policy, not a bare string. `validate_content_delivery` keys on `records[].artifact`, not `creative_id`. Property identity is `{agent_url, id}` (a `PropertyId`), not a bare string. `check_governance` response uses `decision: 'approved' | 'conditions' | 'denied'` — not boolean. See [`../SHAPE-GOTCHAS.md`](../SHAPE-GOTCHAS.md).
996
106
 
997
- ## Reference
107
+ ## Migration notes
998
108
 
999
- - `storyboards/campaign_governance_conditions.yaml` conditional approval flow
1000
- - `storyboards/campaign_governance_denied.yaml` — denial flow
1001
- - `storyboards/property_lists.yaml` — property list lifecycle
1002
- - `storyboards/collection_lists.yaml` — collection list lifecycle
1003
- - `storyboards/content_standards.yaml` — content standards lifecycle
1004
- - `docs/guides/BUILD-AN-AGENT.md` — SDK patterns
1005
- - `docs/TYPE-SUMMARY.md` — curated type signatures
1006
- - `docs/llms.txt` — full protocol reference
109
+ - 6.6 → 6.7: [`docs/migration-6.6-to-6.7.md`](../../docs/migration-6.6-to-6.7.md). Note: `inventory-lists` was renamed to `property-lists` in AdCP 3.0 GA (5.x → 5.2 migration).
110
+ - 4.x → 5.x: [`docs/migration-4.x-to-5.x.md`](../../docs/migration-4.x-to-5.x.md)