@adcp/sdk 16.5.0 → 16.6.1

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 (2971) hide show
  1. package/ADCP_VERSION +1 -1
  2. package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +2 -4
  3. package/compliance/cache/{3.1.29/protocols → 3.1.30/domains}/media-buy/scenarios/dependency_impairment.yaml +2 -4
  4. package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/dependency_impairment_cardinality.yaml +2 -4
  5. package/compliance/cache/{3.1.29/protocols → 3.1.30/domains}/media-buy/scenarios/invalid_transitions.yaml +2 -4
  6. package/compliance/cache/{3.1.29/protocols → 3.1.30/domains}/media-buy/scenarios/measurement_terms_rejected.yaml +6 -7
  7. package/compliance/cache/{3.1.29/protocols → 3.1.30/domains}/media-buy/scenarios/provenance_audit_observation.yaml +10 -5
  8. package/compliance/cache/{3.1.29/protocols → 3.1.30/domains}/media-buy/scenarios/provenance_truth_of_claim.yaml +13 -14
  9. package/compliance/cache/{3.1.29 → 3.1.30}/index.json +3 -3
  10. package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +2 -4
  11. package/compliance/cache/{3.1.29/domains → 3.1.30/protocols}/media-buy/scenarios/dependency_impairment.yaml +2 -4
  12. package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/dependency_impairment_cardinality.yaml +2 -4
  13. package/compliance/cache/{3.1.29/domains → 3.1.30/protocols}/media-buy/scenarios/invalid_transitions.yaml +2 -4
  14. package/compliance/cache/{3.1.29/domains → 3.1.30/protocols}/media-buy/scenarios/measurement_terms_rejected.yaml +6 -7
  15. package/compliance/cache/{3.1.29/domains → 3.1.30/protocols}/media-buy/scenarios/provenance_audit_observation.yaml +10 -5
  16. package/compliance/cache/{3.1.29/domains → 3.1.30/protocols}/media-buy/scenarios/provenance_truth_of_claim.yaml +13 -14
  17. package/compliance/cache/{3.1.29 → 3.1.30}/universal/stale-response-advisory.yaml +75 -67
  18. package/compliance/cache/{3.1.29 → 3.1.30}/universal/storyboard-schema.yaml +7 -0
  19. package/compliance/cache/{3.2.7 → 3.2.8}/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +2 -0
  20. package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +2 -4
  21. package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/dependency_impairment.yaml +2 -4
  22. package/compliance/cache/{3.2.7/protocols → 3.2.8/domains}/media-buy/scenarios/dependency_impairment_cardinality.yaml +2 -4
  23. package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/invalid_transitions.yaml +2 -4
  24. package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/measurement_terms_rejected.yaml +6 -7
  25. package/compliance/cache/{3.2.7 → 3.2.8}/index.json +3 -3
  26. package/compliance/cache/{3.2.7 → 3.2.8}/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +2 -0
  27. package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +2 -4
  28. package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/dependency_impairment.yaml +2 -4
  29. package/compliance/cache/{3.2.7/domains → 3.2.8/protocols}/media-buy/scenarios/dependency_impairment_cardinality.yaml +2 -4
  30. package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/invalid_transitions.yaml +2 -4
  31. package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +6 -7
  32. package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/sales-broadcast-tv/index.yaml +7 -1
  33. package/compliance/cache/{3.2.7 → 3.2.8}/universal/stale-response-advisory.yaml +77 -69
  34. package/compliance/cache/{3.2.7 → 3.2.8}/universal/storyboard-schema.yaml +7 -0
  35. package/dist/lib/adapters/version/3.0/brand-fields.d.mts +7 -1
  36. package/dist/lib/adapters/version/3.0/brand-fields.d.ts +7 -1
  37. package/dist/lib/adapters/version/3.0/brand-fields.js +139 -3
  38. package/dist/lib/adapters/version/3.0/brand-fields.mjs +136 -2
  39. package/dist/lib/adapters/version/3.0/index.js +6 -0
  40. package/dist/lib/adapters/version/3.0/index.mjs +7 -1
  41. package/dist/lib/adapters/version/3.1/bidding.js +1 -1
  42. package/dist/lib/adapters/version/3.1/bidding.mjs +1 -1
  43. package/dist/lib/adapters/version/types.d.mts +5 -0
  44. package/dist/lib/adapters/version/types.d.ts +5 -0
  45. package/dist/lib/canonical-references/index.js +2 -0
  46. package/dist/lib/canonical-references/index.mjs +2 -0
  47. package/dist/lib/client/account-changes.d.mts +3 -1
  48. package/dist/lib/client/account-changes.d.ts +3 -1
  49. package/dist/lib/client/account-changes.js +22 -2
  50. package/dist/lib/client/account-changes.mjs +22 -2
  51. package/dist/lib/compliance-fixtures/canonical-storyboards-provenance.json +4 -4
  52. package/dist/lib/compliance-fixtures/canonical-storyboards.d.mts +2 -2
  53. package/dist/lib/compliance-fixtures/canonical-storyboards.d.ts +2 -2
  54. package/dist/lib/conformance/oracle.js +3 -2
  55. package/dist/lib/conformance/oracle.mjs +3 -2
  56. package/dist/lib/conformance/schemaLoader.js +4 -4
  57. package/dist/lib/conformance/schemaLoader.mjs +4 -4
  58. package/dist/lib/core/AgentClient.d.mts +165 -1
  59. package/dist/lib/core/AgentClient.d.ts +165 -1
  60. package/dist/lib/core/AgentClient.js +446 -8
  61. package/dist/lib/core/AgentClient.mjs +446 -8
  62. package/dist/lib/core/ConversationTypes.d.mts +8 -0
  63. package/dist/lib/core/ConversationTypes.d.ts +8 -0
  64. package/dist/lib/core/ProtocolResponseParser.d.mts +1 -1
  65. package/dist/lib/core/ProtocolResponseParser.d.ts +1 -1
  66. package/dist/lib/core/ProtocolResponseParser.js +28 -18
  67. package/dist/lib/core/ProtocolResponseParser.mjs +11 -1
  68. package/dist/lib/core/ResponseValidator.js +1 -1
  69. package/dist/lib/core/ResponseValidator.mjs +1 -1
  70. package/dist/lib/core/SingleAgentClient.d.mts +116 -6
  71. package/dist/lib/core/SingleAgentClient.d.ts +116 -6
  72. package/dist/lib/core/SingleAgentClient.js +556 -84
  73. package/dist/lib/core/SingleAgentClient.mjs +545 -72
  74. package/dist/lib/core/TaskExecutor.d.mts +7 -0
  75. package/dist/lib/core/TaskExecutor.d.ts +7 -0
  76. package/dist/lib/core/TaskExecutor.js +23 -8
  77. package/dist/lib/core/TaskExecutor.mjs +23 -8
  78. package/dist/lib/core/task-status.d.mts +2 -0
  79. package/dist/lib/core/task-status.d.ts +2 -0
  80. package/dist/lib/core/task-status.js +11 -2
  81. package/dist/lib/core/task-status.mjs +9 -1
  82. package/dist/lib/errors/index.d.mts +22 -0
  83. package/dist/lib/errors/index.d.ts +22 -0
  84. package/dist/lib/errors/index.js +43 -0
  85. package/dist/lib/errors/index.mjs +42 -0
  86. package/dist/lib/identity-3.3/trust.d.mts +1 -4
  87. package/dist/lib/identity-3.3/trust.d.ts +1 -4
  88. package/dist/lib/identity-3.3/trust.js +34 -21
  89. package/dist/lib/identity-3.3/trust.mjs +34 -21
  90. package/dist/lib/identity-3.3/validation.js +5 -3
  91. package/dist/lib/identity-3.3/validation.mjs +6 -4
  92. package/dist/lib/index.d.mts +8 -54
  93. package/dist/lib/index.d.ts +8 -54
  94. package/dist/lib/index.js +15 -0
  95. package/dist/lib/index.mjs +11 -0
  96. package/dist/lib/media-buy/action-assessment.js +29 -3
  97. package/dist/lib/media-buy/action-assessment.mjs +32 -4
  98. package/dist/lib/media-buy/action-contracts.d.mts +3 -0
  99. package/dist/lib/media-buy/action-contracts.d.ts +3 -0
  100. package/dist/lib/media-buy/action-contracts.js +24 -1
  101. package/dist/lib/media-buy/action-contracts.mjs +22 -1
  102. package/dist/lib/media-buy/compatibility.js +6 -1
  103. package/dist/lib/media-buy/compatibility.mjs +6 -1
  104. package/dist/lib/media-buy/preflight.js +1 -1
  105. package/dist/lib/media-buy/preflight.mjs +3 -2
  106. package/dist/lib/media-buy/types.d.mts +6 -1
  107. package/dist/lib/media-buy/types.d.ts +6 -1
  108. package/dist/lib/negotiation/commercial-terms-semantics.js +11 -0
  109. package/dist/lib/negotiation/commercial-terms-semantics.mjs +11 -0
  110. package/dist/lib/protocols/mcp-modern.d.mts +2 -0
  111. package/dist/lib/protocols/mcp-modern.d.ts +2 -0
  112. package/dist/lib/protocols/mcp-modern.js +31 -5
  113. package/dist/lib/protocols/mcp-modern.mjs +31 -5
  114. package/dist/lib/protocols/mcp-scope.d.mts +6 -1
  115. package/dist/lib/protocols/mcp-scope.d.ts +6 -1
  116. package/dist/lib/protocols/mcp-scope.js +25 -3
  117. package/dist/lib/protocols/mcp-scope.mjs +24 -3
  118. package/dist/lib/protocols/mcp.js +12 -6
  119. package/dist/lib/protocols/mcp.mjs +13 -6
  120. package/dist/lib/reporting/inspection.js +1 -0
  121. package/dist/lib/reporting/inspection.mjs +1 -0
  122. package/dist/lib/schemas/browser.d.mts +2 -0
  123. package/dist/lib/schemas/browser.d.ts +2 -0
  124. package/dist/lib/schemas/browser.js +3 -0
  125. package/dist/lib/schemas/browser.mjs +2 -0
  126. package/dist/lib/schemas/index.d.mts +5 -2
  127. package/dist/lib/schemas/index.d.ts +5 -2
  128. package/dist/lib/schemas/index.js +5 -0
  129. package/dist/lib/schemas/index.mjs +4 -0
  130. package/dist/lib/schemas-data/3.1/a2ui/bound-value.json +1 -1
  131. package/dist/lib/schemas-data/3.1/a2ui/component.json +1 -1
  132. package/dist/lib/schemas-data/3.1/a2ui/si-catalog.json +25 -25
  133. package/dist/lib/schemas-data/3.1/a2ui/surface.json +2 -2
  134. package/dist/lib/schemas-data/3.1/a2ui/user-action.json +1 -1
  135. package/dist/lib/schemas-data/3.1/aao/agent-publishers.json +1 -1
  136. package/dist/lib/schemas-data/3.1/account/get-account-financials-request.json +6 -6
  137. package/dist/lib/schemas-data/3.1/account/get-account-financials-response.json +12 -12
  138. package/dist/lib/schemas-data/3.1/account/list-accounts-request.json +6 -6
  139. package/dist/lib/schemas-data/3.1/account/list-accounts-response.json +8 -8
  140. package/dist/lib/schemas-data/3.1/account/report-usage-request.json +6 -6
  141. package/dist/lib/schemas-data/3.1/account/report-usage-response.json +6 -6
  142. package/dist/lib/schemas-data/3.1/account/sync-accounts-request.json +12 -12
  143. package/dist/lib/schemas-data/3.1/account/sync-accounts-response.json +16 -16
  144. package/dist/lib/schemas-data/3.1/account/sync-governance-request.json +6 -6
  145. package/dist/lib/schemas-data/3.1/account/sync-governance-response.json +10 -10
  146. package/dist/lib/schemas-data/3.1/adagents.json +29 -29
  147. package/dist/lib/schemas-data/3.1/brand/acquire-rights-request.json +10 -10
  148. package/dist/lib/schemas-data/3.1/brand/acquire-rights-response.json +16 -16
  149. package/dist/lib/schemas-data/3.1/brand/creative-approval-request.json +5 -5
  150. package/dist/lib/schemas-data/3.1/brand/creative-approval-response.json +12 -12
  151. package/dist/lib/schemas-data/3.1/brand/get-brand-identity-request.json +4 -4
  152. package/dist/lib/schemas-data/3.1/brand/get-brand-identity-response.json +10 -10
  153. package/dist/lib/schemas-data/3.1/brand/get-rights-request.json +8 -8
  154. package/dist/lib/schemas-data/3.1/brand/get-rights-response.json +11 -11
  155. package/dist/lib/schemas-data/3.1/brand/revocation-notification.json +4 -4
  156. package/dist/lib/schemas-data/3.1/brand/rights-pricing-option.json +5 -5
  157. package/dist/lib/schemas-data/3.1/brand/rights-terms.json +3 -3
  158. package/dist/lib/schemas-data/3.1/brand/search-brands-request.json +6 -6
  159. package/dist/lib/schemas-data/3.1/brand/search-brands-response.json +11 -11
  160. package/dist/lib/schemas-data/3.1/brand/update-rights-request.json +6 -6
  161. package/dist/lib/schemas-data/3.1/brand/update-rights-response.json +11 -11
  162. package/dist/lib/schemas-data/3.1/brand/verification-status.json +1 -1
  163. package/dist/lib/schemas-data/3.1/brand/verify-brand-claim-request.json +2 -2
  164. package/dist/lib/schemas-data/3.1/brand/verify-brand-claim-response.json +13 -13
  165. package/dist/lib/schemas-data/3.1/brand/verify-brand-claims-request.json +2 -2
  166. package/dist/lib/schemas-data/3.1/brand/verify-brand-claims-response.json +13 -13
  167. package/dist/lib/schemas-data/3.1/brand.json +21 -21
  168. package/dist/lib/schemas-data/3.1/bundled.schemas.br +0 -0
  169. package/dist/lib/schemas-data/3.1/collection/base-collection-source.json +3 -3
  170. package/dist/lib/schemas-data/3.1/collection/collection-list-changed-webhook.json +2 -2
  171. package/dist/lib/schemas-data/3.1/collection/collection-list-filters.json +7 -7
  172. package/dist/lib/schemas-data/3.1/collection/collection-list.json +5 -5
  173. package/dist/lib/schemas-data/3.1/collection/create-collection-list-request.json +8 -8
  174. package/dist/lib/schemas-data/3.1/collection/create-collection-list-response.json +6 -6
  175. package/dist/lib/schemas-data/3.1/collection/delete-collection-list-request.json +5 -5
  176. package/dist/lib/schemas-data/3.1/collection/delete-collection-list-response.json +5 -5
  177. package/dist/lib/schemas-data/3.1/collection/get-collection-list-request.json +5 -5
  178. package/dist/lib/schemas-data/3.1/collection/get-collection-list-response.json +12 -12
  179. package/dist/lib/schemas-data/3.1/collection/list-collection-lists-request.json +6 -6
  180. package/dist/lib/schemas-data/3.1/collection/list-collection-lists-response.json +7 -7
  181. package/dist/lib/schemas-data/3.1/collection/update-collection-list-request.json +8 -8
  182. package/dist/lib/schemas-data/3.1/collection/update-collection-list-response.json +6 -6
  183. package/dist/lib/schemas-data/3.1/content-standards/artifact-webhook-payload.json +3 -3
  184. package/dist/lib/schemas-data/3.1/content-standards/artifact.json +7 -7
  185. package/dist/lib/schemas-data/3.1/content-standards/calibrate-content-request.json +5 -5
  186. package/dist/lib/schemas-data/3.1/content-standards/calibrate-content-response.json +10 -10
  187. package/dist/lib/schemas-data/3.1/content-standards/content-standards.json +7 -7
  188. package/dist/lib/schemas-data/3.1/content-standards/create-content-standards-request.json +8 -8
  189. package/dist/lib/schemas-data/3.1/content-standards/create-content-standards-response.json +8 -8
  190. package/dist/lib/schemas-data/3.1/content-standards/get-content-standards-request.json +4 -4
  191. package/dist/lib/schemas-data/3.1/content-standards/get-content-standards-response.json +9 -9
  192. package/dist/lib/schemas-data/3.1/content-standards/get-media-buy-artifacts-request.json +5 -5
  193. package/dist/lib/schemas-data/3.1/content-standards/get-media-buy-artifacts-response.json +10 -10
  194. package/dist/lib/schemas-data/3.1/content-standards/list-content-standards-request.json +6 -6
  195. package/dist/lib/schemas-data/3.1/content-standards/list-content-standards-response.json +10 -10
  196. package/dist/lib/schemas-data/3.1/content-standards/update-content-standards-request.json +8 -8
  197. package/dist/lib/schemas-data/3.1/content-standards/update-content-standards-response.json +8 -8
  198. package/dist/lib/schemas-data/3.1/content-standards/validate-content-delivery-request.json +5 -5
  199. package/dist/lib/schemas-data/3.1/content-standards/validate-content-delivery-response.json +10 -10
  200. package/dist/lib/schemas-data/3.1/core/account-authorization.json +1 -1
  201. package/dist/lib/schemas-data/3.1/core/account-ref.json +2 -2
  202. package/dist/lib/schemas-data/3.1/core/account-with-authorization.json +3 -3
  203. package/dist/lib/schemas-data/3.1/core/account.json +10 -10
  204. package/dist/lib/schemas-data/3.1/core/activation-key.json +1 -1
  205. package/dist/lib/schemas-data/3.1/core/ad-inventory-config.json +1 -1
  206. package/dist/lib/schemas-data/3.1/core/agent-encryption-key.json +1 -1
  207. package/dist/lib/schemas-data/3.1/core/agent-signing-key.json +1 -1
  208. package/dist/lib/schemas-data/3.1/core/app-item.json +4 -4
  209. package/dist/lib/schemas-data/3.1/core/asset-group-vocabulary.json +1 -1
  210. package/dist/lib/schemas-data/3.1/core/assets/asset-union.json +21 -21
  211. package/dist/lib/schemas-data/3.1/core/assets/audio-asset.json +3 -3
  212. package/dist/lib/schemas-data/3.1/core/assets/brief-asset.json +2 -2
  213. package/dist/lib/schemas-data/3.1/core/assets/card-asset.json +6 -6
  214. package/dist/lib/schemas-data/3.1/core/assets/catalog-asset.json +2 -2
  215. package/dist/lib/schemas-data/3.1/core/assets/css-asset.json +2 -2
  216. package/dist/lib/schemas-data/3.1/core/assets/daast-asset.json +5 -5
  217. package/dist/lib/schemas-data/3.1/core/assets/daast-tracker-asset.json +4 -4
  218. package/dist/lib/schemas-data/3.1/core/assets/html-asset.json +2 -2
  219. package/dist/lib/schemas-data/3.1/core/assets/image-asset.json +2 -2
  220. package/dist/lib/schemas-data/3.1/core/assets/javascript-asset.json +3 -3
  221. package/dist/lib/schemas-data/3.1/core/assets/markdown-asset.json +2 -2
  222. package/dist/lib/schemas-data/3.1/core/assets/pixel-tracker-asset.json +3 -3
  223. package/dist/lib/schemas-data/3.1/core/assets/published-post-asset.json +2 -2
  224. package/dist/lib/schemas-data/3.1/core/assets/text-asset.json +2 -2
  225. package/dist/lib/schemas-data/3.1/core/assets/url-asset.json +4 -4
  226. package/dist/lib/schemas-data/3.1/core/assets/vast-asset.json +5 -5
  227. package/dist/lib/schemas-data/3.1/core/assets/vast-tracker-asset.json +4 -4
  228. package/dist/lib/schemas-data/3.1/core/assets/video-asset.json +7 -7
  229. package/dist/lib/schemas-data/3.1/core/assets/webhook-asset.json +7 -7
  230. package/dist/lib/schemas-data/3.1/core/assets/zip-asset.json +2 -2
  231. package/dist/lib/schemas-data/3.1/core/async-response-data.json +29 -29
  232. package/dist/lib/schemas-data/3.1/core/async-response-refs/creative/sync-creatives-async-response-input-required.json +3 -3
  233. package/dist/lib/schemas-data/3.1/core/async-response-refs/creative/sync-creatives-async-response-submitted.json +4 -4
  234. package/dist/lib/schemas-data/3.1/core/async-response-refs/creative/sync-creatives-async-response-working.json +3 -3
  235. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/build-creative-async-response-input-required.json +4 -4
  236. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/build-creative-async-response-submitted.json +4 -4
  237. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/build-creative-async-response-working.json +3 -3
  238. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/create-media-buy-async-response-input-required.json +4 -4
  239. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/create-media-buy-async-response-submitted.json +4 -4
  240. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/create-media-buy-async-response-working.json +3 -3
  241. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/get-products-async-response-input-required.json +4 -4
  242. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/get-products-async-response-submitted.json +4 -4
  243. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/get-products-async-response-working.json +3 -3
  244. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/sync-catalogs-async-response-input-required.json +3 -3
  245. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/sync-catalogs-async-response-submitted.json +4 -4
  246. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/sync-catalogs-async-response-working.json +3 -3
  247. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/update-media-buy-async-response-input-required.json +3 -3
  248. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/update-media-buy-async-response-submitted.json +4 -4
  249. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/update-media-buy-async-response-working.json +3 -3
  250. package/dist/lib/schemas-data/3.1/core/async-response-refs/signals/get-signals-async-response-submitted.json +4 -4
  251. package/dist/lib/schemas-data/3.1/core/async-response-refs/signals/get-signals-async-response-working.json +3 -3
  252. package/dist/lib/schemas-data/3.1/core/attribution-window.json +4 -4
  253. package/dist/lib/schemas-data/3.1/core/audience-member.json +3 -3
  254. package/dist/lib/schemas-data/3.1/core/audience-selector.json +7 -7
  255. package/dist/lib/schemas-data/3.1/core/authorized-agent-base.json +3 -3
  256. package/dist/lib/schemas-data/3.1/core/brand-id.json +1 -1
  257. package/dist/lib/schemas-data/3.1/core/brand-ref.json +3 -3
  258. package/dist/lib/schemas-data/3.1/core/business-entity.json +2 -2
  259. package/dist/lib/schemas-data/3.1/core/cancellation-policy.json +2 -2
  260. package/dist/lib/schemas-data/3.1/core/canonical-format-kind.json +1 -1
  261. package/dist/lib/schemas-data/3.1/core/canonical-projection-ref.json +3 -3
  262. package/dist/lib/schemas-data/3.1/core/canonical-projection-slot-override.json +1 -1
  263. package/dist/lib/schemas-data/3.1/core/catalog-field-mapping.json +2 -2
  264. package/dist/lib/schemas-data/3.1/core/catalog-item-delivery-metrics.json +3 -3
  265. package/dist/lib/schemas-data/3.1/core/catalog.json +7 -7
  266. package/dist/lib/schemas-data/3.1/core/catchment.json +5 -5
  267. package/dist/lib/schemas-data/3.1/core/collection-distribution.json +2 -2
  268. package/dist/lib/schemas-data/3.1/core/collection-list-ref.json +1 -1
  269. package/dist/lib/schemas-data/3.1/core/collection-selector.json +1 -1
  270. package/dist/lib/schemas-data/3.1/core/collection.json +13 -13
  271. package/dist/lib/schemas-data/3.1/core/committed-metric.json +9 -9
  272. package/dist/lib/schemas-data/3.1/core/content-rating.json +2 -2
  273. package/dist/lib/schemas-data/3.1/core/context.json +1 -1
  274. package/dist/lib/schemas-data/3.1/core/creative-asset.json +10 -10
  275. package/dist/lib/schemas-data/3.1/core/creative-assignment.json +2 -2
  276. package/dist/lib/schemas-data/3.1/core/creative-brief.json +4 -4
  277. package/dist/lib/schemas-data/3.1/core/creative-consumption.json +1 -1
  278. package/dist/lib/schemas-data/3.1/core/creative-delivery-metrics.json +2 -2
  279. package/dist/lib/schemas-data/3.1/core/creative-filters.json +5 -5
  280. package/dist/lib/schemas-data/3.1/core/creative-item.json +1 -1
  281. package/dist/lib/schemas-data/3.1/core/creative-manifest.json +11 -11
  282. package/dist/lib/schemas-data/3.1/core/creative-policy.json +3 -3
  283. package/dist/lib/schemas-data/3.1/core/creative-variable.json +1 -1
  284. package/dist/lib/schemas-data/3.1/core/creative-variant.json +5 -5
  285. package/dist/lib/schemas-data/3.1/core/data-provider-signal-selector.json +1 -1
  286. package/dist/lib/schemas-data/3.1/core/date-range.json +1 -1
  287. package/dist/lib/schemas-data/3.1/core/datetime-range.json +1 -1
  288. package/dist/lib/schemas-data/3.1/core/daypart-target.json +2 -2
  289. package/dist/lib/schemas-data/3.1/core/deadline-policy.json +1 -1
  290. package/dist/lib/schemas-data/3.1/core/delivery-forecast.json +7 -7
  291. package/dist/lib/schemas-data/3.1/core/delivery-metric-aggregate.json +9 -9
  292. package/dist/lib/schemas-data/3.1/core/delivery-metrics.json +8 -8
  293. package/dist/lib/schemas-data/3.1/core/deployment.json +3 -3
  294. package/dist/lib/schemas-data/3.1/core/destination-item.json +4 -4
  295. package/dist/lib/schemas-data/3.1/core/destination.json +1 -1
  296. package/dist/lib/schemas-data/3.1/core/diagnostic-issue.json +1 -1
  297. package/dist/lib/schemas-data/3.1/core/downstream-connection-requirement.json +1 -1
  298. package/dist/lib/schemas-data/3.1/core/duration.json +1 -1
  299. package/dist/lib/schemas-data/3.1/core/education-item.json +4 -4
  300. package/dist/lib/schemas-data/3.1/core/error.json +1 -1
  301. package/dist/lib/schemas-data/3.1/core/evaluator-spec.json +5 -5
  302. package/dist/lib/schemas-data/3.1/core/event-custom-data.json +2 -2
  303. package/dist/lib/schemas-data/3.1/core/event-source-health.json +3 -3
  304. package/dist/lib/schemas-data/3.1/core/event-surface.json +2 -2
  305. package/dist/lib/schemas-data/3.1/core/event.json +8 -8
  306. package/dist/lib/schemas-data/3.1/core/ext.json +1 -1
  307. package/dist/lib/schemas-data/3.1/core/feature-requirement.json +1 -1
  308. package/dist/lib/schemas-data/3.1/core/flight-item.json +4 -4
  309. package/dist/lib/schemas-data/3.1/core/forecast-dimension-audience.json +2 -2
  310. package/dist/lib/schemas-data/3.1/core/forecast-dimension-device-platform.json +2 -2
  311. package/dist/lib/schemas-data/3.1/core/forecast-dimension-device-type.json +2 -2
  312. package/dist/lib/schemas-data/3.1/core/forecast-dimension-geo.json +5 -5
  313. package/dist/lib/schemas-data/3.1/core/forecast-dimension-placement.json +2 -2
  314. package/dist/lib/schemas-data/3.1/core/forecast-dimension-signal.json +2 -2
  315. package/dist/lib/schemas-data/3.1/core/forecast-point-dimensions.json +7 -7
  316. package/dist/lib/schemas-data/3.1/core/forecast-point.json +27 -27
  317. package/dist/lib/schemas-data/3.1/core/forecast-range.json +1 -1
  318. package/dist/lib/schemas-data/3.1/core/forecast-vendor-metric-value.json +5 -5
  319. package/dist/lib/schemas-data/3.1/core/format-id.json +1 -1
  320. package/dist/lib/schemas-data/3.1/core/format-option-ref.json +1 -1
  321. package/dist/lib/schemas-data/3.1/core/format-shape-vocabulary.json +1 -1
  322. package/dist/lib/schemas-data/3.1/core/format.json +45 -45
  323. package/dist/lib/schemas-data/3.1/core/frequency-cap.json +4 -4
  324. package/dist/lib/schemas-data/3.1/core/generation-credential.json +3 -3
  325. package/dist/lib/schemas-data/3.1/core/geo-breakdown-support.json +3 -3
  326. package/dist/lib/schemas-data/3.1/core/geo-delivery-metrics.json +6 -6
  327. package/dist/lib/schemas-data/3.1/core/hotel-item.json +4 -4
  328. package/dist/lib/schemas-data/3.1/core/identifier.json +2 -2
  329. package/dist/lib/schemas-data/3.1/core/impairment.json +3 -3
  330. package/dist/lib/schemas-data/3.1/core/industry-identifier.json +2 -2
  331. package/dist/lib/schemas-data/3.1/core/insertion-order.json +1 -1
  332. package/dist/lib/schemas-data/3.1/core/installment-deadlines.json +2 -2
  333. package/dist/lib/schemas-data/3.1/core/installment.json +9 -9
  334. package/dist/lib/schemas-data/3.1/core/job-item.json +3 -3
  335. package/dist/lib/schemas-data/3.1/core/keyword-delivery-metrics.json +3 -3
  336. package/dist/lib/schemas-data/3.1/core/limited-series.json +1 -1
  337. package/dist/lib/schemas-data/3.1/core/macro-bearing-url.json +1 -1
  338. package/dist/lib/schemas-data/3.1/core/material-deadline.json +1 -1
  339. package/dist/lib/schemas-data/3.1/core/mcp-webhook-payload.json +5 -5
  340. package/dist/lib/schemas-data/3.1/core/measurement-readiness.json +5 -5
  341. package/dist/lib/schemas-data/3.1/core/measurement-terms.json +3 -3
  342. package/dist/lib/schemas-data/3.1/core/measurement-window.json +1 -1
  343. package/dist/lib/schemas-data/3.1/core/media-buy-available-action.json +4 -4
  344. package/dist/lib/schemas-data/3.1/core/media-buy-features.json +1 -1
  345. package/dist/lib/schemas-data/3.1/core/media-buy.json +10 -10
  346. package/dist/lib/schemas-data/3.1/core/missing-metric.json +9 -9
  347. package/dist/lib/schemas-data/3.1/core/notification-config.json +4 -4
  348. package/dist/lib/schemas-data/3.1/core/offering-asset-group.json +16 -16
  349. package/dist/lib/schemas-data/3.1/core/offering.json +5 -5
  350. package/dist/lib/schemas-data/3.1/core/optimization-goal.json +7 -7
  351. package/dist/lib/schemas-data/3.1/core/outcome-measurement.json +2 -2
  352. package/dist/lib/schemas-data/3.1/core/overlay.json +1 -1
  353. package/dist/lib/schemas-data/3.1/core/package-signal-targeting-group.json +2 -2
  354. package/dist/lib/schemas-data/3.1/core/package-signal-targeting-groups.json +2 -2
  355. package/dist/lib/schemas-data/3.1/core/package-signal-targeting.json +3 -3
  356. package/dist/lib/schemas-data/3.1/core/package.json +17 -17
  357. package/dist/lib/schemas-data/3.1/core/pagination-request.json +1 -1
  358. package/dist/lib/schemas-data/3.1/core/pagination-response.json +1 -1
  359. package/dist/lib/schemas-data/3.1/core/performance-feedback.json +12 -12
  360. package/dist/lib/schemas-data/3.1/core/performance-standard.json +4 -4
  361. package/dist/lib/schemas-data/3.1/core/placement-definition.json +10 -10
  362. package/dist/lib/schemas-data/3.1/core/placement-ref.json +1 -1
  363. package/dist/lib/schemas-data/3.1/core/placement.json +7 -7
  364. package/dist/lib/schemas-data/3.1/core/planned-delivery.json +5 -5
  365. package/dist/lib/schemas-data/3.1/core/platform-extension-ref.json +1 -1
  366. package/dist/lib/schemas-data/3.1/core/postal-area-support.json +2 -2
  367. package/dist/lib/schemas-data/3.1/core/postal-area.json +4 -4
  368. package/dist/lib/schemas-data/3.1/core/postal-country-system.json +2 -2
  369. package/dist/lib/schemas-data/3.1/core/price.json +1 -1
  370. package/dist/lib/schemas-data/3.1/core/pricing-option.json +10 -10
  371. package/dist/lib/schemas-data/3.1/core/product-allocation.json +4 -4
  372. package/dist/lib/schemas-data/3.1/core/product-allowed-action.json +5 -5
  373. package/dist/lib/schemas-data/3.1/core/product-filters.json +27 -27
  374. package/dist/lib/schemas-data/3.1/core/product-format-declaration.json +16 -16
  375. package/dist/lib/schemas-data/3.1/core/product-signal-targeting-option.json +3 -3
  376. package/dist/lib/schemas-data/3.1/core/product.json +40 -40
  377. package/dist/lib/schemas-data/3.1/core/property-id.json +1 -1
  378. package/dist/lib/schemas-data/3.1/core/property-list-ref.json +1 -1
  379. package/dist/lib/schemas-data/3.1/core/property-tag.json +1 -1
  380. package/dist/lib/schemas-data/3.1/core/property.json +6 -6
  381. package/dist/lib/schemas-data/3.1/core/proposal.json +6 -6
  382. package/dist/lib/schemas-data/3.1/core/protocol-envelope.json +5 -5
  383. package/dist/lib/schemas-data/3.1/core/provenance.json +9 -9
  384. package/dist/lib/schemas-data/3.1/core/publisher-property-selector.json +3 -3
  385. package/dist/lib/schemas-data/3.1/core/push-notification-config.json +2 -2
  386. package/dist/lib/schemas-data/3.1/core/real-estate-item.json +4 -4
  387. package/dist/lib/schemas-data/3.1/core/reference-asset.json +1 -1
  388. package/dist/lib/schemas-data/3.1/core/registry-event.json +14 -14
  389. package/dist/lib/schemas-data/3.1/core/registry-feed-response.json +2 -2
  390. package/dist/lib/schemas-data/3.1/core/reporting-capabilities.json +8 -8
  391. package/dist/lib/schemas-data/3.1/core/reporting-webhook.json +3 -3
  392. package/dist/lib/schemas-data/3.1/core/requirements/asset-requirements.json +13 -13
  393. package/dist/lib/schemas-data/3.1/core/requirements/audio-asset-requirements.json +1 -1
  394. package/dist/lib/schemas-data/3.1/core/requirements/catalog-field-binding.json +4 -4
  395. package/dist/lib/schemas-data/3.1/core/requirements/catalog-requirements.json +5 -5
  396. package/dist/lib/schemas-data/3.1/core/requirements/css-asset-requirements.json +1 -1
  397. package/dist/lib/schemas-data/3.1/core/requirements/daast-asset-requirements.json +1 -1
  398. package/dist/lib/schemas-data/3.1/core/requirements/html-asset-requirements.json +1 -1
  399. package/dist/lib/schemas-data/3.1/core/requirements/image-asset-requirements.json +2 -2
  400. package/dist/lib/schemas-data/3.1/core/requirements/javascript-asset-requirements.json +1 -1
  401. package/dist/lib/schemas-data/3.1/core/requirements/markdown-asset-requirements.json +1 -1
  402. package/dist/lib/schemas-data/3.1/core/requirements/offering-asset-constraint.json +4 -4
  403. package/dist/lib/schemas-data/3.1/core/requirements/text-asset-requirements.json +1 -1
  404. package/dist/lib/schemas-data/3.1/core/requirements/url-asset-requirements.json +1 -1
  405. package/dist/lib/schemas-data/3.1/core/requirements/vast-asset-requirements.json +1 -1
  406. package/dist/lib/schemas-data/3.1/core/requirements/video-asset-requirements.json +6 -6
  407. package/dist/lib/schemas-data/3.1/core/requirements/webhook-asset-requirements.json +1 -1
  408. package/dist/lib/schemas-data/3.1/core/response-payload-jws-envelope.json +1 -1
  409. package/dist/lib/schemas-data/3.1/core/response.json +1 -1
  410. package/dist/lib/schemas-data/3.1/core/rights-constraint.json +4 -4
  411. package/dist/lib/schemas-data/3.1/core/seller-agent-ref.json +1 -1
  412. package/dist/lib/schemas-data/3.1/core/signal-coverage-forecast.json +5 -5
  413. package/dist/lib/schemas-data/3.1/core/signal-definition-enrichment.json +4 -4
  414. package/dist/lib/schemas-data/3.1/core/signal-definition.json +5 -5
  415. package/dist/lib/schemas-data/3.1/core/signal-filters.json +3 -3
  416. package/dist/lib/schemas-data/3.1/core/signal-id.json +1 -1
  417. package/dist/lib/schemas-data/3.1/core/signal-listing.json +4 -4
  418. package/dist/lib/schemas-data/3.1/core/signal-modeling-disclosure.json +1 -1
  419. package/dist/lib/schemas-data/3.1/core/signal-pricing-option.json +2 -2
  420. package/dist/lib/schemas-data/3.1/core/signal-pricing.json +6 -6
  421. package/dist/lib/schemas-data/3.1/core/signal-ref.json +1 -1
  422. package/dist/lib/schemas-data/3.1/core/signal-selection-group-rule.json +1 -1
  423. package/dist/lib/schemas-data/3.1/core/signal-targeting-expression.json +4 -4
  424. package/dist/lib/schemas-data/3.1/core/signal-targeting-rules.json +2 -2
  425. package/dist/lib/schemas-data/3.1/core/signal-targeting.json +7 -7
  426. package/dist/lib/schemas-data/3.1/core/sla-window.json +1 -1
  427. package/dist/lib/schemas-data/3.1/core/special.json +2 -2
  428. package/dist/lib/schemas-data/3.1/core/start-timing.json +1 -1
  429. package/dist/lib/schemas-data/3.1/core/store-item.json +3 -3
  430. package/dist/lib/schemas-data/3.1/core/talent.json +2 -2
  431. package/dist/lib/schemas-data/3.1/core/targeting.json +22 -22
  432. package/dist/lib/schemas-data/3.1/core/tasks-get-request.json +5 -5
  433. package/dist/lib/schemas-data/3.1/core/tasks-get-response.json +10 -10
  434. package/dist/lib/schemas-data/3.1/core/tasks-list-request.json +13 -13
  435. package/dist/lib/schemas-data/3.1/core/tasks-list-response.json +8 -8
  436. package/dist/lib/schemas-data/3.1/core/transformer-param.json +1 -1
  437. package/dist/lib/schemas-data/3.1/core/transformer.json +5 -5
  438. package/dist/lib/schemas-data/3.1/core/truncation-sentinel.json +1 -1
  439. package/dist/lib/schemas-data/3.1/core/user-match.json +3 -3
  440. package/dist/lib/schemas-data/3.1/core/vehicle-item.json +4 -4
  441. package/dist/lib/schemas-data/3.1/core/vendor-metric-id.json +1 -1
  442. package/dist/lib/schemas-data/3.1/core/vendor-metric-optimization-supported-metric.json +3 -3
  443. package/dist/lib/schemas-data/3.1/core/vendor-metric-optimization.json +2 -2
  444. package/dist/lib/schemas-data/3.1/core/vendor-metric-value.json +3 -3
  445. package/dist/lib/schemas-data/3.1/core/vendor-pricing-option.json +3 -3
  446. package/dist/lib/schemas-data/3.1/core/version-envelope.json +1 -1
  447. package/dist/lib/schemas-data/3.1/core/webhook-activity-record.json +3 -3
  448. package/dist/lib/schemas-data/3.1/core/webhook-challenge-response.json +1 -1
  449. package/dist/lib/schemas-data/3.1/core/webhook-challenge.json +2 -2
  450. package/dist/lib/schemas-data/3.1/core/wholesale-feed-event.json +17 -17
  451. package/dist/lib/schemas-data/3.1/core/wholesale-feed-webhook.json +3 -3
  452. package/dist/lib/schemas-data/3.1/core/x-entity-types.json +1 -1
  453. package/dist/lib/schemas-data/3.1/creative/asset-types/index.json +6 -6
  454. package/dist/lib/schemas-data/3.1/creative/audit-observation.json +2 -2
  455. package/dist/lib/schemas-data/3.1/creative/creative-feature-result.json +2 -2
  456. package/dist/lib/schemas-data/3.1/creative/creative-purged-webhook.json +3 -3
  457. package/dist/lib/schemas-data/3.1/creative/creative-status-changed-webhook.json +4 -4
  458. package/dist/lib/schemas-data/3.1/creative/get-creative-delivery-request.json +6 -6
  459. package/dist/lib/schemas-data/3.1/creative/get-creative-delivery-response.json +9 -9
  460. package/dist/lib/schemas-data/3.1/creative/get-creative-features-request.json +6 -6
  461. package/dist/lib/schemas-data/3.1/creative/get-creative-features-response.json +11 -11
  462. package/dist/lib/schemas-data/3.1/creative/list-creative-formats-request.json +13 -13
  463. package/dist/lib/schemas-data/3.1/creative/list-creative-formats-response.json +9 -9
  464. package/dist/lib/schemas-data/3.1/creative/list-creatives-request.json +9 -9
  465. package/dist/lib/schemas-data/3.1/creative/list-creatives-response.json +21 -21
  466. package/dist/lib/schemas-data/3.1/creative/list-transformers-request.json +8 -8
  467. package/dist/lib/schemas-data/3.1/creative/list-transformers-response.json +8 -8
  468. package/dist/lib/schemas-data/3.1/creative/preview-creative-request.json +12 -12
  469. package/dist/lib/schemas-data/3.1/creative/preview-creative-response.json +14 -14
  470. package/dist/lib/schemas-data/3.1/creative/preview-render.json +1 -1
  471. package/dist/lib/schemas-data/3.1/creative/sync-creatives-async-response-input-required.json +3 -3
  472. package/dist/lib/schemas-data/3.1/creative/sync-creatives-async-response-submitted.json +4 -4
  473. package/dist/lib/schemas-data/3.1/creative/sync-creatives-async-response-working.json +3 -3
  474. package/dist/lib/schemas-data/3.1/creative/sync-creatives-request.json +8 -8
  475. package/dist/lib/schemas-data/3.1/creative/sync-creatives-response.json +15 -15
  476. package/dist/lib/schemas-data/3.1/creative/validate-input-request.json +4 -4
  477. package/dist/lib/schemas-data/3.1/creative/validate-input-response.json +4 -4
  478. package/dist/lib/schemas-data/3.1/creative/validate-input-result.json +1 -1
  479. package/dist/lib/schemas-data/3.1/creative/video-brief.json +1 -1
  480. package/dist/lib/schemas-data/3.1/enums/account-scope.json +1 -1
  481. package/dist/lib/schemas-data/3.1/enums/account-status.json +1 -1
  482. package/dist/lib/schemas-data/3.1/enums/action-not-allowed-reason.json +1 -1
  483. package/dist/lib/schemas-data/3.1/enums/action-source.json +1 -1
  484. package/dist/lib/schemas-data/3.1/enums/adcp-protocol.json +1 -1
  485. package/dist/lib/schemas-data/3.1/enums/adjustment-kind.json +1 -1
  486. package/dist/lib/schemas-data/3.1/enums/advertiser-industry.json +1 -1
  487. package/dist/lib/schemas-data/3.1/enums/age-verification-method.json +1 -1
  488. package/dist/lib/schemas-data/3.1/enums/assessment-status.json +1 -1
  489. package/dist/lib/schemas-data/3.1/enums/asset-content-type.json +1 -1
  490. package/dist/lib/schemas-data/3.1/enums/attestation-claim.json +1 -1
  491. package/dist/lib/schemas-data/3.1/enums/attribution-methodology.json +1 -1
  492. package/dist/lib/schemas-data/3.1/enums/attribution-model.json +1 -1
  493. package/dist/lib/schemas-data/3.1/enums/audience-source.json +1 -1
  494. package/dist/lib/schemas-data/3.1/enums/audience-status.json +1 -1
  495. package/dist/lib/schemas-data/3.1/enums/audio-channel-layout.json +1 -1
  496. package/dist/lib/schemas-data/3.1/enums/audio-distribution-type.json +1 -1
  497. package/dist/lib/schemas-data/3.1/enums/auth-scheme.json +1 -1
  498. package/dist/lib/schemas-data/3.1/enums/available-metric.json +1 -1
  499. package/dist/lib/schemas-data/3.1/enums/billing-party.json +1 -1
  500. package/dist/lib/schemas-data/3.1/enums/binary-verdict.json +1 -1
  501. package/dist/lib/schemas-data/3.1/enums/brand-agent-type.json +1 -1
  502. package/dist/lib/schemas-data/3.1/enums/c2pa-watermark-action.json +1 -1
  503. package/dist/lib/schemas-data/3.1/enums/canceled-by.json +1 -1
  504. package/dist/lib/schemas-data/3.1/enums/catalog-action.json +1 -1
  505. package/dist/lib/schemas-data/3.1/enums/catalog-item-status.json +1 -1
  506. package/dist/lib/schemas-data/3.1/enums/catalog-type.json +1 -1
  507. package/dist/lib/schemas-data/3.1/enums/channels.json +1 -1
  508. package/dist/lib/schemas-data/3.1/enums/cloud-storage-protocol.json +1 -1
  509. package/dist/lib/schemas-data/3.1/enums/co-branding-requirement.json +1 -1
  510. package/dist/lib/schemas-data/3.1/enums/collection-cadence.json +1 -1
  511. package/dist/lib/schemas-data/3.1/enums/collection-kind.json +1 -1
  512. package/dist/lib/schemas-data/3.1/enums/collection-relationship.json +1 -1
  513. package/dist/lib/schemas-data/3.1/enums/collection-status.json +1 -1
  514. package/dist/lib/schemas-data/3.1/enums/completion-source.json +1 -1
  515. package/dist/lib/schemas-data/3.1/enums/consent-basis.json +1 -1
  516. package/dist/lib/schemas-data/3.1/enums/content-id-type.json +1 -1
  517. package/dist/lib/schemas-data/3.1/enums/content-rating-system.json +1 -1
  518. package/dist/lib/schemas-data/3.1/enums/creative-action.json +1 -1
  519. package/dist/lib/schemas-data/3.1/enums/creative-agent-capability.json +1 -1
  520. package/dist/lib/schemas-data/3.1/enums/creative-approval-status.json +1 -1
  521. package/dist/lib/schemas-data/3.1/enums/creative-event-reason-code.json +1 -1
  522. package/dist/lib/schemas-data/3.1/enums/creative-identifier-type.json +1 -1
  523. package/dist/lib/schemas-data/3.1/enums/creative-quality.json +1 -1
  524. package/dist/lib/schemas-data/3.1/enums/creative-selection-strategy.json +1 -1
  525. package/dist/lib/schemas-data/3.1/enums/creative-sort-field.json +1 -1
  526. package/dist/lib/schemas-data/3.1/enums/creative-status.json +1 -1
  527. package/dist/lib/schemas-data/3.1/enums/daast-tracking-event.json +1 -1
  528. package/dist/lib/schemas-data/3.1/enums/daast-version.json +1 -1
  529. package/dist/lib/schemas-data/3.1/enums/day-of-week.json +1 -1
  530. package/dist/lib/schemas-data/3.1/enums/delegation-authority.json +1 -1
  531. package/dist/lib/schemas-data/3.1/enums/delivery-type.json +1 -1
  532. package/dist/lib/schemas-data/3.1/enums/demographic-system.json +1 -1
  533. package/dist/lib/schemas-data/3.1/enums/derivative-type.json +1 -1
  534. package/dist/lib/schemas-data/3.1/enums/device-platform.json +1 -1
  535. package/dist/lib/schemas-data/3.1/enums/device-type.json +1 -1
  536. package/dist/lib/schemas-data/3.1/enums/digital-source-type.json +1 -1
  537. package/dist/lib/schemas-data/3.1/enums/dimension-unit.json +1 -1
  538. package/dist/lib/schemas-data/3.1/enums/disclosure-persistence.json +1 -1
  539. package/dist/lib/schemas-data/3.1/enums/disclosure-position.json +1 -1
  540. package/dist/lib/schemas-data/3.1/enums/distance-unit.json +1 -1
  541. package/dist/lib/schemas-data/3.1/enums/distribution-identifier-type.json +1 -1
  542. package/dist/lib/schemas-data/3.1/enums/embedded-provenance-method.json +1 -1
  543. package/dist/lib/schemas-data/3.1/enums/error-code.json +1 -1
  544. package/dist/lib/schemas-data/3.1/enums/error-scope.json +1 -1
  545. package/dist/lib/schemas-data/3.1/enums/escalation-severity.json +1 -1
  546. package/dist/lib/schemas-data/3.1/enums/event-type.json +1 -1
  547. package/dist/lib/schemas-data/3.1/enums/exclusivity.json +1 -1
  548. package/dist/lib/schemas-data/3.1/enums/feature-check-status.json +1 -1
  549. package/dist/lib/schemas-data/3.1/enums/feed-format.json +1 -1
  550. package/dist/lib/schemas-data/3.1/enums/feedback-source.json +1 -1
  551. package/dist/lib/schemas-data/3.1/enums/forecast-method.json +1 -1
  552. package/dist/lib/schemas-data/3.1/enums/forecast-range-unit.json +1 -1
  553. package/dist/lib/schemas-data/3.1/enums/forecastable-metric.json +1 -1
  554. package/dist/lib/schemas-data/3.1/enums/format-id-parameter.json +1 -1
  555. package/dist/lib/schemas-data/3.1/enums/frame-rate-type.json +1 -1
  556. package/dist/lib/schemas-data/3.1/enums/frequency-cap-scope.json +1 -1
  557. package/dist/lib/schemas-data/3.1/enums/genre-taxonomy.json +1 -1
  558. package/dist/lib/schemas-data/3.1/enums/geo-level.json +1 -1
  559. package/dist/lib/schemas-data/3.1/enums/gop-type.json +1 -1
  560. package/dist/lib/schemas-data/3.1/enums/governance-decision.json +1 -1
  561. package/dist/lib/schemas-data/3.1/enums/governance-domain.json +1 -1
  562. package/dist/lib/schemas-data/3.1/enums/governance-mode.json +1 -1
  563. package/dist/lib/schemas-data/3.1/enums/governance-phase.json +1 -1
  564. package/dist/lib/schemas-data/3.1/enums/history-entry-type.json +1 -1
  565. package/dist/lib/schemas-data/3.1/enums/http-method.json +1 -1
  566. package/dist/lib/schemas-data/3.1/enums/identifier-types.json +1 -1
  567. package/dist/lib/schemas-data/3.1/enums/impairment-offline-state.json +1 -1
  568. package/dist/lib/schemas-data/3.1/enums/impairment-reason-code.json +1 -1
  569. package/dist/lib/schemas-data/3.1/enums/installment-status.json +1 -1
  570. package/dist/lib/schemas-data/3.1/enums/javascript-module-type.json +1 -1
  571. package/dist/lib/schemas-data/3.1/enums/landing-page-requirement.json +1 -1
  572. package/dist/lib/schemas-data/3.1/enums/legacy-postal-system.json +1 -1
  573. package/dist/lib/schemas-data/3.1/enums/lift-dimension.json +1 -1
  574. package/dist/lib/schemas-data/3.1/enums/logo-slot.json +1 -1
  575. package/dist/lib/schemas-data/3.1/enums/makegood-remedy.json +1 -1
  576. package/dist/lib/schemas-data/3.1/enums/markdown-flavor.json +1 -1
  577. package/dist/lib/schemas-data/3.1/enums/match-id-type.json +1 -1
  578. package/dist/lib/schemas-data/3.1/enums/match-type.json +1 -1
  579. package/dist/lib/schemas-data/3.1/enums/media-buy-action-mode.json +1 -1
  580. package/dist/lib/schemas-data/3.1/enums/media-buy-health.json +1 -1
  581. package/dist/lib/schemas-data/3.1/enums/media-buy-status.json +1 -1
  582. package/dist/lib/schemas-data/3.1/enums/media-buy-valid-action.json +1 -1
  583. package/dist/lib/schemas-data/3.1/enums/metric-scope.json +1 -1
  584. package/dist/lib/schemas-data/3.1/enums/metric-type.json +1 -1
  585. package/dist/lib/schemas-data/3.1/enums/metro-system.json +1 -1
  586. package/dist/lib/schemas-data/3.1/enums/moov-atom-position.json +1 -1
  587. package/dist/lib/schemas-data/3.1/enums/notification-type.json +1 -1
  588. package/dist/lib/schemas-data/3.1/enums/offering-availability-status.json +1 -1
  589. package/dist/lib/schemas-data/3.1/enums/outcome-type.json +1 -1
  590. package/dist/lib/schemas-data/3.1/enums/pacing.json +1 -1
  591. package/dist/lib/schemas-data/3.1/enums/payment-terms.json +1 -1
  592. package/dist/lib/schemas-data/3.1/enums/performance-standard-metric.json +1 -1
  593. package/dist/lib/schemas-data/3.1/enums/policy-category.json +1 -1
  594. package/dist/lib/schemas-data/3.1/enums/policy-enforcement.json +1 -1
  595. package/dist/lib/schemas-data/3.1/enums/postal-system.json +1 -1
  596. package/dist/lib/schemas-data/3.1/enums/preview-output-format.json +1 -1
  597. package/dist/lib/schemas-data/3.1/enums/pricing-model.json +1 -1
  598. package/dist/lib/schemas-data/3.1/enums/production-quality.json +1 -1
  599. package/dist/lib/schemas-data/3.1/enums/property-type.json +1 -1
  600. package/dist/lib/schemas-data/3.1/enums/proposal-status.json +1 -1
  601. package/dist/lib/schemas-data/3.1/enums/publisher-identifier-types.json +1 -1
  602. package/dist/lib/schemas-data/3.1/enums/purchase-type.json +1 -1
  603. package/dist/lib/schemas-data/3.1/enums/reach-unit.json +1 -1
  604. package/dist/lib/schemas-data/3.1/enums/reporting-frequency.json +1 -1
  605. package/dist/lib/schemas-data/3.1/enums/response-type.json +1 -1
  606. package/dist/lib/schemas-data/3.1/enums/restricted-attribute.json +1 -1
  607. package/dist/lib/schemas-data/3.1/enums/right-type.json +1 -1
  608. package/dist/lib/schemas-data/3.1/enums/right-use.json +1 -1
  609. package/dist/lib/schemas-data/3.1/enums/rights-billing-period.json +1 -1
  610. package/dist/lib/schemas-data/3.1/enums/scan-type.json +1 -1
  611. package/dist/lib/schemas-data/3.1/enums/si-session-status.json +1 -1
  612. package/dist/lib/schemas-data/3.1/enums/signal-catalog-type.json +1 -1
  613. package/dist/lib/schemas-data/3.1/enums/signal-source.json +1 -1
  614. package/dist/lib/schemas-data/3.1/enums/signal-value-type.json +1 -1
  615. package/dist/lib/schemas-data/3.1/enums/snapshot-unavailable-reason.json +1 -1
  616. package/dist/lib/schemas-data/3.1/enums/social-placement-surface.json +1 -1
  617. package/dist/lib/schemas-data/3.1/enums/sort-direction.json +1 -1
  618. package/dist/lib/schemas-data/3.1/enums/sort-metric.json +1 -1
  619. package/dist/lib/schemas-data/3.1/enums/special-category.json +1 -1
  620. package/dist/lib/schemas-data/3.1/enums/specialism.json +1 -1
  621. package/dist/lib/schemas-data/3.1/enums/sponsored-placement-type.json +1 -1
  622. package/dist/lib/schemas-data/3.1/enums/talent-role.json +1 -1
  623. package/dist/lib/schemas-data/3.1/enums/task-status.json +1 -1
  624. package/dist/lib/schemas-data/3.1/enums/task-type.json +1 -1
  625. package/dist/lib/schemas-data/3.1/enums/transport-mode.json +1 -1
  626. package/dist/lib/schemas-data/3.1/enums/travel-time-unit.json +1 -1
  627. package/dist/lib/schemas-data/3.1/enums/uid-type.json +1 -1
  628. package/dist/lib/schemas-data/3.1/enums/universal-macro.json +1 -1
  629. package/dist/lib/schemas-data/3.1/enums/update-frequency.json +1 -1
  630. package/dist/lib/schemas-data/3.1/enums/url-asset-type.json +1 -1
  631. package/dist/lib/schemas-data/3.1/enums/validation-mode.json +1 -1
  632. package/dist/lib/schemas-data/3.1/enums/vast-tracking-event.json +1 -1
  633. package/dist/lib/schemas-data/3.1/enums/vast-version.json +1 -1
  634. package/dist/lib/schemas-data/3.1/enums/video-placement-type.json +1 -1
  635. package/dist/lib/schemas-data/3.1/enums/viewability-standard.json +1 -1
  636. package/dist/lib/schemas-data/3.1/enums/watermark-media-type.json +1 -1
  637. package/dist/lib/schemas-data/3.1/enums/wcag-level.json +1 -1
  638. package/dist/lib/schemas-data/3.1/enums/webhook-response-type.json +1 -1
  639. package/dist/lib/schemas-data/3.1/enums/webhook-security-method.json +1 -1
  640. package/dist/lib/schemas-data/3.1/error-details/account-setup-required.json +1 -1
  641. package/dist/lib/schemas-data/3.1/error-details/action-not-allowed.json +4 -4
  642. package/dist/lib/schemas-data/3.1/error-details/agent-permission-denied.json +1 -1
  643. package/dist/lib/schemas-data/3.1/error-details/audience-too-small.json +1 -1
  644. package/dist/lib/schemas-data/3.1/error-details/authorization-required.json +3 -3
  645. package/dist/lib/schemas-data/3.1/error-details/billing-not-permitted-for-agent.json +3 -3
  646. package/dist/lib/schemas-data/3.1/error-details/billing-not-supported.json +2 -2
  647. package/dist/lib/schemas-data/3.1/error-details/budget-too-low.json +1 -1
  648. package/dist/lib/schemas-data/3.1/error-details/conflict.json +1 -1
  649. package/dist/lib/schemas-data/3.1/error-details/creative-rejected.json +1 -1
  650. package/dist/lib/schemas-data/3.1/error-details/policy-violation.json +1 -1
  651. package/dist/lib/schemas-data/3.1/error-details/rate-limited.json +1 -1
  652. package/dist/lib/schemas-data/3.1/error-details/stale-response.json +1 -1
  653. package/dist/lib/schemas-data/3.1/error-details/vendor-error-codes.json +1 -1
  654. package/dist/lib/schemas-data/3.1/error-details/version-unsupported.json +2 -2
  655. package/dist/lib/schemas-data/3.1/extensions/extension-meta.json +1 -1
  656. package/dist/lib/schemas-data/3.1/extensions/index.json +2 -2
  657. package/dist/lib/schemas-data/3.1/formats/canonical/_base.json +5 -5
  658. package/dist/lib/schemas-data/3.1/formats/canonical/agent_placement.json +2 -2
  659. package/dist/lib/schemas-data/3.1/formats/canonical/audio_daast.json +2 -2
  660. package/dist/lib/schemas-data/3.1/formats/canonical/audio_hosted.json +2 -2
  661. package/dist/lib/schemas-data/3.1/formats/canonical/display_tag.json +2 -2
  662. package/dist/lib/schemas-data/3.1/formats/canonical/html5.json +2 -2
  663. package/dist/lib/schemas-data/3.1/formats/canonical/image.json +2 -2
  664. package/dist/lib/schemas-data/3.1/formats/canonical/image_carousel.json +2 -2
  665. package/dist/lib/schemas-data/3.1/formats/canonical/native_in_feed.json +2 -2
  666. package/dist/lib/schemas-data/3.1/formats/canonical/responsive_creative.json +2 -2
  667. package/dist/lib/schemas-data/3.1/formats/canonical/sponsored_placement.json +3 -3
  668. package/dist/lib/schemas-data/3.1/formats/canonical/video_hosted.json +2 -2
  669. package/dist/lib/schemas-data/3.1/formats/canonical/video_vast.json +2 -2
  670. package/dist/lib/schemas-data/3.1/governance/attribute-definition.json +1 -1
  671. package/dist/lib/schemas-data/3.1/governance/audience-constraints.json +3 -3
  672. package/dist/lib/schemas-data/3.1/governance/check-governance-request.json +8 -8
  673. package/dist/lib/schemas-data/3.1/governance/check-governance-response.json +7 -7
  674. package/dist/lib/schemas-data/3.1/governance/get-plan-audit-logs-request.json +5 -5
  675. package/dist/lib/schemas-data/3.1/governance/get-plan-audit-logs-response.json +11 -11
  676. package/dist/lib/schemas-data/3.1/governance/policy-category-definition.json +2 -2
  677. package/dist/lib/schemas-data/3.1/governance/policy-entry.json +6 -6
  678. package/dist/lib/schemas-data/3.1/governance/policy-ref.json +1 -1
  679. package/dist/lib/schemas-data/3.1/governance/report-plan-outcome-request.json +7 -7
  680. package/dist/lib/schemas-data/3.1/governance/report-plan-outcome-response.json +5 -5
  681. package/dist/lib/schemas-data/3.1/governance/sync-plans-request.json +14 -14
  682. package/dist/lib/schemas-data/3.1/governance/sync-plans-response.json +6 -6
  683. package/dist/lib/schemas-data/3.1/index.json +443 -443
  684. package/dist/lib/schemas-data/3.1/manifest.json +3 -3
  685. package/dist/lib/schemas-data/3.1/manifest.schema.json +1 -1
  686. package/dist/lib/schemas-data/3.1/media-buy/build-creative-async-response-input-required.json +4 -4
  687. package/dist/lib/schemas-data/3.1/media-buy/build-creative-async-response-submitted.json +4 -4
  688. package/dist/lib/schemas-data/3.1/media-buy/build-creative-async-response-working.json +3 -3
  689. package/dist/lib/schemas-data/3.1/media-buy/build-creative-request.json +16 -16
  690. package/dist/lib/schemas-data/3.1/media-buy/build-creative-response.json +35 -35
  691. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-async-response-input-required.json +4 -4
  692. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-async-response-submitted.json +4 -4
  693. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-async-response-working.json +3 -3
  694. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-request.json +13 -13
  695. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-response.json +19 -19
  696. package/dist/lib/schemas-data/3.1/media-buy/get-media-buy-delivery-request.json +23 -23
  697. package/dist/lib/schemas-data/3.1/media-buy/get-media-buy-delivery-response.json +27 -27
  698. package/dist/lib/schemas-data/3.1/media-buy/get-media-buys-request.json +8 -8
  699. package/dist/lib/schemas-data/3.1/media-buy/get-media-buys-response.json +30 -30
  700. package/dist/lib/schemas-data/3.1/media-buy/get-products-async-response-input-required.json +4 -4
  701. package/dist/lib/schemas-data/3.1/media-buy/get-products-async-response-submitted.json +4 -4
  702. package/dist/lib/schemas-data/3.1/media-buy/get-products-async-response-working.json +3 -3
  703. package/dist/lib/schemas-data/3.1/media-buy/get-products-request.json +13 -13
  704. package/dist/lib/schemas-data/3.1/media-buy/get-products-response.json +10 -10
  705. package/dist/lib/schemas-data/3.1/media-buy/list-creative-formats-request.json +13 -13
  706. package/dist/lib/schemas-data/3.1/media-buy/list-creative-formats-response.json +9 -9
  707. package/dist/lib/schemas-data/3.1/media-buy/log-event-request.json +5 -5
  708. package/dist/lib/schemas-data/3.1/media-buy/log-event-response.json +8 -8
  709. package/dist/lib/schemas-data/3.1/media-buy/media-buy-delivery-webhook-result.json +9 -9
  710. package/dist/lib/schemas-data/3.1/media-buy/package-request.json +23 -23
  711. package/dist/lib/schemas-data/3.1/media-buy/package-update.json +13 -13
  712. package/dist/lib/schemas-data/3.1/media-buy/provide-performance-feedback-request.json +7 -7
  713. package/dist/lib/schemas-data/3.1/media-buy/provide-performance-feedback-response.json +8 -8
  714. package/dist/lib/schemas-data/3.1/media-buy/sync-audiences-request.json +8 -8
  715. package/dist/lib/schemas-data/3.1/media-buy/sync-audiences-response.json +14 -14
  716. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-async-response-input-required.json +3 -3
  717. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-async-response-submitted.json +4 -4
  718. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-async-response-working.json +3 -3
  719. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-request.json +8 -8
  720. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-response.json +14 -14
  721. package/dist/lib/schemas-data/3.1/media-buy/sync-event-sources-request.json +8 -8
  722. package/dist/lib/schemas-data/3.1/media-buy/sync-event-sources-response.json +14 -14
  723. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-async-response-input-required.json +3 -3
  724. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-async-response-submitted.json +4 -4
  725. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-async-response-working.json +3 -3
  726. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-request.json +11 -11
  727. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-response.json +17 -17
  728. package/dist/lib/schemas-data/3.1/pricing-options/cpa-option.json +4 -4
  729. package/dist/lib/schemas-data/3.1/pricing-options/cpc-option.json +4 -4
  730. package/dist/lib/schemas-data/3.1/pricing-options/cpcv-option.json +4 -4
  731. package/dist/lib/schemas-data/3.1/pricing-options/cpm-option.json +4 -4
  732. package/dist/lib/schemas-data/3.1/pricing-options/cpp-option.json +5 -5
  733. package/dist/lib/schemas-data/3.1/pricing-options/cpv-option.json +4 -4
  734. package/dist/lib/schemas-data/3.1/pricing-options/flat-rate-option.json +4 -4
  735. package/dist/lib/schemas-data/3.1/pricing-options/price-breakdown.json +2 -2
  736. package/dist/lib/schemas-data/3.1/pricing-options/price-guidance.json +1 -1
  737. package/dist/lib/schemas-data/3.1/pricing-options/time-option.json +4 -4
  738. package/dist/lib/schemas-data/3.1/pricing-options/vcpm-option.json +4 -4
  739. package/dist/lib/schemas-data/3.1/property/authorization-result.json +1 -1
  740. package/dist/lib/schemas-data/3.1/property/base-property-source.json +4 -4
  741. package/dist/lib/schemas-data/3.1/property/create-property-list-request.json +8 -8
  742. package/dist/lib/schemas-data/3.1/property/create-property-list-response.json +6 -6
  743. package/dist/lib/schemas-data/3.1/property/delete-property-list-request.json +5 -5
  744. package/dist/lib/schemas-data/3.1/property/delete-property-list-response.json +5 -5
  745. package/dist/lib/schemas-data/3.1/property/delivery-record.json +3 -3
  746. package/dist/lib/schemas-data/3.1/property/get-property-list-request.json +5 -5
  747. package/dist/lib/schemas-data/3.1/property/get-property-list-response.json +9 -9
  748. package/dist/lib/schemas-data/3.1/property/list-property-lists-request.json +6 -6
  749. package/dist/lib/schemas-data/3.1/property/list-property-lists-response.json +7 -7
  750. package/dist/lib/schemas-data/3.1/property/property-error.json +2 -2
  751. package/dist/lib/schemas-data/3.1/property/property-feature-definition.json +2 -2
  752. package/dist/lib/schemas-data/3.1/property/property-feature-result.json +4 -4
  753. package/dist/lib/schemas-data/3.1/property/property-feature-value.json +2 -2
  754. package/dist/lib/schemas-data/3.1/property/property-feature.json +1 -1
  755. package/dist/lib/schemas-data/3.1/property/property-list-changed-webhook.json +2 -2
  756. package/dist/lib/schemas-data/3.1/property/property-list-filters.json +5 -5
  757. package/dist/lib/schemas-data/3.1/property/property-list.json +6 -6
  758. package/dist/lib/schemas-data/3.1/property/update-property-list-request.json +8 -8
  759. package/dist/lib/schemas-data/3.1/property/update-property-list-response.json +6 -6
  760. package/dist/lib/schemas-data/3.1/property/validate-property-delivery-request.json +6 -6
  761. package/dist/lib/schemas-data/3.1/property/validate-property-delivery-response.json +6 -6
  762. package/dist/lib/schemas-data/3.1/property/validation-result.json +5 -5
  763. package/dist/lib/schemas-data/3.1/protocol/get-adcp-capabilities-request.json +4 -4
  764. package/dist/lib/schemas-data/3.1/protocol/get-adcp-capabilities-response.json +34 -34
  765. package/dist/lib/schemas-data/3.1/protocol/get-task-status-request.json +5 -5
  766. package/dist/lib/schemas-data/3.1/protocol/get-task-status-response.json +10 -10
  767. package/dist/lib/schemas-data/3.1/protocol/list-tasks-request.json +13 -13
  768. package/dist/lib/schemas-data/3.1/protocol/list-tasks-response.json +8 -8
  769. package/dist/lib/schemas-data/3.1/registries/v1-canonical-mapping.json +2 -2
  770. package/dist/lib/schemas-data/3.1/signals/activate-signal-request.json +6 -6
  771. package/dist/lib/schemas-data/3.1/signals/activate-signal-response.json +9 -9
  772. package/dist/lib/schemas-data/3.1/signals/get-signals-async-response-submitted.json +4 -4
  773. package/dist/lib/schemas-data/3.1/signals/get-signals-async-response-working.json +3 -3
  774. package/dist/lib/schemas-data/3.1/signals/get-signals-request.json +11 -11
  775. package/dist/lib/schemas-data/3.1/signals/get-signals-response.json +17 -17
  776. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-capabilities.json +1 -1
  777. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-context-use.json +1 -1
  778. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-get-offering-request.json +4 -4
  779. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-get-offering-response.json +9 -9
  780. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-identity.json +1 -1
  781. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-initiate-session-request.json +7 -7
  782. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-initiate-session-response.json +10 -10
  783. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-send-message-request.json +5 -5
  784. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-send-message-response.json +10 -10
  785. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-sponsored-context-receipt.json +4 -4
  786. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-sponsored-context.json +4 -4
  787. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-terminate-session-request.json +4 -4
  788. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-terminate-session-response.json +7 -7
  789. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-ui-element.json +1 -1
  790. package/dist/lib/schemas-data/3.1/trusted-match/available-package.json +4 -4
  791. package/dist/lib/schemas-data/3.1/trusted-match/context-match-request.json +5 -5
  792. package/dist/lib/schemas-data/3.1/trusted-match/context-match-response.json +4 -4
  793. package/dist/lib/schemas-data/3.1/trusted-match/error.json +1 -1
  794. package/dist/lib/schemas-data/3.1/trusted-match/identity-match-request.json +4 -4
  795. package/dist/lib/schemas-data/3.1/trusted-match/identity-match-response.json +4 -4
  796. package/dist/lib/schemas-data/3.1/trusted-match/offer-price.json +1 -1
  797. package/dist/lib/schemas-data/3.1/trusted-match/offer.json +5 -5
  798. package/dist/lib/schemas-data/3.1/trusted-match/provider-identity-match-response.json +4 -4
  799. package/dist/lib/schemas-data/3.1/trusted-match/provider-registration.json +2 -2
  800. package/dist/lib/schemas-data/3.1/trusted-match/publisher-tmpx-config.json +1 -1
  801. package/dist/lib/schemas-data/3.1/trusted-match/tmpx-chunk.json +1 -1
  802. package/dist/lib/schemas-data/3.2/a2ui/bound-value.json +1 -1
  803. package/dist/lib/schemas-data/3.2/a2ui/component.json +1 -1
  804. package/dist/lib/schemas-data/3.2/a2ui/si-catalog.json +25 -25
  805. package/dist/lib/schemas-data/3.2/a2ui/surface.json +2 -2
  806. package/dist/lib/schemas-data/3.2/a2ui/user-action.json +1 -1
  807. package/dist/lib/schemas-data/3.2/aao/agent-publishers.json +1 -1
  808. package/dist/lib/schemas-data/3.2/account/get-account-financials-request.json +6 -6
  809. package/dist/lib/schemas-data/3.2/account/get-account-financials-response.json +12 -12
  810. package/dist/lib/schemas-data/3.2/account/list-account-changes-request.json +7 -7
  811. package/dist/lib/schemas-data/3.2/account/list-account-changes-response.json +7 -7
  812. package/dist/lib/schemas-data/3.2/account/list-accounts-request.json +6 -6
  813. package/dist/lib/schemas-data/3.2/account/list-accounts-response.json +8 -8
  814. package/dist/lib/schemas-data/3.2/account/report-usage-request.json +6 -6
  815. package/dist/lib/schemas-data/3.2/account/report-usage-response.json +6 -6
  816. package/dist/lib/schemas-data/3.2/account/sync-accounts-request.json +16 -16
  817. package/dist/lib/schemas-data/3.2/account/sync-accounts-response.json +21 -21
  818. package/dist/lib/schemas-data/3.2/account/sync-governance-request.json +5 -5
  819. package/dist/lib/schemas-data/3.2/account/sync-governance-response.json +10 -10
  820. package/dist/lib/schemas-data/3.2/adagents.json +30 -30
  821. package/dist/lib/schemas-data/3.2/brand/acquire-rights-request.json +12 -12
  822. package/dist/lib/schemas-data/3.2/brand/acquire-rights-response.json +16 -16
  823. package/dist/lib/schemas-data/3.2/brand/creative-approval-request.json +5 -5
  824. package/dist/lib/schemas-data/3.2/brand/creative-approval-response.json +12 -12
  825. package/dist/lib/schemas-data/3.2/brand/get-brand-identity-request.json +4 -4
  826. package/dist/lib/schemas-data/3.2/brand/get-brand-identity-response.json +10 -10
  827. package/dist/lib/schemas-data/3.2/brand/get-rights-request.json +8 -8
  828. package/dist/lib/schemas-data/3.2/brand/get-rights-response.json +11 -11
  829. package/dist/lib/schemas-data/3.2/brand/revocation-notification.json +4 -4
  830. package/dist/lib/schemas-data/3.2/brand/rights-pricing-option.json +5 -5
  831. package/dist/lib/schemas-data/3.2/brand/rights-terms.json +3 -3
  832. package/dist/lib/schemas-data/3.2/brand/search-brands-request.json +6 -6
  833. package/dist/lib/schemas-data/3.2/brand/search-brands-response.json +11 -11
  834. package/dist/lib/schemas-data/3.2/brand/update-rights-request.json +6 -6
  835. package/dist/lib/schemas-data/3.2/brand/update-rights-response.json +11 -11
  836. package/dist/lib/schemas-data/3.2/brand/verification-status.json +1 -1
  837. package/dist/lib/schemas-data/3.2/brand/verify-brand-claim-request.json +3 -3
  838. package/dist/lib/schemas-data/3.2/brand/verify-brand-claim-response.json +13 -13
  839. package/dist/lib/schemas-data/3.2/brand/verify-brand-claims-request.json +3 -3
  840. package/dist/lib/schemas-data/3.2/brand/verify-brand-claims-response.json +13 -13
  841. package/dist/lib/schemas-data/3.2/brand.json +23 -23
  842. package/dist/lib/schemas-data/3.2/bundled.schemas.br +0 -0
  843. package/dist/lib/schemas-data/3.2/collection/base-collection-source.json +3 -3
  844. package/dist/lib/schemas-data/3.2/collection/collection-list-changed-webhook.json +2 -2
  845. package/dist/lib/schemas-data/3.2/collection/collection-list-filters.json +7 -7
  846. package/dist/lib/schemas-data/3.2/collection/collection-list.json +5 -5
  847. package/dist/lib/schemas-data/3.2/collection/create-collection-list-request.json +8 -8
  848. package/dist/lib/schemas-data/3.2/collection/create-collection-list-response.json +6 -6
  849. package/dist/lib/schemas-data/3.2/collection/delete-collection-list-request.json +5 -5
  850. package/dist/lib/schemas-data/3.2/collection/delete-collection-list-response.json +5 -5
  851. package/dist/lib/schemas-data/3.2/collection/get-collection-list-request.json +5 -5
  852. package/dist/lib/schemas-data/3.2/collection/get-collection-list-response.json +12 -12
  853. package/dist/lib/schemas-data/3.2/collection/list-collection-lists-request.json +6 -6
  854. package/dist/lib/schemas-data/3.2/collection/list-collection-lists-response.json +7 -7
  855. package/dist/lib/schemas-data/3.2/collection/update-collection-list-request.json +8 -8
  856. package/dist/lib/schemas-data/3.2/collection/update-collection-list-response.json +6 -6
  857. package/dist/lib/schemas-data/3.2/content-standards/artifact-webhook-payload.json +3 -3
  858. package/dist/lib/schemas-data/3.2/content-standards/artifact.json +8 -8
  859. package/dist/lib/schemas-data/3.2/content-standards/calibrate-content-request.json +5 -5
  860. package/dist/lib/schemas-data/3.2/content-standards/calibrate-content-response.json +10 -10
  861. package/dist/lib/schemas-data/3.2/content-standards/content-standards.json +7 -7
  862. package/dist/lib/schemas-data/3.2/content-standards/create-content-standards-request.json +8 -8
  863. package/dist/lib/schemas-data/3.2/content-standards/create-content-standards-response.json +8 -8
  864. package/dist/lib/schemas-data/3.2/content-standards/get-content-standards-request.json +4 -4
  865. package/dist/lib/schemas-data/3.2/content-standards/get-content-standards-response.json +9 -9
  866. package/dist/lib/schemas-data/3.2/content-standards/get-media-buy-artifacts-request.json +5 -5
  867. package/dist/lib/schemas-data/3.2/content-standards/get-media-buy-artifacts-response.json +10 -10
  868. package/dist/lib/schemas-data/3.2/content-standards/list-content-standards-request.json +6 -6
  869. package/dist/lib/schemas-data/3.2/content-standards/list-content-standards-response.json +10 -10
  870. package/dist/lib/schemas-data/3.2/content-standards/update-content-standards-request.json +8 -8
  871. package/dist/lib/schemas-data/3.2/content-standards/update-content-standards-response.json +8 -8
  872. package/dist/lib/schemas-data/3.2/content-standards/validate-content-delivery-request.json +5 -5
  873. package/dist/lib/schemas-data/3.2/content-standards/validate-content-delivery-response.json +10 -10
  874. package/dist/lib/schemas-data/3.2/core/acceptance-policy-profile-ids.json +1 -1
  875. package/dist/lib/schemas-data/3.2/core/account-authorization.json +1 -1
  876. package/dist/lib/schemas-data/3.2/core/account-change-recorded-webhook.json +2 -2
  877. package/dist/lib/schemas-data/3.2/core/account-change.json +2 -2
  878. package/dist/lib/schemas-data/3.2/core/account-identity-change-preview.json +4 -4
  879. package/dist/lib/schemas-data/3.2/core/account-identity-change.json +3 -3
  880. package/dist/lib/schemas-data/3.2/core/account-ref.json +3 -3
  881. package/dist/lib/schemas-data/3.2/core/account-status-changed-webhook.json +4 -4
  882. package/dist/lib/schemas-data/3.2/core/account-timezone-capability.json +1 -1
  883. package/dist/lib/schemas-data/3.2/core/account-with-authorization.json +3 -3
  884. package/dist/lib/schemas-data/3.2/core/account.json +14 -14
  885. package/dist/lib/schemas-data/3.2/core/activation-key.json +1 -1
  886. package/dist/lib/schemas-data/3.2/core/ad-inventory-config.json +1 -1
  887. package/dist/lib/schemas-data/3.2/core/agent-encryption-key.json +1 -1
  888. package/dist/lib/schemas-data/3.2/core/agent-notification-config-state.json +4 -4
  889. package/dist/lib/schemas-data/3.2/core/agent-notification-config.json +4 -4
  890. package/dist/lib/schemas-data/3.2/core/agent-reporting-destination-state.json +4 -4
  891. package/dist/lib/schemas-data/3.2/core/agent-reporting-destination.json +8 -8
  892. package/dist/lib/schemas-data/3.2/core/agent-signing-key.json +1 -1
  893. package/dist/lib/schemas-data/3.2/core/agent-webhook-challenge.json +1 -1
  894. package/dist/lib/schemas-data/3.2/core/app-item.json +4 -4
  895. package/dist/lib/schemas-data/3.2/core/applicable-package-id.json +1 -1
  896. package/dist/lib/schemas-data/3.2/core/asset-group-vocabulary.json +1 -1
  897. package/dist/lib/schemas-data/3.2/core/assets/asset-union.json +22 -22
  898. package/dist/lib/schemas-data/3.2/core/assets/audio-asset.json +3 -3
  899. package/dist/lib/schemas-data/3.2/core/assets/brief-asset.json +2 -2
  900. package/dist/lib/schemas-data/3.2/core/assets/card-asset.json +6 -6
  901. package/dist/lib/schemas-data/3.2/core/assets/catalog-asset.json +2 -2
  902. package/dist/lib/schemas-data/3.2/core/assets/css-asset.json +2 -2
  903. package/dist/lib/schemas-data/3.2/core/assets/daast-asset.json +6 -6
  904. package/dist/lib/schemas-data/3.2/core/assets/daast-tracker-asset.json +5 -5
  905. package/dist/lib/schemas-data/3.2/core/assets/display-tag-asset.json +12 -12
  906. package/dist/lib/schemas-data/3.2/core/assets/html-asset.json +2 -2
  907. package/dist/lib/schemas-data/3.2/core/assets/image-asset.json +2 -2
  908. package/dist/lib/schemas-data/3.2/core/assets/javascript-asset.json +3 -3
  909. package/dist/lib/schemas-data/3.2/core/assets/markdown-asset.json +2 -2
  910. package/dist/lib/schemas-data/3.2/core/assets/pixel-tracker-asset.json +5 -5
  911. package/dist/lib/schemas-data/3.2/core/assets/published-post-asset.json +2 -2
  912. package/dist/lib/schemas-data/3.2/core/assets/text-asset.json +2 -2
  913. package/dist/lib/schemas-data/3.2/core/assets/url-asset.json +5 -5
  914. package/dist/lib/schemas-data/3.2/core/assets/vast-asset.json +6 -6
  915. package/dist/lib/schemas-data/3.2/core/assets/vast-tracker-asset.json +5 -5
  916. package/dist/lib/schemas-data/3.2/core/assets/video-asset.json +7 -7
  917. package/dist/lib/schemas-data/3.2/core/assets/webhook-asset.json +7 -7
  918. package/dist/lib/schemas-data/3.2/core/assets/zip-asset.json +2 -2
  919. package/dist/lib/schemas-data/3.2/core/async-response-data.json +43 -43
  920. package/dist/lib/schemas-data/3.2/core/async-response-refs/creative/get-creative-features-async-response-submitted.json +3 -3
  921. package/dist/lib/schemas-data/3.2/core/async-response-refs/creative/sync-creatives-async-response-input-required.json +3 -3
  922. package/dist/lib/schemas-data/3.2/core/async-response-refs/creative/sync-creatives-async-response-submitted.json +4 -4
  923. package/dist/lib/schemas-data/3.2/core/async-response-refs/creative/sync-creatives-async-response-working.json +3 -3
  924. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/accept-proposal-async-response-input-required.json +2 -2
  925. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/accept-proposal-async-response-submitted.json +2 -2
  926. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/accept-proposal-async-response-working.json +2 -2
  927. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/build-creative-async-response-input-required.json +4 -4
  928. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/build-creative-async-response-submitted.json +4 -4
  929. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/build-creative-async-response-working.json +3 -3
  930. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/buy-products-async-response-input-required.json +2 -2
  931. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/buy-products-async-response-submitted.json +2 -2
  932. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/buy-products-async-response-working.json +2 -2
  933. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/control-media-buy-async-response-input-required.json +2 -2
  934. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/control-media-buy-async-response-submitted.json +2 -2
  935. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/control-media-buy-async-response-working.json +2 -2
  936. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/create-media-buy-async-response-input-required.json +4 -4
  937. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/create-media-buy-async-response-submitted.json +4 -4
  938. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/create-media-buy-async-response-working.json +3 -3
  939. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/decline-proposals-async-response-input-required.json +2 -2
  940. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/decline-proposals-async-response-submitted.json +2 -2
  941. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/decline-proposals-async-response-working.json +2 -2
  942. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/get-products-async-response-input-required.json +4 -4
  943. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/get-products-async-response-submitted.json +4 -4
  944. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/get-products-async-response-working.json +3 -3
  945. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/refine-proposals-async-response-input-required.json +2 -2
  946. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/refine-proposals-async-response-submitted.json +2 -2
  947. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/refine-proposals-async-response-working.json +2 -2
  948. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/request-proposals-async-response-input-required.json +2 -2
  949. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/request-proposals-async-response-submitted.json +2 -2
  950. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/request-proposals-async-response-working.json +2 -2
  951. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/sync-catalogs-async-response-input-required.json +3 -3
  952. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/sync-catalogs-async-response-submitted.json +4 -4
  953. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/sync-catalogs-async-response-working.json +3 -3
  954. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/update-media-buy-async-response-input-required.json +3 -3
  955. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/update-media-buy-async-response-submitted.json +4 -4
  956. package/dist/lib/schemas-data/3.2/core/async-response-refs/media-buy/update-media-buy-async-response-working.json +3 -3
  957. package/dist/lib/schemas-data/3.2/core/async-response-refs/signals/get-signals-async-response-submitted.json +4 -4
  958. package/dist/lib/schemas-data/3.2/core/async-response-refs/signals/get-signals-async-response-working.json +3 -3
  959. package/dist/lib/schemas-data/3.2/core/attestation-capabilities.json +5 -5
  960. package/dist/lib/schemas-data/3.2/core/attestation-evaluation.json +2 -2
  961. package/dist/lib/schemas-data/3.2/core/attestation-issuer.json +5 -5
  962. package/dist/lib/schemas-data/3.2/core/attestation-reference.json +7 -7
  963. package/dist/lib/schemas-data/3.2/core/attestation-subject.json +5 -5
  964. package/dist/lib/schemas-data/3.2/core/attribution-window.json +4 -4
  965. package/dist/lib/schemas-data/3.2/core/audience-activation-method.json +6 -6
  966. package/dist/lib/schemas-data/3.2/core/audience-characteristic.json +1 -1
  967. package/dist/lib/schemas-data/3.2/core/audience-evidence-pin.json +2 -2
  968. package/dist/lib/schemas-data/3.2/core/audience-evidence-requirements.json +10 -10
  969. package/dist/lib/schemas-data/3.2/core/audience-evidence-selection.json +5 -5
  970. package/dist/lib/schemas-data/3.2/core/audience-evidence.json +10 -10
  971. package/dist/lib/schemas-data/3.2/core/audience-member.json +3 -3
  972. package/dist/lib/schemas-data/3.2/core/audience-selector.json +7 -7
  973. package/dist/lib/schemas-data/3.2/core/audience-source.json +3 -3
  974. package/dist/lib/schemas-data/3.2/core/authorized-agent-base.json +3 -3
  975. package/dist/lib/schemas-data/3.2/core/bidding-policy-capability.json +1 -1
  976. package/dist/lib/schemas-data/3.2/core/bidding-policy.json +1 -1
  977. package/dist/lib/schemas-data/3.2/core/brand-id.json +1 -1
  978. package/dist/lib/schemas-data/3.2/core/brand-key.json +2 -2
  979. package/dist/lib/schemas-data/3.2/core/brand-ref.json +3 -3
  980. package/dist/lib/schemas-data/3.2/core/brand-response-authorization-result.json +1 -1
  981. package/dist/lib/schemas-data/3.2/core/budget-allocation.json +2 -2
  982. package/dist/lib/schemas-data/3.2/core/budget-range.json +1 -1
  983. package/dist/lib/schemas-data/3.2/core/business-entity.json +2 -2
  984. package/dist/lib/schemas-data/3.2/core/cancellation-policy.json +2 -2
  985. package/dist/lib/schemas-data/3.2/core/canonical-account-ref.json +3 -3
  986. package/dist/lib/schemas-data/3.2/core/canonical-audience-evidence-selection.json +3 -3
  987. package/dist/lib/schemas-data/3.2/core/canonical-audience-evidence.json +8 -8
  988. package/dist/lib/schemas-data/3.2/core/canonical-budget-allocation.json +2 -2
  989. package/dist/lib/schemas-data/3.2/core/canonical-delivery-forecast.json +7 -7
  990. package/dist/lib/schemas-data/3.2/core/canonical-forecast-point.json +12 -12
  991. package/dist/lib/schemas-data/3.2/core/canonical-forecast-vendor-metric-value.json +5 -5
  992. package/dist/lib/schemas-data/3.2/core/canonical-format-kind.json +1 -1
  993. package/dist/lib/schemas-data/3.2/core/canonical-format-option.json +6 -6
  994. package/dist/lib/schemas-data/3.2/core/canonical-measurement-terms.json +3 -3
  995. package/dist/lib/schemas-data/3.2/core/canonical-media-buy-action-fields.json +6 -6
  996. package/dist/lib/schemas-data/3.2/core/canonical-media-buy-action.json +4 -4
  997. package/dist/lib/schemas-data/3.2/core/canonical-media-buy-features.json +2 -2
  998. package/dist/lib/schemas-data/3.2/core/canonical-metric-qualifier.json +6 -6
  999. package/dist/lib/schemas-data/3.2/core/canonical-optimization-goal.json +9 -9
  1000. package/dist/lib/schemas-data/3.2/core/canonical-performance-standard.json +4 -4
  1001. package/dist/lib/schemas-data/3.2/core/canonical-placement.json +9 -9
  1002. package/dist/lib/schemas-data/3.2/core/canonical-pricing-option.json +5 -5
  1003. package/dist/lib/schemas-data/3.2/core/canonical-product-action.json +6 -6
  1004. package/dist/lib/schemas-data/3.2/core/canonical-product.json +141 -32
  1005. package/dist/lib/schemas-data/3.2/core/canonical-projection-ref.json +3 -3
  1006. package/dist/lib/schemas-data/3.2/core/canonical-projection-slot-override.json +1 -1
  1007. package/dist/lib/schemas-data/3.2/core/canonical-proposal.json +6 -6
  1008. package/dist/lib/schemas-data/3.2/core/canonical-reporting-capabilities.json +11 -11
  1009. package/dist/lib/schemas-data/3.2/core/canonical-reporting-commitment.json +6 -6
  1010. package/dist/lib/schemas-data/3.2/core/canvas-constraint.json +1 -1
  1011. package/dist/lib/schemas-data/3.2/core/capabilities-changed-webhook.json +2 -2
  1012. package/dist/lib/schemas-data/3.2/core/catalog-field-mapping.json +2 -2
  1013. package/dist/lib/schemas-data/3.2/core/catalog-item-availability-error.json +3 -3
  1014. package/dist/lib/schemas-data/3.2/core/catalog-item-availability-ref.json +1 -1
  1015. package/dist/lib/schemas-data/3.2/core/catalog-item-availability-state.json +4 -4
  1016. package/dist/lib/schemas-data/3.2/core/catalog-item-availability-update-result.json +4 -4
  1017. package/dist/lib/schemas-data/3.2/core/catalog-item-availability-update.json +2 -2
  1018. package/dist/lib/schemas-data/3.2/core/catalog-item-delivery-metrics.json +3 -3
  1019. package/dist/lib/schemas-data/3.2/core/catalog-item-reference-not-found-error.json +1 -1
  1020. package/dist/lib/schemas-data/3.2/core/catalog-selection.json +7 -7
  1021. package/dist/lib/schemas-data/3.2/core/catalog.json +7 -7
  1022. package/dist/lib/schemas-data/3.2/core/catchment.json +5 -5
  1023. package/dist/lib/schemas-data/3.2/core/collection-delivery-metrics.json +3 -3
  1024. package/dist/lib/schemas-data/3.2/core/collection-distribution.json +3 -3
  1025. package/dist/lib/schemas-data/3.2/core/collection-list-ref.json +1 -1
  1026. package/dist/lib/schemas-data/3.2/core/collection-property-delivery-metrics.json +5 -5
  1027. package/dist/lib/schemas-data/3.2/core/collection-ref.json +1 -1
  1028. package/dist/lib/schemas-data/3.2/core/collection-selection.json +4 -4
  1029. package/dist/lib/schemas-data/3.2/core/collection-selector.json +1 -1
  1030. package/dist/lib/schemas-data/3.2/core/collection.json +13 -13
  1031. package/dist/lib/schemas-data/3.2/core/committed-metric.json +14 -14
  1032. package/dist/lib/schemas-data/3.2/core/compact-task-input-required.json +4 -4
  1033. package/dist/lib/schemas-data/3.2/core/compact-task-submitted.json +6 -6
  1034. package/dist/lib/schemas-data/3.2/core/compact-task-working.json +3 -3
  1035. package/dist/lib/schemas-data/3.2/core/content-rating.json +2 -2
  1036. package/dist/lib/schemas-data/3.2/core/context.json +1 -1
  1037. package/dist/lib/schemas-data/3.2/core/creative-approval-scope.json +3 -3
  1038. package/dist/lib/schemas-data/3.2/core/creative-asset.json +13 -13
  1039. package/dist/lib/schemas-data/3.2/core/creative-assets.json +3 -3
  1040. package/dist/lib/schemas-data/3.2/core/creative-assignment.json +2 -2
  1041. package/dist/lib/schemas-data/3.2/core/creative-brief.json +4 -4
  1042. package/dist/lib/schemas-data/3.2/core/creative-consumption.json +1 -1
  1043. package/dist/lib/schemas-data/3.2/core/creative-delivery-metrics.json +2 -2
  1044. package/dist/lib/schemas-data/3.2/core/creative-filters.json +8 -8
  1045. package/dist/lib/schemas-data/3.2/core/creative-item.json +1 -1
  1046. package/dist/lib/schemas-data/3.2/core/creative-locale-policy.json +2 -2
  1047. package/dist/lib/schemas-data/3.2/core/creative-localization-readback.json +6 -6
  1048. package/dist/lib/schemas-data/3.2/core/creative-localization.json +6 -6
  1049. package/dist/lib/schemas-data/3.2/core/creative-manifest.json +13 -13
  1050. package/dist/lib/schemas-data/3.2/core/creative-operation-format-declaration.json +7 -7
  1051. package/dist/lib/schemas-data/3.2/core/creative-policy.json +3 -3
  1052. package/dist/lib/schemas-data/3.2/core/creative-representation-set.json +4 -4
  1053. package/dist/lib/schemas-data/3.2/core/creative-representation.json +2 -2
  1054. package/dist/lib/schemas-data/3.2/core/creative-revision-id.json +1 -1
  1055. package/dist/lib/schemas-data/3.2/core/creative-variable.json +1 -1
  1056. package/dist/lib/schemas-data/3.2/core/creative-variant.json +6 -6
  1057. package/dist/lib/schemas-data/3.2/core/daast-tracker-constraints.json +2 -2
  1058. package/dist/lib/schemas-data/3.2/core/data-provider-signal-selector.json +1 -1
  1059. package/dist/lib/schemas-data/3.2/core/date-range.json +1 -1
  1060. package/dist/lib/schemas-data/3.2/core/datetime-range.json +1 -1
  1061. package/dist/lib/schemas-data/3.2/core/daypart-target.json +3 -3
  1062. package/dist/lib/schemas-data/3.2/core/deadline-policy.json +1 -1
  1063. package/dist/lib/schemas-data/3.2/core/delivery-breakdown-controls.json +3 -3
  1064. package/dist/lib/schemas-data/3.2/core/delivery-forecast.json +7 -7
  1065. package/dist/lib/schemas-data/3.2/core/delivery-metric-aggregate.json +14 -14
  1066. package/dist/lib/schemas-data/3.2/core/delivery-metrics.json +11 -11
  1067. package/dist/lib/schemas-data/3.2/core/delivery-provider.json +1 -1
  1068. package/dist/lib/schemas-data/3.2/core/delivery-recipient.json +2 -2
  1069. package/dist/lib/schemas-data/3.2/core/demographic-age-range.json +1 -1
  1070. package/dist/lib/schemas-data/3.2/core/demographic-predicate.json +2 -2
  1071. package/dist/lib/schemas-data/3.2/core/demographic-reporting-capability.json +4 -4
  1072. package/dist/lib/schemas-data/3.2/core/demographic-targeting-capability.json +4 -4
  1073. package/dist/lib/schemas-data/3.2/core/demographic-targeting-intent.json +4 -4
  1074. package/dist/lib/schemas-data/3.2/core/demographic-targeting-resolution.json +10 -10
  1075. package/dist/lib/schemas-data/3.2/core/deployment.json +3 -3
  1076. package/dist/lib/schemas-data/3.2/core/destination-item.json +4 -4
  1077. package/dist/lib/schemas-data/3.2/core/destination.json +1 -1
  1078. package/dist/lib/schemas-data/3.2/core/diagnostic-issue.json +1 -1
  1079. package/dist/lib/schemas-data/3.2/core/downstream-connection-requirement.json +1 -1
  1080. package/dist/lib/schemas-data/3.2/core/duration.json +1 -1
  1081. package/dist/lib/schemas-data/3.2/core/education-item.json +4 -4
  1082. package/dist/lib/schemas-data/3.2/core/error.json +1 -1
  1083. package/dist/lib/schemas-data/3.2/core/evaluator-spec.json +5 -5
  1084. package/dist/lib/schemas-data/3.2/core/event-custom-data.json +2 -2
  1085. package/dist/lib/schemas-data/3.2/core/event-source-health.json +3 -3
  1086. package/dist/lib/schemas-data/3.2/core/event-surface.json +2 -2
  1087. package/dist/lib/schemas-data/3.2/core/event.json +8 -8
  1088. package/dist/lib/schemas-data/3.2/core/experimental-feature-id.json +1 -1
  1089. package/dist/lib/schemas-data/3.2/core/ext.json +1 -1
  1090. package/dist/lib/schemas-data/3.2/core/feature-requirement.json +1 -1
  1091. package/dist/lib/schemas-data/3.2/core/flight-item.json +4 -4
  1092. package/dist/lib/schemas-data/3.2/core/forecast-dimension-audience.json +2 -2
  1093. package/dist/lib/schemas-data/3.2/core/forecast-dimension-device-platform.json +2 -2
  1094. package/dist/lib/schemas-data/3.2/core/forecast-dimension-device-type.json +2 -2
  1095. package/dist/lib/schemas-data/3.2/core/forecast-dimension-geo.json +5 -5
  1096. package/dist/lib/schemas-data/3.2/core/forecast-dimension-placement.json +2 -2
  1097. package/dist/lib/schemas-data/3.2/core/forecast-dimension-signal.json +2 -2
  1098. package/dist/lib/schemas-data/3.2/core/forecast-dimension-time.json +1 -1
  1099. package/dist/lib/schemas-data/3.2/core/forecast-point-dimensions.json +8 -8
  1100. package/dist/lib/schemas-data/3.2/core/forecast-point.json +28 -28
  1101. package/dist/lib/schemas-data/3.2/core/forecast-range.json +1 -1
  1102. package/dist/lib/schemas-data/3.2/core/forecast-rate-range.json +2 -2
  1103. package/dist/lib/schemas-data/3.2/core/forecast-vendor-metric-value.json +7 -7
  1104. package/dist/lib/schemas-data/3.2/core/format-id.json +1 -1
  1105. package/dist/lib/schemas-data/3.2/core/format-option-ref.json +1 -1
  1106. package/dist/lib/schemas-data/3.2/core/format-shape-vocabulary.json +1 -1
  1107. package/dist/lib/schemas-data/3.2/core/format.json +45 -45
  1108. package/dist/lib/schemas-data/3.2/core/frequency-cap-constraints.json +8 -8
  1109. package/dist/lib/schemas-data/3.2/core/frequency-cap-duration-unit.json +1 -1
  1110. package/dist/lib/schemas-data/3.2/core/frequency-cap-impression-constraints.json +2 -2
  1111. package/dist/lib/schemas-data/3.2/core/frequency-cap-interval-constraints.json +3 -3
  1112. package/dist/lib/schemas-data/3.2/core/frequency-cap-requirements.json +6 -6
  1113. package/dist/lib/schemas-data/3.2/core/frequency-cap.json +4 -4
  1114. package/dist/lib/schemas-data/3.2/core/generation-credential.json +3 -3
  1115. package/dist/lib/schemas-data/3.2/core/geo-breakdown-support.json +3 -3
  1116. package/dist/lib/schemas-data/3.2/core/geo-delivery-metrics.json +6 -6
  1117. package/dist/lib/schemas-data/3.2/core/geo-metro.json +2 -2
  1118. package/dist/lib/schemas-data/3.2/core/geo-place-area.json +4 -4
  1119. package/dist/lib/schemas-data/3.2/core/geo-place-catalog-capability.json +2 -2
  1120. package/dist/lib/schemas-data/3.2/core/geo-place-catalog-entry.json +3 -3
  1121. package/dist/lib/schemas-data/3.2/core/geo-place-requirement.json +3 -3
  1122. package/dist/lib/schemas-data/3.2/core/geo-place-resolver.json +1 -1
  1123. package/dist/lib/schemas-data/3.2/core/geo-place-support.json +3 -3
  1124. package/dist/lib/schemas-data/3.2/core/geo-place-system.json +1 -1
  1125. package/dist/lib/schemas-data/3.2/core/geo-place-type.json +1 -1
  1126. package/dist/lib/schemas-data/3.2/core/geo-region-requirement.json +1 -1
  1127. package/dist/lib/schemas-data/3.2/core/geo-region-support.json +2 -2
  1128. package/dist/lib/schemas-data/3.2/core/get-geo-place-resolution-request.json +3 -3
  1129. package/dist/lib/schemas-data/3.2/core/get-geo-place-resolution-response.json +4 -4
  1130. package/dist/lib/schemas-data/3.2/core/hotel-item.json +4 -4
  1131. package/dist/lib/schemas-data/3.2/core/iana-timezone.json +1 -1
  1132. package/dist/lib/schemas-data/3.2/core/identifier.json +2 -2
  1133. package/dist/lib/schemas-data/3.2/core/impairment.json +3 -3
  1134. package/dist/lib/schemas-data/3.2/core/indicator-bearing.json +4 -4
  1135. package/dist/lib/schemas-data/3.2/core/indicator-scope.json +1 -1
  1136. package/dist/lib/schemas-data/3.2/core/indicator.json +4 -4
  1137. package/dist/lib/schemas-data/3.2/core/indicators-changed-webhook.json +3 -3
  1138. package/dist/lib/schemas-data/3.2/core/industry-identifier.json +2 -2
  1139. package/dist/lib/schemas-data/3.2/core/insertion-order.json +1 -1
  1140. package/dist/lib/schemas-data/3.2/core/installment-deadlines.json +2 -2
  1141. package/dist/lib/schemas-data/3.2/core/installment-delivery-metrics.json +3 -3
  1142. package/dist/lib/schemas-data/3.2/core/installment-property-delivery-metrics.json +5 -5
  1143. package/dist/lib/schemas-data/3.2/core/installment-ref.json +2 -2
  1144. package/dist/lib/schemas-data/3.2/core/installment.json +10 -10
  1145. package/dist/lib/schemas-data/3.2/core/inventory-list-application.json +1 -1
  1146. package/dist/lib/schemas-data/3.2/core/job-item.json +3 -3
  1147. package/dist/lib/schemas-data/3.2/core/keyword-delivery-metrics.json +3 -3
  1148. package/dist/lib/schemas-data/3.2/core/keyword-target.json +2 -2
  1149. package/dist/lib/schemas-data/3.2/core/limited-series.json +1 -1
  1150. package/dist/lib/schemas-data/3.2/core/locale-tag.json +1 -1
  1151. package/dist/lib/schemas-data/3.2/core/localized-creative-asset.json +3 -3
  1152. package/dist/lib/schemas-data/3.2/core/macro-bearing-url.json +1 -1
  1153. package/dist/lib/schemas-data/3.2/core/macro-declaration.json +10 -10
  1154. package/dist/lib/schemas-data/3.2/core/macro-encoding.json +1 -1
  1155. package/dist/lib/schemas-data/3.2/core/macro-resolution-capability.json +8 -8
  1156. package/dist/lib/schemas-data/3.2/core/macro-resolution-result.json +10 -10
  1157. package/dist/lib/schemas-data/3.2/core/macro-translation-target.json +7 -7
  1158. package/dist/lib/schemas-data/3.2/core/material-deadline.json +1 -1
  1159. package/dist/lib/schemas-data/3.2/core/mcp-webhook-payload.json +6 -6
  1160. package/dist/lib/schemas-data/3.2/core/measurement-readiness.json +5 -5
  1161. package/dist/lib/schemas-data/3.2/core/measurement-terms.json +3 -3
  1162. package/dist/lib/schemas-data/3.2/core/measurement-window.json +1 -1
  1163. package/dist/lib/schemas-data/3.2/core/media-buy-available-action-id.json +2 -2
  1164. package/dist/lib/schemas-data/3.2/core/media-buy-available-action.json +7 -7
  1165. package/dist/lib/schemas-data/3.2/core/media-buy-change-term-id.json +1 -1
  1166. package/dist/lib/schemas-data/3.2/core/media-buy-features.json +2 -2
  1167. package/dist/lib/schemas-data/3.2/core/media-buy-frequency-cap-capability.json +3 -3
  1168. package/dist/lib/schemas-data/3.2/core/media-buy-frequency-cap-requirement.json +3 -3
  1169. package/dist/lib/schemas-data/3.2/core/media-buy-frequency-cap-support.json +3 -3
  1170. package/dist/lib/schemas-data/3.2/core/media-buy-frequency-cap.json +2 -2
  1171. package/dist/lib/schemas-data/3.2/core/media-buy-legacy-terms-ref.json +1 -1
  1172. package/dist/lib/schemas-data/3.2/core/media-buy-support-requirements.json +2 -2
  1173. package/dist/lib/schemas-data/3.2/core/media-buy-support.json +3 -3
  1174. package/dist/lib/schemas-data/3.2/core/media-buy.json +14 -14
  1175. package/dist/lib/schemas-data/3.2/core/missing-metric.json +14 -14
  1176. package/dist/lib/schemas-data/3.2/core/negative-keyword.json +2 -2
  1177. package/dist/lib/schemas-data/3.2/core/notification-config.json +3 -3
  1178. package/dist/lib/schemas-data/3.2/core/offering-asset-group.json +16 -16
  1179. package/dist/lib/schemas-data/3.2/core/offering.json +5 -5
  1180. package/dist/lib/schemas-data/3.2/core/operator-identity.json +2 -2
  1181. package/dist/lib/schemas-data/3.2/core/operator-unit.json +1 -1
  1182. package/dist/lib/schemas-data/3.2/core/opportunity-context.json +3 -3
  1183. package/dist/lib/schemas-data/3.2/core/optimization-goal.json +9 -9
  1184. package/dist/lib/schemas-data/3.2/core/outcome-measurement.json +2 -2
  1185. package/dist/lib/schemas-data/3.2/core/outcome-target-cost-per.json +2 -2
  1186. package/dist/lib/schemas-data/3.2/core/overlay.json +1 -1
  1187. package/dist/lib/schemas-data/3.2/core/package-delivery-metric-value.json +2 -2
  1188. package/dist/lib/schemas-data/3.2/core/package-format-snapshot.json +5 -5
  1189. package/dist/lib/schemas-data/3.2/core/package-signal-targeting-group.json +2 -2
  1190. package/dist/lib/schemas-data/3.2/core/package-signal-targeting-groups.json +2 -2
  1191. package/dist/lib/schemas-data/3.2/core/package-signal-targeting.json +3 -3
  1192. package/dist/lib/schemas-data/3.2/core/package-targeting-resolution.json +3 -3
  1193. package/dist/lib/schemas-data/3.2/core/package.json +23 -23
  1194. package/dist/lib/schemas-data/3.2/core/pagination-request.json +1 -1
  1195. package/dist/lib/schemas-data/3.2/core/pagination-response.json +1 -1
  1196. package/dist/lib/schemas-data/3.2/core/performance-feedback-assertion.json +8 -8
  1197. package/dist/lib/schemas-data/3.2/core/performance-feedback-metric.json +14 -14
  1198. package/dist/lib/schemas-data/3.2/core/performance-feedback.json +17 -17
  1199. package/dist/lib/schemas-data/3.2/core/performance-standard.json +4 -4
  1200. package/dist/lib/schemas-data/3.2/core/placement-definition.json +15 -15
  1201. package/dist/lib/schemas-data/3.2/core/placement-delivery-metrics.json +3 -3
  1202. package/dist/lib/schemas-data/3.2/core/placement-evidence.json +1 -1
  1203. package/dist/lib/schemas-data/3.2/core/placement-identity.json +2 -2
  1204. package/dist/lib/schemas-data/3.2/core/placement-presentation.json +1 -1
  1205. package/dist/lib/schemas-data/3.2/core/placement-property-delivery-metrics.json +5 -5
  1206. package/dist/lib/schemas-data/3.2/core/placement-ref.json +1 -1
  1207. package/dist/lib/schemas-data/3.2/core/placement-selection.json +5 -5
  1208. package/dist/lib/schemas-data/3.2/core/placement.json +10 -10
  1209. package/dist/lib/schemas-data/3.2/core/planned-delivery.json +8 -8
  1210. package/dist/lib/schemas-data/3.2/core/platform-extension-ref.json +1 -1
  1211. package/dist/lib/schemas-data/3.2/core/positive-postal-area-support.json +2 -2
  1212. package/dist/lib/schemas-data/3.2/core/postal-area-support.json +2 -2
  1213. package/dist/lib/schemas-data/3.2/core/postal-area.json +4 -4
  1214. package/dist/lib/schemas-data/3.2/core/postal-country-system.json +2 -2
  1215. package/dist/lib/schemas-data/3.2/core/presentation-ref.json +1 -1
  1216. package/dist/lib/schemas-data/3.2/core/preview-provider.json +1 -1
  1217. package/dist/lib/schemas-data/3.2/core/preview-renderer-metadata.json +1 -1
  1218. package/dist/lib/schemas-data/3.2/core/price.json +1 -1
  1219. package/dist/lib/schemas-data/3.2/core/pricing-option.json +11 -11
  1220. package/dist/lib/schemas-data/3.2/core/principal-changed-webhook.json +2 -2
  1221. package/dist/lib/schemas-data/3.2/core/principal-declarations-state.json +3 -3
  1222. package/dist/lib/schemas-data/3.2/core/principal-declarations.json +2 -2
  1223. package/dist/lib/schemas-data/3.2/core/principal-state.json +4 -4
  1224. package/dist/lib/schemas-data/3.2/core/product-allocation.json +5 -5
  1225. package/dist/lib/schemas-data/3.2/core/product-allowed-action.json +6 -6
  1226. package/dist/lib/schemas-data/3.2/core/product-audience-evidence-requirements.json +13 -13
  1227. package/dist/lib/schemas-data/3.2/core/product-card-reference-asset.json +5 -5
  1228. package/dist/lib/schemas-data/3.2/core/product-change-map.json +1 -1
  1229. package/dist/lib/schemas-data/3.2/core/product-execution-requirement.json +7 -7
  1230. package/dist/lib/schemas-data/3.2/core/product-filters.json +36 -36
  1231. package/dist/lib/schemas-data/3.2/core/product-format-declaration.json +22 -22
  1232. package/dist/lib/schemas-data/3.2/core/product-identity.json +1 -1
  1233. package/dist/lib/schemas-data/3.2/core/product-offer-filters.json +26 -26
  1234. package/dist/lib/schemas-data/3.2/core/product-signal-targeting-option.json +3 -3
  1235. package/dist/lib/schemas-data/3.2/core/product-targeting-resolution.json +3 -3
  1236. package/dist/lib/schemas-data/3.2/core/product.json +54 -54
  1237. package/dist/lib/schemas-data/3.2/core/property-delivery-metrics.json +4 -4
  1238. package/dist/lib/schemas-data/3.2/core/property-id.json +1 -1
  1239. package/dist/lib/schemas-data/3.2/core/property-list-ref.json +1 -1
  1240. package/dist/lib/schemas-data/3.2/core/property-ref.json +2 -2
  1241. package/dist/lib/schemas-data/3.2/core/property-tag.json +1 -1
  1242. package/dist/lib/schemas-data/3.2/core/property.json +6 -6
  1243. package/dist/lib/schemas-data/3.2/core/proposal.json +9 -9
  1244. package/dist/lib/schemas-data/3.2/core/protocol-envelope.json +5 -5
  1245. package/dist/lib/schemas-data/3.2/core/provenance.json +9 -9
  1246. package/dist/lib/schemas-data/3.2/core/publisher-property-selector.json +3 -3
  1247. package/dist/lib/schemas-data/3.2/core/push-notification-config.json +2 -2
  1248. package/dist/lib/schemas-data/3.2/core/real-estate-item.json +4 -4
  1249. package/dist/lib/schemas-data/3.2/core/reference-asset.json +1 -1
  1250. package/dist/lib/schemas-data/3.2/core/reference-renderer.json +1 -1
  1251. package/dist/lib/schemas-data/3.2/core/registry-event.json +15 -15
  1252. package/dist/lib/schemas-data/3.2/core/registry-feed-response.json +2 -2
  1253. package/dist/lib/schemas-data/3.2/core/reporting-adjustment-receipt.json +1 -1
  1254. package/dist/lib/schemas-data/3.2/core/reporting-adjustment.json +2 -2
  1255. package/dist/lib/schemas-data/3.2/core/reporting-canonical-content-digest.json +1 -1
  1256. package/dist/lib/schemas-data/3.2/core/reporting-canonicalization-contract.json +1 -1
  1257. package/dist/lib/schemas-data/3.2/core/reporting-capabilities.json +12 -12
  1258. package/dist/lib/schemas-data/3.2/core/reporting-consumer-status.json +1 -1
  1259. package/dist/lib/schemas-data/3.2/core/reporting-control-total.json +1 -1
  1260. package/dist/lib/schemas-data/3.2/core/reporting-coverage.json +1 -1
  1261. package/dist/lib/schemas-data/3.2/core/reporting-dataset-share-destination.json +1 -1
  1262. package/dist/lib/schemas-data/3.2/core/reporting-delivery-capabilities.json +3 -3
  1263. package/dist/lib/schemas-data/3.2/core/reporting-delivery-config-state.json +4 -4
  1264. package/dist/lib/schemas-data/3.2/core/reporting-delivery-config.json +7 -7
  1265. package/dist/lib/schemas-data/3.2/core/reporting-delivery-method.json +4 -4
  1266. package/dist/lib/schemas-data/3.2/core/reporting-delivery-offering-id.json +1 -1
  1267. package/dist/lib/schemas-data/3.2/core/reporting-delivery-offering.json +8 -8
  1268. package/dist/lib/schemas-data/3.2/core/reporting-delivery-ready-webhook.json +3 -3
  1269. package/dist/lib/schemas-data/3.2/core/reporting-file-compression.json +1 -1
  1270. package/dist/lib/schemas-data/3.2/core/reporting-file-entry.json +3 -3
  1271. package/dist/lib/schemas-data/3.2/core/reporting-file-manifest.json +4 -4
  1272. package/dist/lib/schemas-data/3.2/core/reporting-file-object-ref.json +1 -1
  1273. package/dist/lib/schemas-data/3.2/core/reporting-ledger-changed-webhook.json +3 -3
  1274. package/dist/lib/schemas-data/3.2/core/reporting-materialization.json +4 -4
  1275. package/dist/lib/schemas-data/3.2/core/reporting-native-version-ref.json +1 -1
  1276. package/dist/lib/schemas-data/3.2/core/reporting-obligation.json +9 -9
  1277. package/dist/lib/schemas-data/3.2/core/reporting-receipt.json +5 -5
  1278. package/dist/lib/schemas-data/3.2/core/reporting-reconciliation-mode.json +1 -1
  1279. package/dist/lib/schemas-data/3.2/core/reporting-reliability-statistics.json +1 -1
  1280. package/dist/lib/schemas-data/3.2/core/reporting-report-definition.json +1 -1
  1281. package/dist/lib/schemas-data/3.2/core/reporting-resource.json +2 -2
  1282. package/dist/lib/schemas-data/3.2/core/reporting-revision.json +6 -6
  1283. package/dist/lib/schemas-data/3.2/core/reporting-schedule-offering.json +2 -2
  1284. package/dist/lib/schemas-data/3.2/core/reporting-schedule.json +1 -1
  1285. package/dist/lib/schemas-data/3.2/core/reporting-status-changed-webhook.json +5 -5
  1286. package/dist/lib/schemas-data/3.2/core/reporting-status-issue.json +4 -4
  1287. package/dist/lib/schemas-data/3.2/core/reporting-verification-profile-set.json +1 -1
  1288. package/dist/lib/schemas-data/3.2/core/reporting-verification-profile.json +1 -1
  1289. package/dist/lib/schemas-data/3.2/core/reporting-verification.json +7 -7
  1290. package/dist/lib/schemas-data/3.2/core/reporting-webhook.json +3 -3
  1291. package/dist/lib/schemas-data/3.2/core/reporting-write-destination.json +1 -1
  1292. package/dist/lib/schemas-data/3.2/core/representation-destination.json +5 -5
  1293. package/dist/lib/schemas-data/3.2/core/representation-rejection.json +1 -1
  1294. package/dist/lib/schemas-data/3.2/core/representation-selection.json +5 -5
  1295. package/dist/lib/schemas-data/3.2/core/requirements/asset-requirements.json +13 -13
  1296. package/dist/lib/schemas-data/3.2/core/requirements/audio-asset-requirements.json +1 -1
  1297. package/dist/lib/schemas-data/3.2/core/requirements/catalog-field-binding.json +4 -4
  1298. package/dist/lib/schemas-data/3.2/core/requirements/catalog-requirements.json +5 -5
  1299. package/dist/lib/schemas-data/3.2/core/requirements/css-asset-requirements.json +1 -1
  1300. package/dist/lib/schemas-data/3.2/core/requirements/daast-asset-requirements.json +3 -3
  1301. package/dist/lib/schemas-data/3.2/core/requirements/html-asset-requirements.json +1 -1
  1302. package/dist/lib/schemas-data/3.2/core/requirements/image-asset-requirements.json +2 -2
  1303. package/dist/lib/schemas-data/3.2/core/requirements/javascript-asset-requirements.json +1 -1
  1304. package/dist/lib/schemas-data/3.2/core/requirements/markdown-asset-requirements.json +1 -1
  1305. package/dist/lib/schemas-data/3.2/core/requirements/offering-asset-constraint.json +4 -4
  1306. package/dist/lib/schemas-data/3.2/core/requirements/text-asset-requirements.json +1 -1
  1307. package/dist/lib/schemas-data/3.2/core/requirements/url-asset-requirements.json +1 -1
  1308. package/dist/lib/schemas-data/3.2/core/requirements/vast-asset-requirements.json +4 -4
  1309. package/dist/lib/schemas-data/3.2/core/requirements/video-asset-requirements.json +6 -6
  1310. package/dist/lib/schemas-data/3.2/core/requirements/webhook-asset-requirements.json +1 -1
  1311. package/dist/lib/schemas-data/3.2/core/response-payload-jws-envelope.json +1 -1
  1312. package/dist/lib/schemas-data/3.2/core/response.json +1 -1
  1313. package/dist/lib/schemas-data/3.2/core/rights-attestation-evaluation.json +5 -5
  1314. package/dist/lib/schemas-data/3.2/core/rights-constraint.json +7 -7
  1315. package/dist/lib/schemas-data/3.2/core/seller-agent-ref.json +1 -1
  1316. package/dist/lib/schemas-data/3.2/core/signal-coverage-forecast.json +5 -5
  1317. package/dist/lib/schemas-data/3.2/core/signal-definition-enrichment.json +5 -5
  1318. package/dist/lib/schemas-data/3.2/core/signal-definition.json +8 -8
  1319. package/dist/lib/schemas-data/3.2/core/signal-filters.json +3 -3
  1320. package/dist/lib/schemas-data/3.2/core/signal-id.json +1 -1
  1321. package/dist/lib/schemas-data/3.2/core/signal-listing.json +6 -6
  1322. package/dist/lib/schemas-data/3.2/core/signal-modeling-disclosure.json +1 -1
  1323. package/dist/lib/schemas-data/3.2/core/signal-pricing-option.json +2 -2
  1324. package/dist/lib/schemas-data/3.2/core/signal-pricing.json +6 -6
  1325. package/dist/lib/schemas-data/3.2/core/signal-ref.json +1 -1
  1326. package/dist/lib/schemas-data/3.2/core/signal-selection-group-rule.json +1 -1
  1327. package/dist/lib/schemas-data/3.2/core/signal-targeting-expression.json +4 -4
  1328. package/dist/lib/schemas-data/3.2/core/signal-targeting-rules.json +2 -2
  1329. package/dist/lib/schemas-data/3.2/core/signal-targeting.json +7 -7
  1330. package/dist/lib/schemas-data/3.2/core/sla-window.json +1 -1
  1331. package/dist/lib/schemas-data/3.2/core/special.json +2 -2
  1332. package/dist/lib/schemas-data/3.2/core/spot-reporting-capability.json +2 -2
  1333. package/dist/lib/schemas-data/3.2/core/start-timing.json +1 -1
  1334. package/dist/lib/schemas-data/3.2/core/store-item.json +3 -3
  1335. package/dist/lib/schemas-data/3.2/core/talent.json +2 -2
  1336. package/dist/lib/schemas-data/3.2/core/targeting-input.json +40 -40
  1337. package/dist/lib/schemas-data/3.2/core/targeting-modification.json +3 -3
  1338. package/dist/lib/schemas-data/3.2/core/targeting-overlay-requirements.json +15 -15
  1339. package/dist/lib/schemas-data/3.2/core/targeting-overlay-support.json +25 -25
  1340. package/dist/lib/schemas-data/3.2/core/targeting-unknown-age-eligibility-constraint.json +1 -1
  1341. package/dist/lib/schemas-data/3.2/core/targeting-verified-age-basis-constraint.json +1 -1
  1342. package/dist/lib/schemas-data/3.2/core/targeting.json +34 -34
  1343. package/dist/lib/schemas-data/3.2/core/tasks-get-request.json +5 -5
  1344. package/dist/lib/schemas-data/3.2/core/tasks-get-response.json +10 -10
  1345. package/dist/lib/schemas-data/3.2/core/tasks-list-request.json +13 -13
  1346. package/dist/lib/schemas-data/3.2/core/tasks-list-response.json +8 -8
  1347. package/dist/lib/schemas-data/3.2/core/tracker-execution-contract.json +2 -2
  1348. package/dist/lib/schemas-data/3.2/core/tracker-execution-selector.json +18 -18
  1349. package/dist/lib/schemas-data/3.2/core/transformer-param.json +1 -1
  1350. package/dist/lib/schemas-data/3.2/core/transformer.json +6 -6
  1351. package/dist/lib/schemas-data/3.2/core/truncation-sentinel.json +1 -1
  1352. package/dist/lib/schemas-data/3.2/core/user-match.json +3 -3
  1353. package/dist/lib/schemas-data/3.2/core/vast-media-file-requirements.json +2 -2
  1354. package/dist/lib/schemas-data/3.2/core/vast-tracker-constraints.json +2 -2
  1355. package/dist/lib/schemas-data/3.2/core/vehicle-item.json +4 -4
  1356. package/dist/lib/schemas-data/3.2/core/vendor-metric-id.json +1 -1
  1357. package/dist/lib/schemas-data/3.2/core/vendor-metric-optimization-supported-metric.json +3 -3
  1358. package/dist/lib/schemas-data/3.2/core/vendor-metric-optimization.json +2 -2
  1359. package/dist/lib/schemas-data/3.2/core/vendor-metric-value.json +9 -9
  1360. package/dist/lib/schemas-data/3.2/core/vendor-pricing-option.json +3 -3
  1361. package/dist/lib/schemas-data/3.2/core/verification-token-claims.json +1 -1
  1362. package/dist/lib/schemas-data/3.2/core/version-envelope.json +1 -1
  1363. package/dist/lib/schemas-data/3.2/core/warning-resource.json +1 -1
  1364. package/dist/lib/schemas-data/3.2/core/warning.json +4 -4
  1365. package/dist/lib/schemas-data/3.2/core/webhook-activity-record.json +3 -3
  1366. package/dist/lib/schemas-data/3.2/core/webhook-challenge-response.json +1 -1
  1367. package/dist/lib/schemas-data/3.2/core/webhook-challenge.json +2 -2
  1368. package/dist/lib/schemas-data/3.2/core/wholesale-feed-event.json +20 -20
  1369. package/dist/lib/schemas-data/3.2/core/wholesale-feed-webhook.json +3 -3
  1370. package/dist/lib/schemas-data/3.2/core/x-entity-types.json +1 -1
  1371. package/dist/lib/schemas-data/3.2/creative/asset-types/index.json +6 -6
  1372. package/dist/lib/schemas-data/3.2/creative/audit-observation.json +2 -2
  1373. package/dist/lib/schemas-data/3.2/creative/creative-assignment-changed-webhook.json +2 -2
  1374. package/dist/lib/schemas-data/3.2/creative/creative-feature-result.json +2 -2
  1375. package/dist/lib/schemas-data/3.2/creative/creative-purged-webhook.json +3 -3
  1376. package/dist/lib/schemas-data/3.2/creative/creative-status-changed-webhook.json +5 -5
  1377. package/dist/lib/schemas-data/3.2/creative/get-creative-delivery-request.json +6 -6
  1378. package/dist/lib/schemas-data/3.2/creative/get-creative-delivery-response.json +11 -11
  1379. package/dist/lib/schemas-data/3.2/creative/get-creative-features-async-response-submitted.json +3 -3
  1380. package/dist/lib/schemas-data/3.2/creative/get-creative-features-request.json +7 -7
  1381. package/dist/lib/schemas-data/3.2/creative/get-creative-features-response.json +9 -9
  1382. package/dist/lib/schemas-data/3.2/creative/get-creative-features-terminal-success.json +6 -6
  1383. package/dist/lib/schemas-data/3.2/creative/list-creative-formats-request.json +13 -13
  1384. package/dist/lib/schemas-data/3.2/creative/list-creative-formats-response.json +9 -9
  1385. package/dist/lib/schemas-data/3.2/creative/list-creatives-request.json +9 -9
  1386. package/dist/lib/schemas-data/3.2/creative/list-creatives-response.json +34 -34
  1387. package/dist/lib/schemas-data/3.2/creative/list-transformers-request.json +9 -9
  1388. package/dist/lib/schemas-data/3.2/creative/list-transformers-response.json +8 -8
  1389. package/dist/lib/schemas-data/3.2/creative/preview-creative-request.json +13 -13
  1390. package/dist/lib/schemas-data/3.2/creative/preview-creative-response.json +18 -18
  1391. package/dist/lib/schemas-data/3.2/creative/preview-render.json +4 -4
  1392. package/dist/lib/schemas-data/3.2/creative/sync-creatives-async-response-input-required.json +3 -3
  1393. package/dist/lib/schemas-data/3.2/creative/sync-creatives-async-response-submitted.json +4 -4
  1394. package/dist/lib/schemas-data/3.2/creative/sync-creatives-async-response-working.json +3 -3
  1395. package/dist/lib/schemas-data/3.2/creative/sync-creatives-request.json +10 -10
  1396. package/dist/lib/schemas-data/3.2/creative/sync-creatives-response.json +18 -18
  1397. package/dist/lib/schemas-data/3.2/creative/validate-input-request.json +4 -4
  1398. package/dist/lib/schemas-data/3.2/creative/validate-input-response.json +4 -4
  1399. package/dist/lib/schemas-data/3.2/creative/validate-input-result.json +2 -2
  1400. package/dist/lib/schemas-data/3.2/creative/video-brief.json +1 -1
  1401. package/dist/lib/schemas-data/3.2/enums/account-currency-mode.json +1 -1
  1402. package/dist/lib/schemas-data/3.2/enums/account-scope.json +1 -1
  1403. package/dist/lib/schemas-data/3.2/enums/account-status.json +1 -1
  1404. package/dist/lib/schemas-data/3.2/enums/action-not-allowed-reason.json +1 -1
  1405. package/dist/lib/schemas-data/3.2/enums/action-source.json +1 -1
  1406. package/dist/lib/schemas-data/3.2/enums/activation-method.json +1 -1
  1407. package/dist/lib/schemas-data/3.2/enums/adcp-protocol.json +1 -1
  1408. package/dist/lib/schemas-data/3.2/enums/adjustment-kind.json +1 -1
  1409. package/dist/lib/schemas-data/3.2/enums/advertiser-industry.json +1 -1
  1410. package/dist/lib/schemas-data/3.2/enums/age-determination-basis.json +1 -1
  1411. package/dist/lib/schemas-data/3.2/enums/age-verification-method.json +1 -1
  1412. package/dist/lib/schemas-data/3.2/enums/assessment-status.json +1 -1
  1413. package/dist/lib/schemas-data/3.2/enums/asset-content-type.json +1 -1
  1414. package/dist/lib/schemas-data/3.2/enums/attestation-claim.json +1 -1
  1415. package/dist/lib/schemas-data/3.2/enums/attribution-methodology.json +1 -1
  1416. package/dist/lib/schemas-data/3.2/enums/attribution-model.json +1 -1
  1417. package/dist/lib/schemas-data/3.2/enums/audience-evidence-methodology.json +1 -1
  1418. package/dist/lib/schemas-data/3.2/enums/audience-resolution-method.json +1 -1
  1419. package/dist/lib/schemas-data/3.2/enums/audience-source.json +1 -1
  1420. package/dist/lib/schemas-data/3.2/enums/audience-status.json +1 -1
  1421. package/dist/lib/schemas-data/3.2/enums/audience-subject-type.json +1 -1
  1422. package/dist/lib/schemas-data/3.2/enums/audio-channel-layout.json +1 -1
  1423. package/dist/lib/schemas-data/3.2/enums/audio-distribution-type.json +1 -1
  1424. package/dist/lib/schemas-data/3.2/enums/auth-scheme.json +1 -1
  1425. package/dist/lib/schemas-data/3.2/enums/availability-status.json +1 -1
  1426. package/dist/lib/schemas-data/3.2/enums/available-metric.json +1 -1
  1427. package/dist/lib/schemas-data/3.2/enums/billing-party.json +1 -1
  1428. package/dist/lib/schemas-data/3.2/enums/binary-verdict.json +1 -1
  1429. package/dist/lib/schemas-data/3.2/enums/brand-agent-type.json +1 -1
  1430. package/dist/lib/schemas-data/3.2/enums/browser-family.json +1 -1
  1431. package/dist/lib/schemas-data/3.2/enums/c2pa-watermark-action.json +1 -1
  1432. package/dist/lib/schemas-data/3.2/enums/canceled-by.json +1 -1
  1433. package/dist/lib/schemas-data/3.2/enums/canonical-media-buy-action-mode.json +1 -1
  1434. package/dist/lib/schemas-data/3.2/enums/canonical-media-buy-action.json +1 -1
  1435. package/dist/lib/schemas-data/3.2/enums/catalog-action.json +1 -1
  1436. package/dist/lib/schemas-data/3.2/enums/catalog-item-status.json +1 -1
  1437. package/dist/lib/schemas-data/3.2/enums/catalog-type.json +1 -1
  1438. package/dist/lib/schemas-data/3.2/enums/channels.json +1 -1
  1439. package/dist/lib/schemas-data/3.2/enums/cloud-storage-protocol.json +1 -1
  1440. package/dist/lib/schemas-data/3.2/enums/co-branding-requirement.json +1 -1
  1441. package/dist/lib/schemas-data/3.2/enums/collection-cadence.json +1 -1
  1442. package/dist/lib/schemas-data/3.2/enums/collection-kind.json +1 -1
  1443. package/dist/lib/schemas-data/3.2/enums/collection-relationship.json +1 -1
  1444. package/dist/lib/schemas-data/3.2/enums/collection-status.json +1 -1
  1445. package/dist/lib/schemas-data/3.2/enums/completion-source.json +1 -1
  1446. package/dist/lib/schemas-data/3.2/enums/consent-basis.json +1 -1
  1447. package/dist/lib/schemas-data/3.2/enums/content-id-type.json +1 -1
  1448. package/dist/lib/schemas-data/3.2/enums/content-rating-system.json +1 -1
  1449. package/dist/lib/schemas-data/3.2/enums/creative-action.json +1 -1
  1450. package/dist/lib/schemas-data/3.2/enums/creative-agent-capability.json +1 -1
  1451. package/dist/lib/schemas-data/3.2/enums/creative-approval-status.json +1 -1
  1452. package/dist/lib/schemas-data/3.2/enums/creative-event-reason-code.json +1 -1
  1453. package/dist/lib/schemas-data/3.2/enums/creative-identifier-type.json +1 -1
  1454. package/dist/lib/schemas-data/3.2/enums/creative-quality.json +1 -1
  1455. package/dist/lib/schemas-data/3.2/enums/creative-selection-strategy.json +1 -1
  1456. package/dist/lib/schemas-data/3.2/enums/creative-sort-field.json +1 -1
  1457. package/dist/lib/schemas-data/3.2/enums/creative-status.json +1 -1
  1458. package/dist/lib/schemas-data/3.2/enums/ctv-ad-experience.json +1 -1
  1459. package/dist/lib/schemas-data/3.2/enums/daast-tracking-event.json +1 -1
  1460. package/dist/lib/schemas-data/3.2/enums/daast-version.json +1 -1
  1461. package/dist/lib/schemas-data/3.2/enums/day-of-week.json +1 -1
  1462. package/dist/lib/schemas-data/3.2/enums/daypart-timezone-mode.json +1 -1
  1463. package/dist/lib/schemas-data/3.2/enums/delegation-authority.json +1 -1
  1464. package/dist/lib/schemas-data/3.2/enums/delivery-recipient-cloud.json +1 -1
  1465. package/dist/lib/schemas-data/3.2/enums/delivery-status.json +1 -1
  1466. package/dist/lib/schemas-data/3.2/enums/delivery-type.json +1 -1
  1467. package/dist/lib/schemas-data/3.2/enums/demographic-system.json +1 -1
  1468. package/dist/lib/schemas-data/3.2/enums/derivative-type.json +1 -1
  1469. package/dist/lib/schemas-data/3.2/enums/device-platform.json +1 -1
  1470. package/dist/lib/schemas-data/3.2/enums/device-type.json +1 -1
  1471. package/dist/lib/schemas-data/3.2/enums/digital-source-type.json +1 -1
  1472. package/dist/lib/schemas-data/3.2/enums/dimension-unit.json +1 -1
  1473. package/dist/lib/schemas-data/3.2/enums/disclosure-persistence.json +1 -1
  1474. package/dist/lib/schemas-data/3.2/enums/disclosure-position.json +1 -1
  1475. package/dist/lib/schemas-data/3.2/enums/distance-unit.json +1 -1
  1476. package/dist/lib/schemas-data/3.2/enums/distribution-identifier-type.json +1 -1
  1477. package/dist/lib/schemas-data/3.2/enums/dooh-motion-type.json +1 -1
  1478. package/dist/lib/schemas-data/3.2/enums/embedded-provenance-method.json +1 -1
  1479. package/dist/lib/schemas-data/3.2/enums/error-code.json +1 -1
  1480. package/dist/lib/schemas-data/3.2/enums/error-scope.json +1 -1
  1481. package/dist/lib/schemas-data/3.2/enums/escalation-severity.json +1 -1
  1482. package/dist/lib/schemas-data/3.2/enums/event-type.json +1 -1
  1483. package/dist/lib/schemas-data/3.2/enums/exclusivity.json +1 -1
  1484. package/dist/lib/schemas-data/3.2/enums/feature-check-status.json +1 -1
  1485. package/dist/lib/schemas-data/3.2/enums/feed-format.json +1 -1
  1486. package/dist/lib/schemas-data/3.2/enums/feedback-source.json +1 -1
  1487. package/dist/lib/schemas-data/3.2/enums/forecast-method.json +1 -1
  1488. package/dist/lib/schemas-data/3.2/enums/forecast-range-unit.json +1 -1
  1489. package/dist/lib/schemas-data/3.2/enums/forecastable-metric.json +1 -1
  1490. package/dist/lib/schemas-data/3.2/enums/format-id-parameter.json +1 -1
  1491. package/dist/lib/schemas-data/3.2/enums/frame-rate-type.json +1 -1
  1492. package/dist/lib/schemas-data/3.2/enums/frequency-cap-control-mode.json +1 -1
  1493. package/dist/lib/schemas-data/3.2/enums/frequency-cap-mutable-field.json +1 -1
  1494. package/dist/lib/schemas-data/3.2/enums/frequency-cap-scope.json +1 -1
  1495. package/dist/lib/schemas-data/3.2/enums/genre-taxonomy.json +1 -1
  1496. package/dist/lib/schemas-data/3.2/enums/geo-level.json +1 -1
  1497. package/dist/lib/schemas-data/3.2/enums/gop-type.json +1 -1
  1498. package/dist/lib/schemas-data/3.2/enums/governance-decision.json +1 -1
  1499. package/dist/lib/schemas-data/3.2/enums/governance-domain.json +1 -1
  1500. package/dist/lib/schemas-data/3.2/enums/governance-mode.json +1 -1
  1501. package/dist/lib/schemas-data/3.2/enums/governance-phase.json +1 -1
  1502. package/dist/lib/schemas-data/3.2/enums/history-entry-type.json +1 -1
  1503. package/dist/lib/schemas-data/3.2/enums/http-method.json +1 -1
  1504. package/dist/lib/schemas-data/3.2/enums/identifier-types.json +1 -1
  1505. package/dist/lib/schemas-data/3.2/enums/impairment-offline-state.json +1 -1
  1506. package/dist/lib/schemas-data/3.2/enums/impairment-reason-code.json +1 -1
  1507. package/dist/lib/schemas-data/3.2/enums/indicator-type.json +1 -1
  1508. package/dist/lib/schemas-data/3.2/enums/installment-status.json +1 -1
  1509. package/dist/lib/schemas-data/3.2/enums/javascript-module-type.json +1 -1
  1510. package/dist/lib/schemas-data/3.2/enums/landing-page-requirement.json +1 -1
  1511. package/dist/lib/schemas-data/3.2/enums/legacy-postal-system.json +1 -1
  1512. package/dist/lib/schemas-data/3.2/enums/lift-dimension.json +1 -1
  1513. package/dist/lib/schemas-data/3.2/enums/logo-slot.json +1 -1
  1514. package/dist/lib/schemas-data/3.2/enums/macro-dialect.json +1 -1
  1515. package/dist/lib/schemas-data/3.2/enums/macro-mapping-status.json +1 -1
  1516. package/dist/lib/schemas-data/3.2/enums/macro-processing-operation.json +1 -1
  1517. package/dist/lib/schemas-data/3.2/enums/macro-resolution-reason.json +1 -1
  1518. package/dist/lib/schemas-data/3.2/enums/macro-resolver.json +1 -1
  1519. package/dist/lib/schemas-data/3.2/enums/macro-value-context.json +1 -1
  1520. package/dist/lib/schemas-data/3.2/enums/makegood-remedy.json +1 -1
  1521. package/dist/lib/schemas-data/3.2/enums/markdown-flavor.json +1 -1
  1522. package/dist/lib/schemas-data/3.2/enums/match-id-type.json +1 -1
  1523. package/dist/lib/schemas-data/3.2/enums/match-type.json +1 -1
  1524. package/dist/lib/schemas-data/3.2/enums/media-buy-action-mode.json +1 -1
  1525. package/dist/lib/schemas-data/3.2/enums/media-buy-frequency-cap-control-mode.json +1 -1
  1526. package/dist/lib/schemas-data/3.2/enums/media-buy-health.json +1 -1
  1527. package/dist/lib/schemas-data/3.2/enums/media-buy-status.json +1 -1
  1528. package/dist/lib/schemas-data/3.2/enums/media-buy-valid-action.json +1 -1
  1529. package/dist/lib/schemas-data/3.2/enums/metric-scope.json +1 -1
  1530. package/dist/lib/schemas-data/3.2/enums/metric-type.json +1 -1
  1531. package/dist/lib/schemas-data/3.2/enums/metro-system.json +1 -1
  1532. package/dist/lib/schemas-data/3.2/enums/moov-atom-position.json +1 -1
  1533. package/dist/lib/schemas-data/3.2/enums/motion-level.json +1 -1
  1534. package/dist/lib/schemas-data/3.2/enums/notification-type.json +1 -1
  1535. package/dist/lib/schemas-data/3.2/enums/offering-availability-status.json +1 -1
  1536. package/dist/lib/schemas-data/3.2/enums/outcome-target-cost-strength.json +1 -1
  1537. package/dist/lib/schemas-data/3.2/enums/outcome-type.json +1 -1
  1538. package/dist/lib/schemas-data/3.2/enums/pacing.json +1 -1
  1539. package/dist/lib/schemas-data/3.2/enums/payment-terms.json +1 -1
  1540. package/dist/lib/schemas-data/3.2/enums/performance-baseline.json +1 -1
  1541. package/dist/lib/schemas-data/3.2/enums/performance-standard-metric.json +1 -1
  1542. package/dist/lib/schemas-data/3.2/enums/pixel-tracking-event.json +1 -1
  1543. package/dist/lib/schemas-data/3.2/enums/policy-category.json +1 -1
  1544. package/dist/lib/schemas-data/3.2/enums/policy-enforcement.json +1 -1
  1545. package/dist/lib/schemas-data/3.2/enums/postal-system.json +1 -1
  1546. package/dist/lib/schemas-data/3.2/enums/preview-output-format.json +1 -1
  1547. package/dist/lib/schemas-data/3.2/enums/pricing-model.json +1 -1
  1548. package/dist/lib/schemas-data/3.2/enums/pricing-structure.json +1 -1
  1549. package/dist/lib/schemas-data/3.2/enums/principal-kind.json +1 -1
  1550. package/dist/lib/schemas-data/3.2/enums/production-quality.json +1 -1
  1551. package/dist/lib/schemas-data/3.2/enums/property-type.json +1 -1
  1552. package/dist/lib/schemas-data/3.2/enums/proposal-decline-reason.json +1 -1
  1553. package/dist/lib/schemas-data/3.2/enums/proposal-refinement-reason.json +1 -1
  1554. package/dist/lib/schemas-data/3.2/enums/proposal-status.json +1 -1
  1555. package/dist/lib/schemas-data/3.2/enums/publisher-identifier-types.json +1 -1
  1556. package/dist/lib/schemas-data/3.2/enums/purchase-type.json +1 -1
  1557. package/dist/lib/schemas-data/3.2/enums/reach-aggregation.json +1 -1
  1558. package/dist/lib/schemas-data/3.2/enums/reach-unit.json +1 -1
  1559. package/dist/lib/schemas-data/3.2/enums/reporting-destination-setup-state.json +1 -1
  1560. package/dist/lib/schemas-data/3.2/enums/reporting-finality.json +1 -1
  1561. package/dist/lib/schemas-data/3.2/enums/reporting-frequency.json +1 -1
  1562. package/dist/lib/schemas-data/3.2/enums/reporting-health.json +1 -1
  1563. package/dist/lib/schemas-data/3.2/enums/representation-selection-strategy.json +1 -1
  1564. package/dist/lib/schemas-data/3.2/enums/request-signing-error-code.json +1 -1
  1565. package/dist/lib/schemas-data/3.2/enums/response-type.json +1 -1
  1566. package/dist/lib/schemas-data/3.2/enums/restricted-attribute.json +1 -1
  1567. package/dist/lib/schemas-data/3.2/enums/right-type.json +1 -1
  1568. package/dist/lib/schemas-data/3.2/enums/right-use.json +1 -1
  1569. package/dist/lib/schemas-data/3.2/enums/rights-billing-period.json +1 -1
  1570. package/dist/lib/schemas-data/3.2/enums/scan-type.json +1 -1
  1571. package/dist/lib/schemas-data/3.2/enums/seller-policy-decline-reason.json +1 -1
  1572. package/dist/lib/schemas-data/3.2/enums/si-session-status.json +1 -1
  1573. package/dist/lib/schemas-data/3.2/enums/signal-catalog-type.json +1 -1
  1574. package/dist/lib/schemas-data/3.2/enums/signal-source.json +1 -1
  1575. package/dist/lib/schemas-data/3.2/enums/signal-value-type.json +1 -1
  1576. package/dist/lib/schemas-data/3.2/enums/snapshot-unavailable-reason.json +1 -1
  1577. package/dist/lib/schemas-data/3.2/enums/social-placement-surface.json +1 -1
  1578. package/dist/lib/schemas-data/3.2/enums/sort-direction.json +1 -1
  1579. package/dist/lib/schemas-data/3.2/enums/sort-metric.json +1 -1
  1580. package/dist/lib/schemas-data/3.2/enums/special-category.json +1 -1
  1581. package/dist/lib/schemas-data/3.2/enums/specialism.json +1 -1
  1582. package/dist/lib/schemas-data/3.2/enums/sponsored-placement-type.json +1 -1
  1583. package/dist/lib/schemas-data/3.2/enums/talent-role.json +1 -1
  1584. package/dist/lib/schemas-data/3.2/enums/task-status.json +1 -1
  1585. package/dist/lib/schemas-data/3.2/enums/task-type.json +1 -1
  1586. package/dist/lib/schemas-data/3.2/enums/tracker-execution-actor.json +1 -1
  1587. package/dist/lib/schemas-data/3.2/enums/tracker-firing-path.json +1 -1
  1588. package/dist/lib/schemas-data/3.2/enums/transport-mode.json +1 -1
  1589. package/dist/lib/schemas-data/3.2/enums/travel-time-unit.json +1 -1
  1590. package/dist/lib/schemas-data/3.2/enums/uid-type.json +1 -1
  1591. package/dist/lib/schemas-data/3.2/enums/universal-macro.json +1 -1
  1592. package/dist/lib/schemas-data/3.2/enums/update-frequency.json +1 -1
  1593. package/dist/lib/schemas-data/3.2/enums/url-asset-type.json +1 -1
  1594. package/dist/lib/schemas-data/3.2/enums/validation-mode.json +1 -1
  1595. package/dist/lib/schemas-data/3.2/enums/vast-media-delivery-method.json +1 -1
  1596. package/dist/lib/schemas-data/3.2/enums/vast-tracking-event.json +1 -1
  1597. package/dist/lib/schemas-data/3.2/enums/vast-version.json +1 -1
  1598. package/dist/lib/schemas-data/3.2/enums/vendor-relationship.json +1 -1
  1599. package/dist/lib/schemas-data/3.2/enums/video-placement-type.json +1 -1
  1600. package/dist/lib/schemas-data/3.2/enums/view-threshold-basis.json +1 -1
  1601. package/dist/lib/schemas-data/3.2/enums/viewability-standard.json +1 -1
  1602. package/dist/lib/schemas-data/3.2/enums/warning-code.json +1 -1
  1603. package/dist/lib/schemas-data/3.2/enums/watermark-media-type.json +1 -1
  1604. package/dist/lib/schemas-data/3.2/enums/wcag-level.json +1 -1
  1605. package/dist/lib/schemas-data/3.2/enums/webhook-response-type.json +1 -1
  1606. package/dist/lib/schemas-data/3.2/enums/webhook-security-method.json +1 -1
  1607. package/dist/lib/schemas-data/3.2/error-details/accessibility-violation.json +1 -1
  1608. package/dist/lib/schemas-data/3.2/error-details/account-moved.json +2 -2
  1609. package/dist/lib/schemas-data/3.2/error-details/account-setup-required.json +1 -1
  1610. package/dist/lib/schemas-data/3.2/error-details/action-not-allowed.json +5 -5
  1611. package/dist/lib/schemas-data/3.2/error-details/agent-permission-denied.json +1 -1
  1612. package/dist/lib/schemas-data/3.2/error-details/audience-too-small.json +1 -1
  1613. package/dist/lib/schemas-data/3.2/error-details/authorization-required.json +3 -3
  1614. package/dist/lib/schemas-data/3.2/error-details/billing-not-permitted-for-agent.json +3 -3
  1615. package/dist/lib/schemas-data/3.2/error-details/billing-not-supported.json +2 -2
  1616. package/dist/lib/schemas-data/3.2/error-details/budget-too-low.json +1 -1
  1617. package/dist/lib/schemas-data/3.2/error-details/conflict.json +1 -1
  1618. package/dist/lib/schemas-data/3.2/error-details/creative-rejected.json +1 -1
  1619. package/dist/lib/schemas-data/3.2/error-details/creative-representation-unresolved.json +2 -2
  1620. package/dist/lib/schemas-data/3.2/error-details/creative-revision-content-mismatch.json +2 -2
  1621. package/dist/lib/schemas-data/3.2/error-details/execution-requirement-unmet.json +2 -2
  1622. package/dist/lib/schemas-data/3.2/error-details/governance-agent-not-accepted.json +2 -2
  1623. package/dist/lib/schemas-data/3.2/error-details/macro-resolution-failed.json +2 -2
  1624. package/dist/lib/schemas-data/3.2/error-details/policy-violation.json +1 -1
  1625. package/dist/lib/schemas-data/3.2/error-details/rate-limited.json +1 -1
  1626. package/dist/lib/schemas-data/3.2/error-details/requote-required.json +3 -3
  1627. package/dist/lib/schemas-data/3.2/error-details/stale-response.json +1 -1
  1628. package/dist/lib/schemas-data/3.2/error-details/unsupported-refinement-dimension.json +1 -1
  1629. package/dist/lib/schemas-data/3.2/error-details/vast-version-mismatch.json +6 -6
  1630. package/dist/lib/schemas-data/3.2/error-details/vendor-error-codes.json +1 -1
  1631. package/dist/lib/schemas-data/3.2/error-details/version-unsupported.json +2 -2
  1632. package/dist/lib/schemas-data/3.2/extensions/extension-meta.json +1 -1
  1633. package/dist/lib/schemas-data/3.2/extensions/index.json +2 -2
  1634. package/dist/lib/schemas-data/3.2/formats/canonical/_base.json +5 -5
  1635. package/dist/lib/schemas-data/3.2/formats/canonical/agent_placement.json +2 -2
  1636. package/dist/lib/schemas-data/3.2/formats/canonical/audio_daast.json +4 -4
  1637. package/dist/lib/schemas-data/3.2/formats/canonical/audio_hosted.json +2 -2
  1638. package/dist/lib/schemas-data/3.2/formats/canonical/audio_vast.json +5 -5
  1639. package/dist/lib/schemas-data/3.2/formats/canonical/coordinated_placements.json +18 -18
  1640. package/dist/lib/schemas-data/3.2/formats/canonical/display_tag.json +2 -2
  1641. package/dist/lib/schemas-data/3.2/formats/canonical/html5.json +2 -2
  1642. package/dist/lib/schemas-data/3.2/formats/canonical/image.json +5 -5
  1643. package/dist/lib/schemas-data/3.2/formats/canonical/image_carousel.json +2 -2
  1644. package/dist/lib/schemas-data/3.2/formats/canonical/native_in_feed.json +5 -5
  1645. package/dist/lib/schemas-data/3.2/formats/canonical/responsive_creative.json +2 -2
  1646. package/dist/lib/schemas-data/3.2/formats/canonical/seller_rendered_stateful_display.json +3 -3
  1647. package/dist/lib/schemas-data/3.2/formats/canonical/sponsored_placement.json +4 -4
  1648. package/dist/lib/schemas-data/3.2/formats/canonical/video_hosted.json +3 -3
  1649. package/dist/lib/schemas-data/3.2/formats/canonical/video_vast.json +8 -8
  1650. package/dist/lib/schemas-data/3.2/governance/accepted-governance-agents.json +1 -1
  1651. package/dist/lib/schemas-data/3.2/governance/attribute-definition.json +1 -1
  1652. package/dist/lib/schemas-data/3.2/governance/audience-constraints.json +3 -3
  1653. package/dist/lib/schemas-data/3.2/governance/check-governance-request.json +10 -10
  1654. package/dist/lib/schemas-data/3.2/governance/check-governance-response.json +8 -8
  1655. package/dist/lib/schemas-data/3.2/governance/get-plan-audit-logs-request.json +5 -5
  1656. package/dist/lib/schemas-data/3.2/governance/get-plan-audit-logs-response.json +14 -14
  1657. package/dist/lib/schemas-data/3.2/governance/policy-category-definition.json +2 -2
  1658. package/dist/lib/schemas-data/3.2/governance/policy-entry.json +7 -7
  1659. package/dist/lib/schemas-data/3.2/governance/policy-ref.json +1 -1
  1660. package/dist/lib/schemas-data/3.2/governance/report-plan-adjustment-request.json +4 -4
  1661. package/dist/lib/schemas-data/3.2/governance/report-plan-adjustment-response.json +4 -4
  1662. package/dist/lib/schemas-data/3.2/governance/report-plan-outcome-request.json +8 -8
  1663. package/dist/lib/schemas-data/3.2/governance/report-plan-outcome-response.json +5 -5
  1664. package/dist/lib/schemas-data/3.2/governance/reported-outcome-error.json +1 -1
  1665. package/dist/lib/schemas-data/3.2/governance/sync-plans-request.json +14 -14
  1666. package/dist/lib/schemas-data/3.2/governance/sync-plans-response.json +6 -6
  1667. package/dist/lib/schemas-data/3.2/index.json +639 -639
  1668. package/dist/lib/schemas-data/3.2/manifest.json +3 -3
  1669. package/dist/lib/schemas-data/3.2/manifest.schema.json +1 -1
  1670. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/account/get-account-financials-request.json +30 -30
  1671. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/account/list-account-changes-request.json +29 -29
  1672. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/account/list-accounts-request.json +30 -30
  1673. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/account/report-usage-request.json +30 -30
  1674. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/account/sync-accounts-request.json +93 -93
  1675. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/account/sync-governance-request.json +29 -29
  1676. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/brand/acquire-rights-request.json +36 -36
  1677. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/brand/get-brand-identity-request.json +4 -4
  1678. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/brand/get-rights-request.json +28 -28
  1679. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/brand/search-brands-request.json +26 -26
  1680. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/brand/update-rights-request.json +32 -32
  1681. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/brand/verify-brand-claim-request.json +3 -3
  1682. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/brand/verify-brand-claims-request.json +3 -3
  1683. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/collection/create-collection-list-request.json +46 -46
  1684. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/collection/delete-collection-list-request.json +29 -29
  1685. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/collection/get-collection-list-request.json +29 -29
  1686. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/collection/list-collection-lists-request.json +30 -30
  1687. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/collection/update-collection-list-request.json +46 -46
  1688. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/compliance/comply-test-controller-request.json +1209 -1209
  1689. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/content-standards/calibrate-content-request.json +32 -32
  1690. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/content-standards/create-content-standards-request.json +55 -55
  1691. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/content-standards/get-content-standards-request.json +4 -4
  1692. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/content-standards/get-media-buy-artifacts-request.json +29 -29
  1693. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/content-standards/list-content-standards-request.json +6 -6
  1694. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/content-standards/update-content-standards-request.json +55 -55
  1695. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/content-standards/validate-content-delivery-request.json +32 -32
  1696. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/creative/get-creative-delivery-request.json +30 -30
  1697. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/creative/get-creative-features-request.json +256 -256
  1698. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/creative/list-creatives-request.json +45 -45
  1699. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/creative/list-transformers-request.json +32 -32
  1700. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/creative/preview-creative-request.json +254 -254
  1701. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/creative/sync-creatives-request.json +269 -269
  1702. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/creative/validate-input-request.json +251 -251
  1703. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/governance/check-governance-request.json +377 -377
  1704. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/governance/get-plan-audit-logs-request.json +5 -5
  1705. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/governance/report-plan-adjustment-request.json +4 -4
  1706. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/governance/report-plan-outcome-request.json +86 -86
  1707. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/governance/sync-plans-request.json +62 -62
  1708. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/accept-proposal-request.json +23 -23
  1709. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/build-creative-request.json +446 -446
  1710. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/buy-products-request.json +280 -280
  1711. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/control-media-buy-request.json +212 -212
  1712. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/create-media-buy-request.json +509 -509
  1713. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/decline-proposals-request.json +14 -14
  1714. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/get-media-buy-delivery-request.json +47 -47
  1715. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/get-media-buys-request.json +32 -32
  1716. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/get-products-request.json +336 -336
  1717. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/get-reporting-status-request.json +57 -57
  1718. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/list-creative-formats-request.json +34 -34
  1719. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/list-products-request.json +325 -325
  1720. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/log-event-request.json +22 -22
  1721. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/provide-performance-feedback-request.json +65 -65
  1722. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/refine-proposals-request.json +327 -327
  1723. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/request-proposals-request.json +328 -328
  1724. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/sync-audiences-request.json +37 -37
  1725. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/sync-catalogs-request.json +50 -50
  1726. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/sync-event-sources-request.json +33 -33
  1727. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/sync-reporting-receipts-request.json +22 -22
  1728. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/sync-reporting-status-request.json +12 -12
  1729. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/media-buy/update-media-buy-request.json +518 -518
  1730. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/account/get-account-financials-request.json +30 -30
  1731. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/account/list-accounts-request.json +30 -30
  1732. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/account/report-usage-request.json +30 -30
  1733. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/account/sync-accounts-request.json +93 -93
  1734. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/account/sync-governance-request.json +29 -29
  1735. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/creative/list-creatives-request.json +45 -45
  1736. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/creative/sync-creatives-request.json +269 -269
  1737. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/manifest.json +1 -1
  1738. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/media-buy/accept-proposal-request.json +23 -23
  1739. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/media-buy/buy-products-request.json +280 -280
  1740. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/media-buy/control-media-buy-request.json +212 -212
  1741. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/media-buy/decline-proposals-request.json +14 -14
  1742. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/media-buy/get-media-buy-delivery-request.json +47 -47
  1743. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/media-buy/get-media-buys-request.json +32 -32
  1744. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/media-buy/get-reporting-status-request.json +57 -57
  1745. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/media-buy/list-products-request.json +325 -325
  1746. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/media-buy/log-event-request.json +22 -22
  1747. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/media-buy/provide-performance-feedback-request.json +65 -65
  1748. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/media-buy/refine-proposals-request.json +327 -327
  1749. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/media-buy/request-proposals-request.json +328 -328
  1750. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/media-buy/sync-audiences-request.json +37 -37
  1751. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/media-buy/sync-catalogs-request.json +50 -50
  1752. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/media-buy/sync-event-sources-request.json +33 -33
  1753. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/media-buy/sync-reporting-receipts-request.json +22 -22
  1754. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/media-buy/sync-reporting-status-request.json +12 -12
  1755. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/protocol/get-adcp-capabilities-request.json +4 -4
  1756. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/protocol/get-principal-request.json +4 -4
  1757. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/protocol/get-task-status-request.json +29 -29
  1758. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/protocol/list-tasks-request.json +34 -34
  1759. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/profiles/media-buy/protocol/sync-principal-request.json +27 -27
  1760. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/property/create-property-list-request.json +46 -46
  1761. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/property/delete-property-list-request.json +29 -29
  1762. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/property/get-property-list-request.json +29 -29
  1763. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/property/list-property-lists-request.json +30 -30
  1764. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/property/update-property-list-request.json +46 -46
  1765. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/property/validate-property-delivery-request.json +35 -35
  1766. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/protocol/get-adcp-capabilities-request.json +4 -4
  1767. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/protocol/get-principal-request.json +4 -4
  1768. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/protocol/get-task-status-request.json +29 -29
  1769. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/protocol/list-tasks-request.json +34 -34
  1770. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/protocol/sync-agent-notification-configs-request.json +10 -10
  1771. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/protocol/sync-principal-request.json +27 -27
  1772. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/signals/activate-signal-request.json +30 -30
  1773. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/signals/get-signals-request.json +40 -40
  1774. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/sponsored-intelligence/si-get-offering-request.json +4 -4
  1775. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/sponsored-intelligence/si-initiate-session-request.json +36 -36
  1776. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/sponsored-intelligence/si-send-message-request.json +34 -34
  1777. package/dist/lib/schemas-data/3.2/mcp/2026-07-28/sponsored-intelligence/si-terminate-session-request.json +4 -4
  1778. package/dist/lib/schemas-data/3.2/media-buy/accept-proposal-async-response-input-required.json +2 -2
  1779. package/dist/lib/schemas-data/3.2/media-buy/accept-proposal-async-response-submitted.json +2 -2
  1780. package/dist/lib/schemas-data/3.2/media-buy/accept-proposal-async-response-working.json +2 -2
  1781. package/dist/lib/schemas-data/3.2/media-buy/accept-proposal-request.json +11 -11
  1782. package/dist/lib/schemas-data/3.2/media-buy/accept-proposal-response.json +2 -2
  1783. package/dist/lib/schemas-data/3.2/media-buy/acceptance-context.json +3 -3
  1784. package/dist/lib/schemas-data/3.2/media-buy/acceptance-policy-catalog.json +4 -4
  1785. package/dist/lib/schemas-data/3.2/media-buy/acceptance-policy-profile-ref.json +1 -1
  1786. package/dist/lib/schemas-data/3.2/media-buy/acceptance-policy-profile.json +3 -3
  1787. package/dist/lib/schemas-data/3.2/media-buy/acceptance-policy-requirement.json +3 -3
  1788. package/dist/lib/schemas-data/3.2/media-buy/acceptance-policy-rule.json +3 -3
  1789. package/dist/lib/schemas-data/3.2/media-buy/build-creative-async-response-input-required.json +4 -4
  1790. package/dist/lib/schemas-data/3.2/media-buy/build-creative-async-response-submitted.json +4 -4
  1791. package/dist/lib/schemas-data/3.2/media-buy/build-creative-async-response-working.json +3 -3
  1792. package/dist/lib/schemas-data/3.2/media-buy/build-creative-request.json +19 -19
  1793. package/dist/lib/schemas-data/3.2/media-buy/build-creative-response.json +35 -35
  1794. package/dist/lib/schemas-data/3.2/media-buy/buy-products-async-response-input-required.json +2 -2
  1795. package/dist/lib/schemas-data/3.2/media-buy/buy-products-async-response-submitted.json +2 -2
  1796. package/dist/lib/schemas-data/3.2/media-buy/buy-products-async-response-working.json +2 -2
  1797. package/dist/lib/schemas-data/3.2/media-buy/buy-products-request.json +20 -20
  1798. package/dist/lib/schemas-data/3.2/media-buy/buy-products-response.json +2 -2
  1799. package/dist/lib/schemas-data/3.2/media-buy/change-term-constraints.json +4 -4
  1800. package/dist/lib/schemas-data/3.2/media-buy/change-term.json +6 -6
  1801. package/dist/lib/schemas-data/3.2/media-buy/commercial-terms.json +12 -12
  1802. package/dist/lib/schemas-data/3.2/media-buy/control-media-buy-async-response-input-required.json +2 -2
  1803. package/dist/lib/schemas-data/3.2/media-buy/control-media-buy-async-response-submitted.json +2 -2
  1804. package/dist/lib/schemas-data/3.2/media-buy/control-media-buy-async-response-working.json +2 -2
  1805. package/dist/lib/schemas-data/3.2/media-buy/control-media-buy-request.json +15 -15
  1806. package/dist/lib/schemas-data/3.2/media-buy/control-media-buy-response.json +37 -19
  1807. package/dist/lib/schemas-data/3.2/media-buy/create-media-buy-async-response-input-required.json +4 -4
  1808. package/dist/lib/schemas-data/3.2/media-buy/create-media-buy-async-response-submitted.json +4 -4
  1809. package/dist/lib/schemas-data/3.2/media-buy/create-media-buy-async-response-working.json +3 -3
  1810. package/dist/lib/schemas-data/3.2/media-buy/create-media-buy-request.json +19 -19
  1811. package/dist/lib/schemas-data/3.2/media-buy/create-media-buy-response.json +23 -23
  1812. package/dist/lib/schemas-data/3.2/media-buy/decline-proposals-async-response-input-required.json +2 -2
  1813. package/dist/lib/schemas-data/3.2/media-buy/decline-proposals-async-response-submitted.json +2 -2
  1814. package/dist/lib/schemas-data/3.2/media-buy/decline-proposals-async-response-working.json +2 -2
  1815. package/dist/lib/schemas-data/3.2/media-buy/decline-proposals-request.json +9 -9
  1816. package/dist/lib/schemas-data/3.2/media-buy/decline-proposals-response.json +6 -6
  1817. package/dist/lib/schemas-data/3.2/media-buy/get-media-buy-delivery-request.json +47 -47
  1818. package/dist/lib/schemas-data/3.2/media-buy/get-media-buy-delivery-response.json +81 -81
  1819. package/dist/lib/schemas-data/3.2/media-buy/get-media-buys-request.json +9 -9
  1820. package/dist/lib/schemas-data/3.2/media-buy/get-media-buys-response.json +52 -52
  1821. package/dist/lib/schemas-data/3.2/media-buy/get-products-async-response-input-required.json +4 -4
  1822. package/dist/lib/schemas-data/3.2/media-buy/get-products-async-response-submitted.json +4 -4
  1823. package/dist/lib/schemas-data/3.2/media-buy/get-products-async-response-working.json +3 -3
  1824. package/dist/lib/schemas-data/3.2/media-buy/get-products-rejected.json +5 -5
  1825. package/dist/lib/schemas-data/3.2/media-buy/get-products-request.json +19 -19
  1826. package/dist/lib/schemas-data/3.2/media-buy/get-products-response.json +13 -13
  1827. package/dist/lib/schemas-data/3.2/media-buy/get-products-targeting-resolution.json +3 -3
  1828. package/dist/lib/schemas-data/3.2/media-buy/get-reporting-status-request.json +10 -10
  1829. package/dist/lib/schemas-data/3.2/media-buy/get-reporting-status-response.json +27 -27
  1830. package/dist/lib/schemas-data/3.2/media-buy/legacy-purchase-continuation-input.json +2 -2
  1831. package/dist/lib/schemas-data/3.2/media-buy/list-creative-formats-request.json +14 -14
  1832. package/dist/lib/schemas-data/3.2/media-buy/list-creative-formats-response.json +9 -9
  1833. package/dist/lib/schemas-data/3.2/media-buy/list-products-request.json +11 -11
  1834. package/dist/lib/schemas-data/3.2/media-buy/list-products-response.json +6 -6
  1835. package/dist/lib/schemas-data/3.2/media-buy/log-event-request.json +5 -5
  1836. package/dist/lib/schemas-data/3.2/media-buy/log-event-response.json +8 -8
  1837. package/dist/lib/schemas-data/3.2/media-buy/media-buy-commitment-response.json +38 -20
  1838. package/dist/lib/schemas-data/3.2/media-buy/media-buy-delivery-webhook-result.json +11 -11
  1839. package/dist/lib/schemas-data/3.2/media-buy/outcome-target.json +4 -4
  1840. package/dist/lib/schemas-data/3.2/media-buy/package-control.json +10 -10
  1841. package/dist/lib/schemas-data/3.2/media-buy/package-request.json +31 -31
  1842. package/dist/lib/schemas-data/3.2/media-buy/package-update.json +14 -14
  1843. package/dist/lib/schemas-data/3.2/media-buy/product-discovery-criteria.json +10 -10
  1844. package/dist/lib/schemas-data/3.2/media-buy/product-fields.json +1 -1
  1845. package/dist/lib/schemas-data/3.2/media-buy/product-purchase-input.json +22 -22
  1846. package/dist/lib/schemas-data/3.2/media-buy/product-purchase.json +13 -13
  1847. package/dist/lib/schemas-data/3.2/media-buy/product-refinement.json +1 -1
  1848. package/dist/lib/schemas-data/3.2/media-buy/proposal-budget-constraint.json +1 -1
  1849. package/dist/lib/schemas-data/3.2/media-buy/proposal-decline.json +2 -2
  1850. package/dist/lib/schemas-data/3.2/media-buy/proposal-refinement.json +5 -5
  1851. package/dist/lib/schemas-data/3.2/media-buy/provide-performance-feedback-request.json +5 -5
  1852. package/dist/lib/schemas-data/3.2/media-buy/provide-performance-feedback-response.json +8 -8
  1853. package/dist/lib/schemas-data/3.2/media-buy/refine-proposals-async-response-input-required.json +2 -2
  1854. package/dist/lib/schemas-data/3.2/media-buy/refine-proposals-async-response-submitted.json +2 -2
  1855. package/dist/lib/schemas-data/3.2/media-buy/refine-proposals-async-response-working.json +2 -2
  1856. package/dist/lib/schemas-data/3.2/media-buy/refine-proposals-request.json +8 -8
  1857. package/dist/lib/schemas-data/3.2/media-buy/refine-proposals-response.json +14 -14
  1858. package/dist/lib/schemas-data/3.2/media-buy/request-proposals-async-response-input-required.json +2 -2
  1859. package/dist/lib/schemas-data/3.2/media-buy/request-proposals-async-response-submitted.json +2 -2
  1860. package/dist/lib/schemas-data/3.2/media-buy/request-proposals-async-response-working.json +2 -2
  1861. package/dist/lib/schemas-data/3.2/media-buy/request-proposals-request.json +11 -11
  1862. package/dist/lib/schemas-data/3.2/media-buy/request-proposals-response.json +21 -11
  1863. package/dist/lib/schemas-data/3.2/media-buy/sync-audiences-request.json +9 -9
  1864. package/dist/lib/schemas-data/3.2/media-buy/sync-audiences-response.json +15 -15
  1865. package/dist/lib/schemas-data/3.2/media-buy/sync-catalogs-async-response-input-required.json +3 -3
  1866. package/dist/lib/schemas-data/3.2/media-buy/sync-catalogs-async-response-submitted.json +4 -4
  1867. package/dist/lib/schemas-data/3.2/media-buy/sync-catalogs-async-response-working.json +3 -3
  1868. package/dist/lib/schemas-data/3.2/media-buy/sync-catalogs-request.json +10 -10
  1869. package/dist/lib/schemas-data/3.2/media-buy/sync-catalogs-response.json +20 -20
  1870. package/dist/lib/schemas-data/3.2/media-buy/sync-event-sources-request.json +8 -8
  1871. package/dist/lib/schemas-data/3.2/media-buy/sync-event-sources-response.json +14 -14
  1872. package/dist/lib/schemas-data/3.2/media-buy/sync-reporting-receipts-request.json +9 -9
  1873. package/dist/lib/schemas-data/3.2/media-buy/sync-reporting-receipts-response.json +10 -10
  1874. package/dist/lib/schemas-data/3.2/media-buy/sync-reporting-status-request.json +8 -8
  1875. package/dist/lib/schemas-data/3.2/media-buy/sync-reporting-status-response.json +8 -8
  1876. package/dist/lib/schemas-data/3.2/media-buy/update-media-buy-async-response-input-required.json +3 -3
  1877. package/dist/lib/schemas-data/3.2/media-buy/update-media-buy-async-response-submitted.json +4 -4
  1878. package/dist/lib/schemas-data/3.2/media-buy/update-media-buy-async-response-working.json +3 -3
  1879. package/dist/lib/schemas-data/3.2/media-buy/update-media-buy-request.json +15 -15
  1880. package/dist/lib/schemas-data/3.2/media-buy/update-media-buy-response.json +21 -21
  1881. package/dist/lib/schemas-data/3.2/pricing-options/cpa-option.json +4 -4
  1882. package/dist/lib/schemas-data/3.2/pricing-options/cpc-option.json +4 -4
  1883. package/dist/lib/schemas-data/3.2/pricing-options/cpcv-option.json +4 -4
  1884. package/dist/lib/schemas-data/3.2/pricing-options/cpm-option.json +4 -4
  1885. package/dist/lib/schemas-data/3.2/pricing-options/cpp-option.json +5 -5
  1886. package/dist/lib/schemas-data/3.2/pricing-options/cpv-option.json +4 -4
  1887. package/dist/lib/schemas-data/3.2/pricing-options/flat-rate-option.json +4 -4
  1888. package/dist/lib/schemas-data/3.2/pricing-options/price-breakdown.json +2 -2
  1889. package/dist/lib/schemas-data/3.2/pricing-options/price-guidance.json +1 -1
  1890. package/dist/lib/schemas-data/3.2/pricing-options/revenue-share-option.json +2 -2
  1891. package/dist/lib/schemas-data/3.2/pricing-options/time-option.json +4 -4
  1892. package/dist/lib/schemas-data/3.2/pricing-options/vcpm-option.json +4 -4
  1893. package/dist/lib/schemas-data/3.2/property/authorization-result.json +1 -1
  1894. package/dist/lib/schemas-data/3.2/property/base-property-source.json +4 -4
  1895. package/dist/lib/schemas-data/3.2/property/create-property-list-request.json +8 -8
  1896. package/dist/lib/schemas-data/3.2/property/create-property-list-response.json +6 -6
  1897. package/dist/lib/schemas-data/3.2/property/delete-property-list-request.json +5 -5
  1898. package/dist/lib/schemas-data/3.2/property/delete-property-list-response.json +5 -5
  1899. package/dist/lib/schemas-data/3.2/property/delivery-record.json +3 -3
  1900. package/dist/lib/schemas-data/3.2/property/get-property-list-request.json +5 -5
  1901. package/dist/lib/schemas-data/3.2/property/get-property-list-response.json +9 -9
  1902. package/dist/lib/schemas-data/3.2/property/list-property-lists-request.json +6 -6
  1903. package/dist/lib/schemas-data/3.2/property/list-property-lists-response.json +7 -7
  1904. package/dist/lib/schemas-data/3.2/property/property-error.json +2 -2
  1905. package/dist/lib/schemas-data/3.2/property/property-feature-definition.json +2 -2
  1906. package/dist/lib/schemas-data/3.2/property/property-feature-result.json +4 -4
  1907. package/dist/lib/schemas-data/3.2/property/property-feature-value.json +2 -2
  1908. package/dist/lib/schemas-data/3.2/property/property-feature.json +1 -1
  1909. package/dist/lib/schemas-data/3.2/property/property-list-changed-webhook.json +2 -2
  1910. package/dist/lib/schemas-data/3.2/property/property-list-filters.json +5 -5
  1911. package/dist/lib/schemas-data/3.2/property/property-list.json +6 -6
  1912. package/dist/lib/schemas-data/3.2/property/update-property-list-request.json +8 -8
  1913. package/dist/lib/schemas-data/3.2/property/update-property-list-response.json +6 -6
  1914. package/dist/lib/schemas-data/3.2/property/validate-property-delivery-request.json +6 -6
  1915. package/dist/lib/schemas-data/3.2/property/validate-property-delivery-response.json +6 -6
  1916. package/dist/lib/schemas-data/3.2/property/validation-result.json +5 -5
  1917. package/dist/lib/schemas-data/3.2/protocol/get-adcp-capabilities-request.json +4 -4
  1918. package/dist/lib/schemas-data/3.2/protocol/get-adcp-capabilities-response.json +53 -53
  1919. package/dist/lib/schemas-data/3.2/protocol/get-principal-request.json +4 -4
  1920. package/dist/lib/schemas-data/3.2/protocol/get-principal-response.json +9 -9
  1921. package/dist/lib/schemas-data/3.2/protocol/get-task-status-request.json +5 -5
  1922. package/dist/lib/schemas-data/3.2/protocol/get-task-status-response.json +10 -10
  1923. package/dist/lib/schemas-data/3.2/protocol/list-tasks-request.json +13 -13
  1924. package/dist/lib/schemas-data/3.2/protocol/list-tasks-response.json +8 -8
  1925. package/dist/lib/schemas-data/3.2/protocol/sync-agent-notification-configs-request.json +5 -5
  1926. package/dist/lib/schemas-data/3.2/protocol/sync-agent-notification-configs-response.json +7 -7
  1927. package/dist/lib/schemas-data/3.2/protocol/sync-principal-request.json +8 -8
  1928. package/dist/lib/schemas-data/3.2/protocol/sync-principal-response.json +10 -10
  1929. package/dist/lib/schemas-data/3.2/registries/v1-canonical-mapping.json +2 -2
  1930. package/dist/lib/schemas-data/3.2/signals/activate-signal-request.json +6 -6
  1931. package/dist/lib/schemas-data/3.2/signals/activate-signal-response.json +9 -9
  1932. package/dist/lib/schemas-data/3.2/signals/get-signals-async-response-submitted.json +4 -4
  1933. package/dist/lib/schemas-data/3.2/signals/get-signals-async-response-working.json +3 -3
  1934. package/dist/lib/schemas-data/3.2/signals/get-signals-request.json +11 -11
  1935. package/dist/lib/schemas-data/3.2/signals/get-signals-response.json +17 -17
  1936. package/dist/lib/schemas-data/3.2/sponsored-intelligence/si-capabilities.json +1 -1
  1937. package/dist/lib/schemas-data/3.2/sponsored-intelligence/si-context-use.json +1 -1
  1938. package/dist/lib/schemas-data/3.2/sponsored-intelligence/si-get-offering-request.json +4 -4
  1939. package/dist/lib/schemas-data/3.2/sponsored-intelligence/si-get-offering-response.json +9 -9
  1940. package/dist/lib/schemas-data/3.2/sponsored-intelligence/si-identity.json +1 -1
  1941. package/dist/lib/schemas-data/3.2/sponsored-intelligence/si-initiate-session-request.json +7 -7
  1942. package/dist/lib/schemas-data/3.2/sponsored-intelligence/si-initiate-session-response.json +10 -10
  1943. package/dist/lib/schemas-data/3.2/sponsored-intelligence/si-send-message-request.json +5 -5
  1944. package/dist/lib/schemas-data/3.2/sponsored-intelligence/si-send-message-response.json +10 -10
  1945. package/dist/lib/schemas-data/3.2/sponsored-intelligence/si-sponsored-context-receipt.json +4 -4
  1946. package/dist/lib/schemas-data/3.2/sponsored-intelligence/si-sponsored-context.json +4 -4
  1947. package/dist/lib/schemas-data/3.2/sponsored-intelligence/si-terminate-session-request.json +4 -4
  1948. package/dist/lib/schemas-data/3.2/sponsored-intelligence/si-terminate-session-response.json +7 -7
  1949. package/dist/lib/schemas-data/3.2/sponsored-intelligence/si-ui-element.json +1 -1
  1950. package/dist/lib/schemas-data/3.2/trusted-match/available-package.json +5 -5
  1951. package/dist/lib/schemas-data/3.2/trusted-match/context-match-request.json +5 -5
  1952. package/dist/lib/schemas-data/3.2/trusted-match/context-match-response.json +4 -4
  1953. package/dist/lib/schemas-data/3.2/trusted-match/error.json +1 -1
  1954. package/dist/lib/schemas-data/3.2/trusted-match/identity-match-request.json +4 -4
  1955. package/dist/lib/schemas-data/3.2/trusted-match/identity-match-response.json +4 -4
  1956. package/dist/lib/schemas-data/3.2/trusted-match/offer-price.json +1 -1
  1957. package/dist/lib/schemas-data/3.2/trusted-match/offer.json +5 -5
  1958. package/dist/lib/schemas-data/3.2/trusted-match/provider-context-match-response.json +4 -4
  1959. package/dist/lib/schemas-data/3.2/trusted-match/provider-identity-match-response.json +4 -4
  1960. package/dist/lib/schemas-data/3.2/trusted-match/provider-registration.json +2 -2
  1961. package/dist/lib/schemas-data/3.2/trusted-match/publisher-targeting-kv-config.json +1 -1
  1962. package/dist/lib/schemas-data/3.2/trusted-match/publisher-tmpx-config.json +1 -1
  1963. package/dist/lib/schemas-data/3.2/trusted-match/tmpx-chunk.json +1 -1
  1964. package/dist/lib/server/account-response-identity.d.mts +17 -0
  1965. package/dist/lib/server/account-response-identity.d.ts +17 -0
  1966. package/dist/lib/server/account-response-identity.js +52 -0
  1967. package/dist/lib/server/account-response-identity.mjs +28 -0
  1968. package/dist/lib/server/account-sync-contract.js +1 -0
  1969. package/dist/lib/server/account-sync-contract.mjs +1 -0
  1970. package/dist/lib/server/create-adcp-server.js +32 -19
  1971. package/dist/lib/server/create-adcp-server.mjs +36 -12
  1972. package/dist/lib/server/decisioning/account.d.mts +13 -6
  1973. package/dist/lib/server/decisioning/account.d.ts +13 -6
  1974. package/dist/lib/server/decisioning/account.js +37 -15
  1975. package/dist/lib/server/decisioning/account.mjs +37 -15
  1976. package/dist/lib/server/decisioning/runtime/from-platform.d.mts +5 -5
  1977. package/dist/lib/server/decisioning/runtime/from-platform.d.ts +5 -5
  1978. package/dist/lib/server/decisioning/runtime/from-platform.js +6 -6
  1979. package/dist/lib/server/decisioning/runtime/from-platform.mjs +6 -6
  1980. package/dist/lib/server/index.d.mts +1 -1
  1981. package/dist/lib/server/index.d.ts +1 -1
  1982. package/dist/lib/server/index.js +2 -0
  1983. package/dist/lib/server/index.mjs +2 -0
  1984. package/dist/lib/server/media-buy-action-resolver.d.mts +3 -0
  1985. package/dist/lib/server/media-buy-action-resolver.d.ts +3 -0
  1986. package/dist/lib/server/media-buy-action-resolver.js +32 -0
  1987. package/dist/lib/server/media-buy-action-resolver.mjs +32 -0
  1988. package/dist/lib/server/media-buy-store.d.mts +26 -12
  1989. package/dist/lib/server/media-buy-store.d.ts +26 -12
  1990. package/dist/lib/server/media-buy-store.js +69 -21
  1991. package/dist/lib/server/media-buy-store.mjs +69 -21
  1992. package/dist/lib/server/responses.js +9 -1
  1993. package/dist/lib/server/responses.mjs +9 -1
  1994. package/dist/lib/server/state-machine.d.mts +10 -11
  1995. package/dist/lib/server/state-machine.d.ts +10 -11
  1996. package/dist/lib/server/state-machine.js +20 -5
  1997. package/dist/lib/server/state-machine.mjs +19 -5
  1998. package/dist/lib/server/test-controller.d.mts +1 -0
  1999. package/dist/lib/server/test-controller.d.ts +1 -0
  2000. package/dist/lib/server/test-controller.js +5 -1
  2001. package/dist/lib/server/test-controller.mjs +5 -1
  2002. package/dist/lib/server/wire-spec-fields.generated.d.mts +32 -32
  2003. package/dist/lib/server/wire-spec-fields.generated.d.ts +32 -32
  2004. package/dist/lib/server/wire-spec-fields.generated.js +32 -32
  2005. package/dist/lib/server/wire-spec-fields.generated.mjs +32 -32
  2006. package/dist/lib/signing/agent-fetch.d.mts +1 -1
  2007. package/dist/lib/signing/agent-fetch.d.ts +1 -1
  2008. package/dist/lib/signing/agent-fetch.js +3 -3
  2009. package/dist/lib/signing/agent-fetch.mjs +3 -3
  2010. package/dist/lib/testing/client.d.mts +1 -0
  2011. package/dist/lib/testing/client.d.ts +1 -0
  2012. package/dist/lib/testing/client.js +6 -5
  2013. package/dist/lib/testing/client.mjs +6 -5
  2014. package/dist/lib/testing/storyboard/canonical-format-satisfaction.js +60 -14
  2015. package/dist/lib/testing/storyboard/canonical-format-satisfaction.mjs +60 -14
  2016. package/dist/lib/testing/storyboard/compliance.d.mts +2 -5
  2017. package/dist/lib/testing/storyboard/compliance.d.ts +2 -5
  2018. package/dist/lib/testing/storyboard/compliance.js +62 -13
  2019. package/dist/lib/testing/storyboard/compliance.mjs +63 -14
  2020. package/dist/lib/testing/storyboard/context.d.mts +13 -3
  2021. package/dist/lib/testing/storyboard/context.d.ts +13 -3
  2022. package/dist/lib/testing/storyboard/context.js +15 -10
  2023. package/dist/lib/testing/storyboard/context.mjs +15 -10
  2024. package/dist/lib/testing/storyboard/default-invariants.js +10 -8
  2025. package/dist/lib/testing/storyboard/default-invariants.mjs +11 -9
  2026. package/dist/lib/testing/storyboard/loader.js +5 -0
  2027. package/dist/lib/testing/storyboard/loader.mjs +5 -0
  2028. package/dist/lib/testing/storyboard/request-builder.js +9 -6
  2029. package/dist/lib/testing/storyboard/request-builder.mjs +9 -6
  2030. package/dist/lib/testing/storyboard/request-signing/vector-loader.d.mts +2 -0
  2031. package/dist/lib/testing/storyboard/request-signing/vector-loader.d.ts +2 -0
  2032. package/dist/lib/testing/storyboard/request-signing/vector-loader.js +11 -0
  2033. package/dist/lib/testing/storyboard/request-signing/vector-loader.mjs +10 -0
  2034. package/dist/lib/testing/storyboard/runner.js +24 -11
  2035. package/dist/lib/testing/storyboard/runner.mjs +24 -11
  2036. package/dist/lib/testing/storyboard/types.d.mts +5 -0
  2037. package/dist/lib/testing/storyboard/types.d.ts +5 -0
  2038. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  2039. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  2040. package/dist/lib/testing/storyboard/validations.js +4 -1
  2041. package/dist/lib/testing/storyboard/validations.mjs +4 -1
  2042. package/dist/lib/testing/test-controller.js +3 -0
  2043. package/dist/lib/testing/test-controller.mjs +3 -0
  2044. package/dist/lib/types/asset-instances.d.mts +1 -1
  2045. package/dist/lib/types/asset-instances.d.ts +1 -1
  2046. package/dist/lib/types/index.d.mts +5 -0
  2047. package/dist/lib/types/index.d.ts +5 -0
  2048. package/dist/lib/types/index.js +6 -1
  2049. package/dist/lib/types/index.mjs +4 -1
  2050. package/dist/lib/types/inline-enums.generated.d.mts +30 -4
  2051. package/dist/lib/types/inline-enums.generated.d.ts +30 -4
  2052. package/dist/lib/types/inline-enums.generated.js +41 -2
  2053. package/dist/lib/types/inline-enums.generated.mjs +28 -2
  2054. package/dist/lib/types/manifest.generated.d.mts +3 -3
  2055. package/dist/lib/types/manifest.generated.d.ts +3 -3
  2056. package/dist/lib/types/media-buy-delivery-report.d.mts +4 -0
  2057. package/dist/lib/types/media-buy-delivery-report.d.ts +4 -0
  2058. package/dist/lib/types/media-buy-delivery-report.js +16 -0
  2059. package/dist/lib/types/media-buy-delivery-report.mjs +0 -0
  2060. package/dist/lib/types/per-tool-index.json +1 -1
  2061. package/dist/lib/types/schemas.generated.d.ts +20 -69
  2062. package/dist/lib/types/schemas.generated.js +30 -47
  2063. package/dist/lib/types/schemas.generated.mjs +30 -47
  2064. package/dist/lib/types/targeting-keys.generated.d.mts +4 -0
  2065. package/dist/lib/types/targeting-keys.generated.d.ts +4 -0
  2066. package/dist/lib/types/targeting-keys.generated.js +105 -0
  2067. package/dist/lib/types/targeting-keys.generated.mjs +80 -0
  2068. package/dist/lib/utils/adcp-version-config.js +5 -2
  2069. package/dist/lib/utils/adcp-version-config.mjs +5 -2
  2070. package/dist/lib/utils/envelope-status-compat.d.mts +18 -1
  2071. package/dist/lib/utils/envelope-status-compat.d.ts +18 -1
  2072. package/dist/lib/utils/envelope-status-compat.js +11 -5
  2073. package/dist/lib/utils/envelope-status-compat.mjs +11 -5
  2074. package/dist/lib/utils/response-unwrapper.js +18 -10
  2075. package/dist/lib/utils/response-unwrapper.mjs +18 -10
  2076. package/dist/lib/v2/format-schema/resolver.js +1 -1
  2077. package/dist/lib/v2/format-schema/resolver.mjs +1 -1
  2078. package/dist/lib/v2/projection/creative-delivery.js +123 -30
  2079. package/dist/lib/v2/projection/creative-delivery.mjs +127 -30
  2080. package/dist/lib/v2/projection/index.d.mts +1 -0
  2081. package/dist/lib/v2/projection/index.d.ts +1 -0
  2082. package/dist/lib/v2/projection/index.js +3 -0
  2083. package/dist/lib/v2/projection/index.mjs +2 -0
  2084. package/dist/lib/v2/projection/legacy-metadata.d.mts +19 -0
  2085. package/dist/lib/v2/projection/legacy-metadata.d.ts +19 -0
  2086. package/dist/lib/v2/projection/legacy-metadata.js +91 -0
  2087. package/dist/lib/v2/projection/legacy-metadata.mjs +86 -0
  2088. package/dist/lib/validation/compact-schema.d.mts +27 -0
  2089. package/dist/lib/validation/compact-schema.d.ts +27 -0
  2090. package/dist/lib/validation/compact-schema.js +276 -0
  2091. package/dist/lib/validation/compact-schema.mjs +250 -0
  2092. package/dist/lib/validation/media-buy-delivery-report.d.mts +8 -0
  2093. package/dist/lib/validation/media-buy-delivery-report.d.ts +8 -0
  2094. package/dist/lib/validation/media-buy-delivery-report.js +31 -0
  2095. package/dist/lib/validation/media-buy-delivery-report.mjs +7 -0
  2096. package/dist/lib/validation/schema-diagnostic-origins.d.mts +21 -0
  2097. package/dist/lib/validation/schema-diagnostic-origins.d.ts +21 -0
  2098. package/dist/lib/validation/schema-diagnostic-origins.js +193 -0
  2099. package/dist/lib/validation/schema-diagnostic-origins.mjs +169 -0
  2100. package/dist/lib/validation/schema-loader.js +86 -16
  2101. package/dist/lib/validation/schema-loader.mjs +82 -16
  2102. package/dist/lib/validation/schema-validator.d.mts +10 -19
  2103. package/dist/lib/validation/schema-validator.d.ts +10 -19
  2104. package/dist/lib/validation/schema-validator.js +136 -43
  2105. package/dist/lib/validation/schema-validator.mjs +140 -44
  2106. package/dist/lib/version.d.mts +7 -7
  2107. package/dist/lib/version.d.ts +7 -7
  2108. package/dist/lib/version.js +8 -6
  2109. package/dist/lib/version.mjs +8 -6
  2110. package/dist/lib/webhooks/index.d.mts +3 -0
  2111. package/dist/lib/webhooks/index.d.ts +3 -0
  2112. package/dist/lib/webhooks/index.js +3 -0
  2113. package/dist/lib/webhooks/index.mjs +2 -0
  2114. package/dist/lib/webhooks/media-buy-delivery.d.mts +43 -0
  2115. package/dist/lib/webhooks/media-buy-delivery.d.ts +43 -0
  2116. package/dist/lib/webhooks/media-buy-delivery.js +119 -0
  2117. package/dist/lib/webhooks/media-buy-delivery.mjs +94 -0
  2118. package/docs/CLI.md +1 -1
  2119. package/docs/TYPE-SUMMARY.md +2 -2
  2120. package/docs/guides/BUILD-AN-AGENT.md +9 -1
  2121. package/docs/guides/DELIVERY-WEBHOOK-PARSING.md +135 -0
  2122. package/docs/guides/DISCOVERY-CACHE-AND-SESSION-REUSE.md +15 -0
  2123. package/docs/guides/TYPED-CLIENT-TOOLS.md +49 -0
  2124. package/docs/llms.txt +4 -4
  2125. package/docs/migration-14.x-rc-worksheet.md +6 -6
  2126. package/docs/migration-6.6-to-6.7.md +14 -0
  2127. package/docs/migration-account-change-feed.md +19 -0
  2128. package/docs/releases/sdk-16.6-adoption-fixes.md +33 -0
  2129. package/package.json +7 -7
  2130. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/brand/index.yaml +0 -0
  2131. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/brand/scenarios/distributed_brand_resolution.yaml +0 -0
  2132. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/brand/scenarios/single_side_trust_extension.yaml +0 -0
  2133. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/creative/index.yaml +0 -0
  2134. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/creative/scenarios/billing_out_of_band.yaml +0 -0
  2135. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/creative/scenarios/canonical_supported_formats.yaml +0 -0
  2136. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -0
  2137. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/creative/scenarios/evaluator_auth.yaml +0 -0
  2138. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/creative/scenarios/native_in_feed.yaml +0 -0
  2139. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/governance/index.yaml +0 -0
  2140. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/index.yaml +0 -0
  2141. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/audience_buy_flow.yaml +0 -0
  2142. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/available_actions.yaml +0 -0
  2143. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/billing_finality_delivery.yaml +0 -0
  2144. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/canonical_formats.yaml +0 -0
  2145. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
  2146. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
  2147. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  2148. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/creative_reception.yaml +0 -0
  2149. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/delivery_reporting.yaml +0 -0
  2150. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
  2151. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/event_dedup_flow.yaml +0 -0
  2152. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
  2153. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/get_products_async.yaml +0 -0
  2154. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/governance_approved.yaml +0 -0
  2155. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/governance_conditions.yaml +0 -0
  2156. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/governance_denied.yaml +0 -0
  2157. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
  2158. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -0
  2159. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -0
  2160. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/inventory_list_targeting.yaml +0 -0
  2161. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/measurement_accountability.yaml +0 -0
  2162. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
  2163. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/pending_creatives_to_start.yaml +0 -0
  2164. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
  2165. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/performance_buy_flow.yaml +0 -0
  2166. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
  2167. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
  2168. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/product_signal_targeting.yaml +0 -0
  2169. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/proposal_finalize.yaml +0 -0
  2170. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
  2171. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
  2172. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/provenance_enforcement.yaml +0 -0
  2173. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/reach_buy_flow.yaml +0 -0
  2174. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
  2175. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/refine_products.yaml +0 -0
  2176. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/vendor_metric_accountability.yaml +0 -0
  2177. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
  2178. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
  2179. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/media-buy/state-machine.yaml +0 -0
  2180. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/signals/index.yaml +0 -0
  2181. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/signals/scenarios/get_signals_async.yaml +0 -0
  2182. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/sponsored-intelligence/index.yaml +0 -0
  2183. /package/compliance/cache/{3.1.29 → 3.1.30}/domains/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
  2184. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/brand/index.yaml +0 -0
  2185. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/brand/scenarios/distributed_brand_resolution.yaml +0 -0
  2186. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/brand/scenarios/single_side_trust_extension.yaml +0 -0
  2187. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/creative/index.yaml +0 -0
  2188. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/creative/scenarios/billing_out_of_band.yaml +0 -0
  2189. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/creative/scenarios/canonical_supported_formats.yaml +0 -0
  2190. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -0
  2191. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/creative/scenarios/evaluator_auth.yaml +0 -0
  2192. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/creative/scenarios/native_in_feed.yaml +0 -0
  2193. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/governance/index.yaml +0 -0
  2194. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/index.yaml +0 -0
  2195. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/audience_buy_flow.yaml +0 -0
  2196. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/available_actions.yaml +0 -0
  2197. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/billing_finality_delivery.yaml +0 -0
  2198. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/canonical_formats.yaml +0 -0
  2199. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
  2200. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
  2201. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  2202. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/creative_reception.yaml +0 -0
  2203. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/delivery_reporting.yaml +0 -0
  2204. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
  2205. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/event_dedup_flow.yaml +0 -0
  2206. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
  2207. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/get_products_async.yaml +0 -0
  2208. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/governance_approved.yaml +0 -0
  2209. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/governance_conditions.yaml +0 -0
  2210. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/governance_denied.yaml +0 -0
  2211. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
  2212. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -0
  2213. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -0
  2214. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/inventory_list_targeting.yaml +0 -0
  2215. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/measurement_accountability.yaml +0 -0
  2216. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
  2217. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +0 -0
  2218. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
  2219. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/performance_buy_flow.yaml +0 -0
  2220. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
  2221. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
  2222. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/product_signal_targeting.yaml +0 -0
  2223. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -0
  2224. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
  2225. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
  2226. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/provenance_enforcement.yaml +0 -0
  2227. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/reach_buy_flow.yaml +0 -0
  2228. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
  2229. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/refine_products.yaml +0 -0
  2230. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +0 -0
  2231. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
  2232. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
  2233. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/media-buy/state-machine.yaml +0 -0
  2234. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/signals/index.yaml +0 -0
  2235. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/signals/scenarios/get_signals_async.yaml +0 -0
  2236. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/sponsored-intelligence/index.yaml +0 -0
  2237. /package/compliance/cache/{3.1.29 → 3.1.30}/protocols/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
  2238. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/audience-sync/index.yaml +0 -0
  2239. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/brand-rights/index.yaml +0 -0
  2240. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -0
  2241. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/collection-lists/index.yaml +0 -0
  2242. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/content-standards/index.yaml +0 -0
  2243. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/creative-ad-server/index.yaml +0 -0
  2244. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/creative-generative/generative-seller.yaml +0 -0
  2245. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/creative-generative/index.yaml +0 -0
  2246. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/creative-template/index.yaml +0 -0
  2247. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/creative-transformers/index.yaml +0 -0
  2248. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/governance-aware-seller/index.yaml +0 -0
  2249. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +0 -0
  2250. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/governance-delivery-monitor/index.yaml +0 -0
  2251. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/governance-spend-authority/denied.yaml +0 -0
  2252. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/governance-spend-authority/index.yaml +0 -0
  2253. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/property-lists/index.yaml +0 -0
  2254. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/sales-broadcast-tv/index.yaml +0 -0
  2255. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/sales-catalog-driven/index.yaml +0 -0
  2256. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/sales-guaranteed/index.yaml +0 -0
  2257. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/sales-non-guaranteed/index.yaml +0 -0
  2258. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/sales-proposal-mode/index.yaml +0 -0
  2259. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/sales-social/index.yaml +0 -0
  2260. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/signal-marketplace/index.yaml +0 -0
  2261. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -0
  2262. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/signal-owned/index.yaml +0 -0
  2263. /package/compliance/cache/{3.1.29 → 3.1.30}/specialisms/sponsored-intelligence/index.yaml +0 -0
  2264. /package/compliance/cache/{3.1.29 → 3.1.30}/test-kits/acme-outdoor-live.yaml +0 -0
  2265. /package/compliance/cache/{3.1.29 → 3.1.30}/test-kits/acme-outdoor.yaml +0 -0
  2266. /package/compliance/cache/{3.1.29 → 3.1.30}/test-kits/billing-gate-runner.yaml +0 -0
  2267. /package/compliance/cache/{3.1.29 → 3.1.30}/test-kits/bistro-oranje.yaml +0 -0
  2268. /package/compliance/cache/{3.1.29 → 3.1.30}/test-kits/distributed-brand-runner.yaml +0 -0
  2269. /package/compliance/cache/{3.1.29 → 3.1.30}/test-kits/hosted-grader.yaml +0 -0
  2270. /package/compliance/cache/{3.1.29 → 3.1.30}/test-kits/nova-motors.yaml +0 -0
  2271. /package/compliance/cache/{3.1.29 → 3.1.30}/test-kits/osei-natural.yaml +0 -0
  2272. /package/compliance/cache/{3.1.29 → 3.1.30}/test-kits/parallel-dispatch-runner.yaml +0 -0
  2273. /package/compliance/cache/{3.1.29 → 3.1.30}/test-kits/rate-limit-trip-runner.yaml +0 -0
  2274. /package/compliance/cache/{3.1.29 → 3.1.30}/test-kits/signed-requests-runner.yaml +0 -0
  2275. /package/compliance/cache/{3.1.29 → 3.1.30}/test-kits/single-side-trust-runner.yaml +0 -0
  2276. /package/compliance/cache/{3.1.29 → 3.1.30}/test-kits/substitution-observer-runner.yaml +0 -0
  2277. /package/compliance/cache/{3.1.29 → 3.1.30}/test-kits/summit-foods.yaml +0 -0
  2278. /package/compliance/cache/{3.1.29 → 3.1.30}/test-kits/webhook-receiver-runner.yaml +0 -0
  2279. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/catalog-macro-substitution.json +0 -0
  2280. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/plan-hash/001-minimal-plan.json +0 -0
  2281. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/plan-hash/002-full-plan.json +0 -0
  2282. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -0
  2283. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/plan-hash/004a-human-review-omitted.json +0 -0
  2284. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -0
  2285. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -0
  2286. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -0
  2287. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -0
  2288. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -0
  2289. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/plan-hash/007-unicode-objectives.json +0 -0
  2290. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -0
  2291. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/README.md +0 -0
  2292. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/canonicalization.json +0 -0
  2293. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/keys.json +0 -0
  2294. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/001-no-signature-header.json +0 -0
  2295. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/002-wrong-tag.json +0 -0
  2296. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/003-expired-signature.json +0 -0
  2297. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/004-window-too-long.json +0 -0
  2298. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/005-alg-not-allowed.json +0 -0
  2299. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/006-missing-covered-component.json +0 -0
  2300. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/007-missing-content-digest.json +0 -0
  2301. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/008-unknown-keyid.json +0 -0
  2302. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +0 -0
  2303. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/010-content-digest-mismatch.json +0 -0
  2304. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/011-malformed-header.json +0 -0
  2305. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/012-missing-expires-param.json +0 -0
  2306. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/013-expires-le-created.json +0 -0
  2307. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/014-missing-nonce-param.json +0 -0
  2308. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/015-signature-invalid.json +0 -0
  2309. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/016-replayed-nonce.json +0 -0
  2310. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/017-key-revoked.json +0 -0
  2311. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +0 -0
  2312. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/019-signature-without-signature-input.json +0 -0
  2313. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/020-rate-abuse.json +0 -0
  2314. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +0 -0
  2315. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/022-multi-valued-content-type.json +0 -0
  2316. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +0 -0
  2317. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/024-unquoted-string-param.json +0 -0
  2318. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +0 -0
  2319. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/026-non-ascii-host.json +0 -0
  2320. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +0 -0
  2321. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +0 -0
  2322. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/positive/001-basic-post.json +0 -0
  2323. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -0
  2324. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/positive/003-es256-post.json +0 -0
  2325. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/positive/004-multiple-signature-labels.json +0 -0
  2326. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/positive/005-default-port-stripped.json +0 -0
  2327. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/positive/006-dot-segment-path.json +0 -0
  2328. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -0
  2329. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -0
  2330. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +0 -0
  2331. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +0 -0
  2332. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/positive/011-ipv6-authority.json +0 -0
  2333. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +0 -0
  2334. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-receiver-envelope.json +0 -0
  2335. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/README.md +0 -0
  2336. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/keys.json +0 -0
  2337. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -0
  2338. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -0
  2339. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -0
  2340. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -0
  2341. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -0
  2342. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -0
  2343. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -0
  2344. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -0
  2345. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -0
  2346. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -0
  2347. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -0
  2348. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -0
  2349. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -0
  2350. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -0
  2351. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -0
  2352. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -0
  2353. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -0
  2354. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -0
  2355. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -0
  2356. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -0
  2357. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -0
  2358. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/positive/001-basic-post.json +0 -0
  2359. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/positive/002-es256-post.json +0 -0
  2360. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -0
  2361. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -0
  2362. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -0
  2363. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -0
  2364. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -0
  2365. /package/compliance/cache/{3.1.29 → 3.1.30}/test-vectors/webhook-signing/positive/008-request-signing-key-reuse.json +0 -0
  2366. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/billing-gate-dispatch.yaml +0 -0
  2367. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/canonical-format-validate-input.yaml +0 -0
  2368. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/capability-discovery.yaml +0 -0
  2369. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/collection-lists-pagination-integrity.yaml +0 -0
  2370. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/comply-controller-mode-gate.yaml +0 -0
  2371. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/content-standards-pagination-integrity.yaml +0 -0
  2372. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/deterministic-testing.yaml +0 -0
  2373. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/error-compliance-signals.yaml +0 -0
  2374. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/error-compliance.yaml +0 -0
  2375. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/fictional-entities.yaml +0 -0
  2376. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/get-media-buys-pagination-integrity.yaml +0 -0
  2377. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/get-products-pagination-integrity.yaml +0 -0
  2378. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/get-signals-pagination-integrity.yaml +0 -0
  2379. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/idempotency.yaml +0 -0
  2380. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/notification-config-event-scope.yaml +0 -0
  2381. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/notification-config-lifecycle.yaml +0 -0
  2382. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/notification-config-rejections.yaml +0 -0
  2383. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/pagination-integrity-creative-formats.yaml +0 -0
  2384. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/pagination-integrity-list-accounts.yaml +0 -0
  2385. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/pagination-integrity.yaml +0 -0
  2386. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/property-lists-pagination-integrity.yaml +0 -0
  2387. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/read-tool-idempotency.yaml +0 -0
  2388. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/runner-output-contract.yaml +0 -0
  2389. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/schema-validation-signals.yaml +0 -0
  2390. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/schema-validation.yaml +0 -0
  2391. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/security.yaml +0 -0
  2392. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/signed-requests.yaml +0 -0
  2393. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/v3-envelope-integrity.yaml +0 -0
  2394. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/version-negotiation.yaml +0 -0
  2395. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/webhook-emission.yaml +0 -0
  2396. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/webhook-receiver-envelope.yaml +0 -0
  2397. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/wholesale-feed-bulk-webhooks.yaml +0 -0
  2398. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/wholesale-feed-product-webhooks.yaml +0 -0
  2399. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/wholesale-feed-products.yaml +0 -0
  2400. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/wholesale-feed-signal-webhooks.yaml +0 -0
  2401. /package/compliance/cache/{3.1.29 → 3.1.30}/universal/wholesale-feed-signals.yaml +0 -0
  2402. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/brand/index.yaml +0 -0
  2403. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/brand/scenarios/distributed_brand_resolution.yaml +0 -0
  2404. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/brand/scenarios/signed_response_envelope_vectors.yaml +0 -0
  2405. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/brand/scenarios/single_side_trust_extension.yaml +0 -0
  2406. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/creative/index.yaml +0 -0
  2407. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/creative/scenarios/asset_type_filtering.yaml +0 -0
  2408. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/creative/scenarios/billing_out_of_band.yaml +0 -0
  2409. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/creative/scenarios/canonical_supported_formats.yaml +0 -0
  2410. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/creative/scenarios/creative_features_idempotency.yaml +0 -0
  2411. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/creative/scenarios/creative_revision_identity.yaml +0 -0
  2412. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/creative/scenarios/evaluator_auth.yaml +0 -0
  2413. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/creative/scenarios/list_creatives_filter_behavior.yaml +0 -0
  2414. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/creative/scenarios/native_in_feed.yaml +0 -0
  2415. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/creative/scenarios/native_localization.yaml +0 -0
  2416. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/creative/scenarios/policy_backed_rejections.yaml +0 -0
  2417. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/governance/index.yaml +0 -0
  2418. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/governance/scenarios/failed_outcome_audit_persistence.yaml +0 -0
  2419. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/governance/scenarios/property_list_change_webhook_signing.yaml +0 -0
  2420. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/index.yaml +0 -0
  2421. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/acceptance_policy_discovery.yaml +0 -0
  2422. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/account_change_feed.yaml +0 -0
  2423. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/account_timezone_buyer_selected.yaml +0 -0
  2424. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/account_timezone_seller_assigned.yaml +0 -0
  2425. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/account_timezone_seller_fixed.yaml +0 -0
  2426. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/advanced_delivery_reporting.yaml +0 -0
  2427. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/audience_activation_discovery.yaml +0 -0
  2428. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/audience_buy_flow.yaml +0 -0
  2429. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/availability_windows.yaml +0 -0
  2430. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/available_actions.yaml +0 -0
  2431. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/bidding_cost_binding.yaml +0 -0
  2432. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/bidding_policy_placement.yaml +0 -0
  2433. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/billing_finality_delivery.yaml +0 -0
  2434. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/budget_cap_timezone_account.yaml +0 -0
  2435. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/budget_cap_timezone_fixed.yaml +0 -0
  2436. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/budget_cap_timezone_override.yaml +0 -0
  2437. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/budget_cap_timezone_override_rejected.yaml +0 -0
  2438. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/canonical_formats.yaml +0 -0
  2439. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/catalog_item_availability_updates.yaml +0 -0
  2440. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/change_rights_state_projection.yaml +0 -0
  2441. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
  2442. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/collection_selection.yaml +0 -0
  2443. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/compact_direct_buy_lifecycle.yaml +0 -0
  2444. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/compact_product_lifecycle.yaml +0 -0
  2445. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
  2446. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  2447. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/create_media_buy_async_lifecycle.yaml +0 -0
  2448. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/creative_reception.yaml +0 -0
  2449. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/cross_path_targeting_provenance.yaml +0 -0
  2450. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/declined_proposal_execution.yaml +0 -0
  2451. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/declined_proposal_refinement.yaml +0 -0
  2452. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/delivery_reporting.yaml +0 -0
  2453. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/demographic_targeting.yaml +0 -0
  2454. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
  2455. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/event_dedup_flow.yaml +0 -0
  2456. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/expired_proposal_execution.yaml +0 -0
  2457. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/external_audience_source_binding.yaml +0 -0
  2458. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/frequency_cap_capability_updates.yaml +0 -0
  2459. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
  2460. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/geo_place_targeting.yaml +0 -0
  2461. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/geo_region_all_values_support.yaml +0 -0
  2462. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/geo_region_exclusion_support.yaml +0 -0
  2463. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/geo_region_targeting.yaml +0 -0
  2464. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/get_products_async.yaml +0 -0
  2465. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/get_products_rejected.yaml +0 -0
  2466. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/governance_agent_binding_acceptance.yaml +0 -0
  2467. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/governance_approved.yaml +0 -0
  2468. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/governance_conditions.yaml +0 -0
  2469. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/governance_denied.yaml +0 -0
  2470. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
  2471. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -0
  2472. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -0
  2473. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/inventory_list_targeting.yaml +0 -0
  2474. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/measurement_accountability.yaml +0 -0
  2475. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/measurement_terms_accepted.yaml +0 -0
  2476. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/media_buy_frequency_cap_readback.yaml +0 -0
  2477. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/media_buy_frequency_cap_updates.yaml +0 -0
  2478. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/metric_container_subsumption.yaml +0 -0
  2479. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/outcome_target.yaml +0 -0
  2480. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/outcome_target_list_products_inert.yaml +0 -0
  2481. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/owner_sold_channel_carriage.yaml +0 -0
  2482. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/package_automatic_bidding.yaml +0 -0
  2483. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
  2484. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/pending_creatives_to_start.yaml +0 -0
  2485. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
  2486. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/performance_buy_flow.yaml +0 -0
  2487. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
  2488. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/portfolio_routing_scope.yaml +0 -0
  2489. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
  2490. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/product_coverage_filters.yaml +0 -0
  2491. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/product_filter_behavior.yaml +0 -0
  2492. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/product_signal_targeting.yaml +0 -0
  2493. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/proposal_finalize.yaml +0 -0
  2494. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
  2495. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
  2496. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/provenance_audit_observation.yaml +0 -0
  2497. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/provenance_enforcement.yaml +0 -0
  2498. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -0
  2499. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/reach_buy_flow.yaml +0 -0
  2500. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/read_filter_behavior.yaml +0 -0
  2501. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
  2502. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/refine_frequency_cap_negotiation.yaml +0 -0
  2503. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/refine_products.yaml +0 -0
  2504. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/revenue_share_pricing.yaml +0 -0
  2505. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/seller_optimized_budget.yaml +0 -0
  2506. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/seller_optimized_min_spend_target_exceeds_package_cap.yaml +0 -0
  2507. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/seller_optimized_proposal_package_pacing.yaml +0 -0
  2508. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/targeting_aware_discovery.yaml +0 -0
  2509. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/total_budget_redistribution.yaml +0 -0
  2510. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/typed_proposal_negotiation.yaml +0 -0
  2511. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/vendor_metric_accountability.yaml +0 -0
  2512. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
  2513. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
  2514. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/media-buy/state-machine.yaml +0 -0
  2515. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/signals/index.yaml +0 -0
  2516. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/signals/scenarios/get_signals_async.yaml +0 -0
  2517. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/sponsored-intelligence/index.yaml +0 -0
  2518. /package/compliance/cache/{3.2.7 → 3.2.8}/domains/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
  2519. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/brand/index.yaml +0 -0
  2520. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/brand/scenarios/distributed_brand_resolution.yaml +0 -0
  2521. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/brand/scenarios/signed_response_envelope_vectors.yaml +0 -0
  2522. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/brand/scenarios/single_side_trust_extension.yaml +0 -0
  2523. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/creative/index.yaml +0 -0
  2524. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/creative/scenarios/asset_type_filtering.yaml +0 -0
  2525. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/creative/scenarios/billing_out_of_band.yaml +0 -0
  2526. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/creative/scenarios/canonical_supported_formats.yaml +0 -0
  2527. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/creative/scenarios/creative_features_idempotency.yaml +0 -0
  2528. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/creative/scenarios/creative_revision_identity.yaml +0 -0
  2529. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/creative/scenarios/evaluator_auth.yaml +0 -0
  2530. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/creative/scenarios/list_creatives_filter_behavior.yaml +0 -0
  2531. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/creative/scenarios/native_in_feed.yaml +0 -0
  2532. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/creative/scenarios/native_localization.yaml +0 -0
  2533. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/creative/scenarios/policy_backed_rejections.yaml +0 -0
  2534. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/governance/index.yaml +0 -0
  2535. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/governance/scenarios/failed_outcome_audit_persistence.yaml +0 -0
  2536. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/governance/scenarios/property_list_change_webhook_signing.yaml +0 -0
  2537. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/index.yaml +0 -0
  2538. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/acceptance_policy_discovery.yaml +0 -0
  2539. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/account_change_feed.yaml +0 -0
  2540. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/account_timezone_buyer_selected.yaml +0 -0
  2541. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/account_timezone_seller_assigned.yaml +0 -0
  2542. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/account_timezone_seller_fixed.yaml +0 -0
  2543. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/advanced_delivery_reporting.yaml +0 -0
  2544. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/audience_activation_discovery.yaml +0 -0
  2545. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/audience_buy_flow.yaml +0 -0
  2546. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/availability_windows.yaml +0 -0
  2547. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/available_actions.yaml +0 -0
  2548. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/bidding_cost_binding.yaml +0 -0
  2549. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/bidding_policy_placement.yaml +0 -0
  2550. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/billing_finality_delivery.yaml +0 -0
  2551. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/budget_cap_timezone_account.yaml +0 -0
  2552. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/budget_cap_timezone_fixed.yaml +0 -0
  2553. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/budget_cap_timezone_override.yaml +0 -0
  2554. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/budget_cap_timezone_override_rejected.yaml +0 -0
  2555. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/canonical_formats.yaml +0 -0
  2556. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/catalog_item_availability_updates.yaml +0 -0
  2557. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/change_rights_state_projection.yaml +0 -0
  2558. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
  2559. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/collection_selection.yaml +0 -0
  2560. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/compact_direct_buy_lifecycle.yaml +0 -0
  2561. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/compact_product_lifecycle.yaml +0 -0
  2562. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
  2563. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  2564. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/create_media_buy_async_lifecycle.yaml +0 -0
  2565. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/creative_reception.yaml +0 -0
  2566. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/cross_path_targeting_provenance.yaml +0 -0
  2567. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/declined_proposal_execution.yaml +0 -0
  2568. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/declined_proposal_refinement.yaml +0 -0
  2569. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/delivery_reporting.yaml +0 -0
  2570. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/demographic_targeting.yaml +0 -0
  2571. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
  2572. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/event_dedup_flow.yaml +0 -0
  2573. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/expired_proposal_execution.yaml +0 -0
  2574. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/external_audience_source_binding.yaml +0 -0
  2575. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/frequency_cap_capability_updates.yaml +0 -0
  2576. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
  2577. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/geo_place_targeting.yaml +0 -0
  2578. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/geo_region_all_values_support.yaml +0 -0
  2579. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/geo_region_exclusion_support.yaml +0 -0
  2580. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/geo_region_targeting.yaml +0 -0
  2581. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/get_products_async.yaml +0 -0
  2582. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/get_products_rejected.yaml +0 -0
  2583. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/governance_agent_binding_acceptance.yaml +0 -0
  2584. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/governance_approved.yaml +0 -0
  2585. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/governance_conditions.yaml +0 -0
  2586. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/governance_denied.yaml +0 -0
  2587. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
  2588. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -0
  2589. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -0
  2590. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/inventory_list_targeting.yaml +0 -0
  2591. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/measurement_accountability.yaml +0 -0
  2592. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/measurement_terms_accepted.yaml +0 -0
  2593. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/media_buy_frequency_cap_readback.yaml +0 -0
  2594. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/media_buy_frequency_cap_updates.yaml +0 -0
  2595. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/metric_container_subsumption.yaml +0 -0
  2596. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/outcome_target.yaml +0 -0
  2597. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/outcome_target_list_products_inert.yaml +0 -0
  2598. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/owner_sold_channel_carriage.yaml +0 -0
  2599. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/package_automatic_bidding.yaml +0 -0
  2600. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
  2601. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +0 -0
  2602. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
  2603. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/performance_buy_flow.yaml +0 -0
  2604. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
  2605. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/portfolio_routing_scope.yaml +0 -0
  2606. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
  2607. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/product_coverage_filters.yaml +0 -0
  2608. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/product_filter_behavior.yaml +0 -0
  2609. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/product_signal_targeting.yaml +0 -0
  2610. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -0
  2611. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
  2612. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
  2613. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/provenance_audit_observation.yaml +0 -0
  2614. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/provenance_enforcement.yaml +0 -0
  2615. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -0
  2616. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/reach_buy_flow.yaml +0 -0
  2617. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/read_filter_behavior.yaml +0 -0
  2618. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
  2619. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/refine_frequency_cap_negotiation.yaml +0 -0
  2620. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/refine_products.yaml +0 -0
  2621. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/revenue_share_pricing.yaml +0 -0
  2622. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/seller_optimized_budget.yaml +0 -0
  2623. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/seller_optimized_min_spend_target_exceeds_package_cap.yaml +0 -0
  2624. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/seller_optimized_proposal_package_pacing.yaml +0 -0
  2625. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/targeting_aware_discovery.yaml +0 -0
  2626. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/total_budget_redistribution.yaml +0 -0
  2627. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/typed_proposal_negotiation.yaml +0 -0
  2628. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +0 -0
  2629. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
  2630. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
  2631. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/media-buy/state-machine.yaml +0 -0
  2632. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/signals/index.yaml +0 -0
  2633. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/signals/scenarios/get_signals_async.yaml +0 -0
  2634. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/sponsored-intelligence/index.yaml +0 -0
  2635. /package/compliance/cache/{3.2.7 → 3.2.8}/protocols/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
  2636. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/audience-sync/index.yaml +0 -0
  2637. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/brand-rights/index.yaml +0 -0
  2638. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/brand-rights/scenarios/governance_approved.yaml +0 -0
  2639. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -0
  2640. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/brand-rights/scenarios/update_rights_lifecycle.yaml +0 -0
  2641. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/buyer-activation/index.yaml +0 -0
  2642. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/buyer-discovery/index.yaml +0 -0
  2643. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/buyer-monitoring/index.yaml +0 -0
  2644. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/buyer-negotiation/index.yaml +0 -0
  2645. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/buyer-recovery/index.yaml +0 -0
  2646. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/collection-lists/index.yaml +0 -0
  2647. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/content-standards/index.yaml +0 -0
  2648. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/creative-ad-server/index.yaml +0 -0
  2649. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/creative-generative/generative-seller.yaml +0 -0
  2650. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/creative-generative/index.yaml +0 -0
  2651. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/creative-template/index.yaml +0 -0
  2652. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/creative-transformers/index.yaml +0 -0
  2653. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/creative-transformers/scenarios/governance_approved.yaml +0 -0
  2654. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/creative-transformers/scenarios/governance_denied.yaml +0 -0
  2655. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/governance-aware-seller/index.yaml +0 -0
  2656. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +0 -0
  2657. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/governance-delivery-monitor/index.yaml +0 -0
  2658. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/governance-spend-authority/denied.yaml +0 -0
  2659. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/governance-spend-authority/index.yaml +0 -0
  2660. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/orchestrator-multi-agent/index.yaml +0 -0
  2661. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/property-lists/index.yaml +0 -0
  2662. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/sales-catalog-driven/index.yaml +0 -0
  2663. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/sales-dooh/index.yaml +0 -0
  2664. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/sales-exchange/index.yaml +0 -0
  2665. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/sales-guaranteed/index.yaml +0 -0
  2666. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/sales-non-guaranteed/index.yaml +0 -0
  2667. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/sales-proposal-mode/index.yaml +0 -0
  2668. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/sales-retail-media/index.yaml +0 -0
  2669. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/sales-social/index.yaml +0 -0
  2670. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/sales-streaming-tv/index.yaml +0 -0
  2671. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/signal-marketplace/index.yaml +0 -0
  2672. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/signal-marketplace/scenarios/governance_approved.yaml +0 -0
  2673. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -0
  2674. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/signal-owned/index.yaml +0 -0
  2675. /package/compliance/cache/{3.2.7 → 3.2.8}/specialisms/sponsored-intelligence/index.yaml +0 -0
  2676. /package/compliance/cache/{3.2.7 → 3.2.8}/test-kits/acme-outdoor-live.yaml +0 -0
  2677. /package/compliance/cache/{3.2.7 → 3.2.8}/test-kits/acme-outdoor.yaml +0 -0
  2678. /package/compliance/cache/{3.2.7 → 3.2.8}/test-kits/billing-gate-runner.yaml +0 -0
  2679. /package/compliance/cache/{3.2.7 → 3.2.8}/test-kits/bistro-oranje.yaml +0 -0
  2680. /package/compliance/cache/{3.2.7 → 3.2.8}/test-kits/creative-build-probe-runner.yaml +0 -0
  2681. /package/compliance/cache/{3.2.7 → 3.2.8}/test-kits/distributed-brand-runner.yaml +0 -0
  2682. /package/compliance/cache/{3.2.7 → 3.2.8}/test-kits/hosted-grader.yaml +0 -0
  2683. /package/compliance/cache/{3.2.7 → 3.2.8}/test-kits/nova-motors.yaml +0 -0
  2684. /package/compliance/cache/{3.2.7 → 3.2.8}/test-kits/oauth-setup-runner.yaml +0 -0
  2685. /package/compliance/cache/{3.2.7 → 3.2.8}/test-kits/osei-natural.yaml +0 -0
  2686. /package/compliance/cache/{3.2.7 → 3.2.8}/test-kits/parallel-dispatch-runner.yaml +0 -0
  2687. /package/compliance/cache/{3.2.7 → 3.2.8}/test-kits/rate-limit-trip-runner.yaml +0 -0
  2688. /package/compliance/cache/{3.2.7 → 3.2.8}/test-kits/signed-requests-runner.yaml +0 -0
  2689. /package/compliance/cache/{3.2.7 → 3.2.8}/test-kits/signed-responses-runner.yaml +0 -0
  2690. /package/compliance/cache/{3.2.7 → 3.2.8}/test-kits/single-side-trust-runner.yaml +0 -0
  2691. /package/compliance/cache/{3.2.7 → 3.2.8}/test-kits/substitution-observer-runner.yaml +0 -0
  2692. /package/compliance/cache/{3.2.7 → 3.2.8}/test-kits/summit-foods.yaml +0 -0
  2693. /package/compliance/cache/{3.2.7 → 3.2.8}/test-kits/trusted-match-router-runner.yaml +0 -0
  2694. /package/compliance/cache/{3.2.7 → 3.2.8}/test-kits/webhook-receiver-runner.yaml +0 -0
  2695. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/attestations/README.md +0 -0
  2696. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/attestations/vectors.json +0 -0
  2697. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/audience-evidence/README.md +0 -0
  2698. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/audience-evidence/vectors.json +0 -0
  2699. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/brand-response-signing/brand-authorization-cross-check.json +0 -0
  2700. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/catalog-macro-substitution.json +0 -0
  2701. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/creative-representation-resolution.json +0 -0
  2702. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/creative-representation-resolution.schema.json +0 -0
  2703. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/error-recovery/README.md +0 -0
  2704. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/error-recovery/vectors.json +0 -0
  2705. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/governance-authorization.json +0 -0
  2706. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/governance-runtime-attestations/README.md +0 -0
  2707. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/governance-runtime-attestations/vectors.json +0 -0
  2708. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/macro-processing.json +0 -0
  2709. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/macro-processing.schema.json +0 -0
  2710. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/oauth-setup/vectors.json +0 -0
  2711. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/plan-hash/001-minimal-plan.json +0 -0
  2712. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/plan-hash/002-full-plan.json +0 -0
  2713. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -0
  2714. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/plan-hash/004a-human-review-omitted.json +0 -0
  2715. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -0
  2716. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -0
  2717. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -0
  2718. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -0
  2719. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -0
  2720. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/plan-hash/007-unicode-objectives.json +0 -0
  2721. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -0
  2722. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/products-only-brief-compatibility/README.md +0 -0
  2723. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/products-only-brief-compatibility/vectors.json +0 -0
  2724. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/relationship-scoped-indicators.json +0 -0
  2725. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-reconciliation/README.md +0 -0
  2726. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-reconciliation/adjustment.json +0 -0
  2727. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-reconciliation/canonicalization.json +0 -0
  2728. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-reconciliation/coverage-aggregation.json +0 -0
  2729. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-reconciliation/manifest.json +0 -0
  2730. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-reconciliation/materialization.json +0 -0
  2731. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-reconciliation/obligation.json +0 -0
  2732. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-reconciliation/receipts/accepted-recorded-response.json +0 -0
  2733. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-reconciliation/receipts/accepted-request.json +0 -0
  2734. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-reconciliation/receipts/accepted-unchanged-response.json +0 -0
  2735. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-reconciliation/receipts/adjustment-accepted-recorded-response.json +0 -0
  2736. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-reconciliation/receipts/adjustment-accepted-request.json +0 -0
  2737. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-reconciliation/receipts/rejected-recorded-response.json +0 -0
  2738. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-reconciliation/receipts/rejected-request.json +0 -0
  2739. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-reconciliation/report-definition.json +0 -0
  2740. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-reconciliation/revision.json +0 -0
  2741. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-reconciliation/row-schema.json +0 -0
  2742. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-reconciliation/rows.jsonl +0 -0
  2743. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-reconciliation/scenario-index.json +0 -0
  2744. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-reconciliation/scenario-index.schema.json +0 -0
  2745. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/reporting-summary/complete-summary.json +0 -0
  2746. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/README.md +0 -0
  2747. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/001-unsigned-sendmessage-required.json +0 -0
  2748. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/002-unsigned-message-send-v0-3-required.json +0 -0
  2749. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/003-unsigned-sendstreamingmessage-required.json +0 -0
  2750. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/004-duplicate-invocation-datapart.json +0 -0
  2751. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/005-signed-duplicate-invocation-datapart.json +0 -0
  2752. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/006-missing-skill.json +0 -0
  2753. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/007-protocol-method-required-covers-sendmessage.json +0 -0
  2754. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/008-no-extension-header.json +0 -0
  2755. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/009-extra-non-invocation-datapart.json +0 -0
  2756. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/010-filepart-present.json +0 -0
  2757. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/011-part-with-text-and-data.json +0 -0
  2758. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/012-non-object-data.json +0 -0
  2759. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/013-v0-3-kind-mismatch.json +0 -0
  2760. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/014-duplicate-skill-key.json +0 -0
  2761. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/015-non-string-skill.json +0 -0
  2762. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/016-text-only-message.json +0 -0
  2763. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/017-unsigned-message-stream-v0-3-required.json +0 -0
  2764. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/018-unresolvable-with-lone-signature-header.json +0 -0
  2765. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/019-raw-part-present.json +0 -0
  2766. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/020-case-variant-member-name.json +0 -0
  2767. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/021-escaped-duplicate-skill-key.json +0 -0
  2768. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/022-unsigned-http-json-message-send-required.json +0 -0
  2769. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/023-batch-body.json +0 -0
  2770. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/024-duplicate-method-key.json +0 -0
  2771. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/025-missing-method.json +0 -0
  2772. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/negative/026-empty-skill.json +0 -0
  2773. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/positive/001-signed-sendmessage-create-media-buy.json +0 -0
  2774. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/positive/002-signed-message-send-v0-3-create-media-buy.json +0 -0
  2775. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/positive/003-unsigned-sendmessage-get-products-not-required.json +0 -0
  2776. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/positive/004-unsigned-decoy-text-and-metadata.json +0 -0
  2777. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/positive/005-unsigned-alias-skill-not-in-lists.json +0 -0
  2778. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/positive/006-unsigned-message-send-v0-3-legacy-parameters.json +0 -0
  2779. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/a2a/positive/007-unsigned-method-case-variant.json +0 -0
  2780. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/body-integrity-policy.json +0 -0
  2781. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/canonicalization.json +0 -0
  2782. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/keys.json +0 -0
  2783. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/001-no-signature-header.json +0 -0
  2784. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/002-wrong-tag.json +0 -0
  2785. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/003-expired-signature.json +0 -0
  2786. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/004-window-too-long.json +0 -0
  2787. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/005-alg-not-allowed.json +0 -0
  2788. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/006-missing-covered-component.json +0 -0
  2789. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/007-missing-content-digest.json +0 -0
  2790. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/008-unknown-keyid.json +0 -0
  2791. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +0 -0
  2792. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/010-content-digest-mismatch.json +0 -0
  2793. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/011-malformed-header.json +0 -0
  2794. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/012-missing-expires-param.json +0 -0
  2795. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/013-expires-le-created.json +0 -0
  2796. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/014-missing-nonce-param.json +0 -0
  2797. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/015-signature-invalid.json +0 -0
  2798. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/016-replayed-nonce.json +0 -0
  2799. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/017-key-revoked.json +0 -0
  2800. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +0 -0
  2801. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/019-signature-without-signature-input.json +0 -0
  2802. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/020-rate-abuse.json +0 -0
  2803. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +0 -0
  2804. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/022-multi-valued-content-type.json +0 -0
  2805. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +0 -0
  2806. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/024-unquoted-string-param.json +0 -0
  2807. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +0 -0
  2808. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/026-non-ascii-host.json +0 -0
  2809. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +0 -0
  2810. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +0 -0
  2811. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/029-duplicate-signature-label.json +0 -0
  2812. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/030-content-digest-key-case.json +0 -0
  2813. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/negative/031-malformed-host-authority.json +0 -0
  2814. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/positive/001-basic-post.json +0 -0
  2815. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -0
  2816. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/positive/003-es256-post.json +0 -0
  2817. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/positive/004-multiple-signature-labels.json +0 -0
  2818. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/positive/005-default-port-stripped.json +0 -0
  2819. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/positive/006-dot-segment-path.json +0 -0
  2820. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -0
  2821. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -0
  2822. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +0 -0
  2823. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +0 -0
  2824. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/positive/011-ipv6-authority.json +0 -0
  2825. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +0 -0
  2826. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/positive/013-two-signature-labels-distinct.json +0 -0
  2827. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/positive/014-content-digest-two-algorithms.json +0 -0
  2828. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/positive/015-bracketed-ipv6-host-with-port.json +0 -0
  2829. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/001-base64url-sf-binary.json +0 -0
  2830. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/001-no-signature-header.json +0 -0
  2831. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/002-multiple-trailing-dots.json +0 -0
  2832. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/002-wrong-tag.json +0 -0
  2833. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/003-expired-signature.json +0 -0
  2834. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/004-window-too-long.json +0 -0
  2835. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/005-alg-not-allowed.json +0 -0
  2836. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/006-missing-covered-component.json +0 -0
  2837. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/007-missing-content-digest.json +0 -0
  2838. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/008-unknown-keyid.json +0 -0
  2839. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/009-key-ops-missing-verify.json +0 -0
  2840. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/010-content-digest-mismatch.json +0 -0
  2841. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/011-malformed-header.json +0 -0
  2842. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/012-missing-expires-param.json +0 -0
  2843. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/013-expires-le-created.json +0 -0
  2844. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/014-missing-nonce-param.json +0 -0
  2845. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/015-signature-invalid.json +0 -0
  2846. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/016-replayed-nonce.json +0 -0
  2847. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/017-key-revoked.json +0 -0
  2848. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/019-signature-without-signature-input.json +0 -0
  2849. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/020-rate-abuse.json +0 -0
  2850. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/021-duplicate-signature-input-label.json +0 -0
  2851. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/022-multi-valued-content-type.json +0 -0
  2852. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/023-multi-valued-content-digest.json +0 -0
  2853. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/024-unquoted-string-param.json +0 -0
  2854. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/025-jwk-alg-crv-mismatch.json +0 -0
  2855. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/026-non-ascii-host.json +0 -0
  2856. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/027-webhook-registration-authentication-unsigned.json +0 -0
  2857. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/028-unsigned-protocol-method-required.json +0 -0
  2858. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/029-duplicate-signature-label.json +0 -0
  2859. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/030-content-digest-key-case.json +0 -0
  2860. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/negative/031-malformed-host-authority.json +0 -0
  2861. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/positive/001-post-with-content-digest.json +0 -0
  2862. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/positive/003-es256-post.json +0 -0
  2863. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/positive/004-multiple-signature-labels.json +0 -0
  2864. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/positive/005-default-port-stripped.json +0 -0
  2865. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/positive/006-dot-segment-path.json +0 -0
  2866. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/positive/007-query-byte-preserved.json +0 -0
  2867. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/positive/008-percent-encoded-path.json +0 -0
  2868. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/positive/009-percent-encoded-unreserved-decoded.json +0 -0
  2869. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/positive/010-percent-encoded-slash-preserved.json +0 -0
  2870. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/positive/011-ipv6-authority.json +0 -0
  2871. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/positive/012-ipv6-authority-default-port-stripped.json +0 -0
  2872. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/positive/013-two-signature-labels-distinct.json +0 -0
  2873. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/positive/014-content-digest-two-algorithms.json +0 -0
  2874. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/profile-3.2/positive/015-bracketed-ipv6-host-with-port.json +0 -0
  2875. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/request-signing/protocol-method-names.json +0 -0
  2876. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/rights-attestations/README.md +0 -0
  2877. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/rights-attestations/vectors.json +0 -0
  2878. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/supply-path/README.md +0 -0
  2879. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/supply-path/vectors.json +0 -0
  2880. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/tracker-execution-contracts.json +0 -0
  2881. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/tracker-execution-contracts.schema.json +0 -0
  2882. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/trusted-match-context-merge/README.md +0 -0
  2883. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/trusted-match-context-merge/vectors.json +0 -0
  2884. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/universal-macro-translation.json +0 -0
  2885. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/universal-macro-translation.schema.json +0 -0
  2886. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-receiver-envelope.json +0 -0
  2887. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/README.md +0 -0
  2888. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/keys.json +0 -0
  2889. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -0
  2890. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -0
  2891. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -0
  2892. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -0
  2893. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -0
  2894. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -0
  2895. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -0
  2896. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -0
  2897. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -0
  2898. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -0
  2899. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -0
  2900. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -0
  2901. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -0
  2902. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -0
  2903. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -0
  2904. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -0
  2905. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -0
  2906. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -0
  2907. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -0
  2908. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -0
  2909. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -0
  2910. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/positive/001-basic-post.json +0 -0
  2911. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/positive/002-es256-post.json +0 -0
  2912. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -0
  2913. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -0
  2914. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -0
  2915. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -0
  2916. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -0
  2917. /package/compliance/cache/{3.2.7 → 3.2.8}/test-vectors/webhook-signing/positive/008-request-signing-key-reuse.json +0 -0
  2918. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/account-identity-reconciliation.yaml +0 -0
  2919. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/agent-notification-configs.yaml +0 -0
  2920. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/billing-gate-dispatch.yaml +0 -0
  2921. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/buyer-fixture-publisher.yaml +0 -0
  2922. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/buyer-orchestrator-track.yaml +0 -0
  2923. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/canonical-format-validate-input.yaml +0 -0
  2924. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/capability-discovery.yaml +0 -0
  2925. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/collection-lists-pagination-integrity.yaml +0 -0
  2926. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/comply-controller-mode-gate.yaml +0 -0
  2927. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/content-standards-pagination-integrity.yaml +0 -0
  2928. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/ctv-experience-validate-input.yaml +0 -0
  2929. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/deterministic-testing.yaml +0 -0
  2930. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/error-compliance-signals.yaml +0 -0
  2931. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/error-compliance.yaml +0 -0
  2932. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/fictional-entities.yaml +0 -0
  2933. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/get-media-buys-pagination-integrity.yaml +0 -0
  2934. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/get-products-pagination-integrity.yaml +0 -0
  2935. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/get-signals-pagination-integrity.yaml +0 -0
  2936. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/governance.yaml +0 -0
  2937. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/idempotency.yaml +0 -0
  2938. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/notification-config-event-scope.yaml +0 -0
  2939. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/notification-config-lifecycle.yaml +0 -0
  2940. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/notification-config-rejections.yaml +0 -0
  2941. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/oauth-setup.yaml +0 -0
  2942. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/pagination-integrity-creative-formats.yaml +0 -0
  2943. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/pagination-integrity-list-accounts.yaml +0 -0
  2944. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/pagination-integrity.yaml +0 -0
  2945. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/premium-display-canonical-validation.yaml +0 -0
  2946. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/principal.yaml +0 -0
  2947. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/property-lists-pagination-integrity.yaml +0 -0
  2948. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/read-tool-idempotency.yaml +0 -0
  2949. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/reliable-reporting-managed-delivery.yaml +0 -0
  2950. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/reliable-reporting-reconciled-billing.yaml +0 -0
  2951. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/reporting-consumer-status.yaml +0 -0
  2952. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/reporting-core-declaration.yaml +0 -0
  2953. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/reporting-core.yaml +0 -0
  2954. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/runner-output-contract.yaml +0 -0
  2955. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/schema-validation-signals.yaml +0 -0
  2956. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/schema-validation.yaml +0 -0
  2957. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/security.yaml +0 -0
  2958. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/signed-requests.yaml +0 -0
  2959. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/trusted-match-publisher-authentication.yaml +0 -0
  2960. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/v3-envelope-integrity.yaml +0 -0
  2961. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/v4-compatibility.yaml +0 -0
  2962. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/version-negotiation.yaml +0 -0
  2963. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/webhook-emission.yaml +0 -0
  2964. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/webhook-receiver-envelope.yaml +0 -0
  2965. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/wholesale-feed-bulk-webhooks.yaml +0 -0
  2966. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/wholesale-feed-product-webhooks.yaml +0 -0
  2967. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/wholesale-feed-products-scope-isolation.yaml +0 -0
  2968. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/wholesale-feed-products.yaml +0 -0
  2969. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/wholesale-feed-signal-webhooks.yaml +0 -0
  2970. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/wholesale-feed-signals-scope-isolation.yaml +0 -0
  2971. /package/compliance/cache/{3.2.7 → 3.2.8}/universal/wholesale-feed-signals.yaml +0 -0
@@ -259,7 +259,7 @@ const ProvenanceSchema = /* @__PURE__ */ (() => z.object({
259
259
  feature_id: z.string().optional()
260
260
  }).passthrough().optional(),
261
261
  embedded_at: z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional()
262
- }).passthrough()).optional(),
262
+ }).passthrough()).min(1).optional(),
263
263
  watermarks: z.array(z.object({
264
264
  media_type: WatermarkMediaTypeSchema,
265
265
  provider: z.string(),
@@ -269,7 +269,7 @@ const ProvenanceSchema = /* @__PURE__ */ (() => z.object({
269
269
  }).passthrough().optional(),
270
270
  c2pa_action: C2PAWatermarkActionSchema.optional(),
271
271
  embedded_at: z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional()
272
- }).passthrough()).optional(),
272
+ }).passthrough()).min(1).optional(),
273
273
  disclosure: z.object({
274
274
  required: z.boolean(),
275
275
  jurisdictions: z.array(z.object({
@@ -280,10 +280,10 @@ const ProvenanceSchema = /* @__PURE__ */ (() => z.object({
280
280
  render_guidance: z.object({
281
281
  persistence: DisclosurePersistenceSchema.optional(),
282
282
  min_duration_ms: z.number().int().gte(1).optional(),
283
- positions: z.array(DisclosurePositionSchema).optional(),
283
+ positions: z.array(DisclosurePositionSchema).min(1).optional(),
284
284
  ext: ExtensionObjectSchema.optional()
285
285
  }).passthrough().optional()
286
- }).passthrough()).optional()
286
+ }).passthrough()).min(1).optional()
287
287
  }).passthrough().optional(),
288
288
  verification: z.array(z.object({
289
289
  verified_by: z.string(),
@@ -291,7 +291,7 @@ const ProvenanceSchema = /* @__PURE__ */ (() => z.object({
291
291
  result: z.union([z.literal("authentic"), z.literal("ai_generated"), z.literal("ai_modified"), z.literal("inconclusive")]),
292
292
  confidence: z.number().gte(0).lte(1).optional(),
293
293
  details_url: z.string().refine(adcpJsonSchemaUri, "Invalid URI").optional()
294
- }).passthrough()).optional(),
294
+ }).passthrough()).min(1).optional(),
295
295
  ext: ExtensionObjectSchema.optional()
296
296
  }).passthrough())();
297
297
  const CanonicalOptimizationGoalSchema = /* @__PURE__ */ (() => z.union([z.object({
@@ -1230,7 +1230,7 @@ const InlineMarkupSchema = /* @__PURE__ */ (() => z.object({
1230
1230
  location: z.object({
1231
1231
  field: z.literal("markup").optional()
1232
1232
  }).passthrough().optional()
1233
- }).passthrough())).optional(),
1233
+ }).passthrough())).min(1).optional(),
1234
1234
  provenance: ProvenanceSchema.optional(),
1235
1235
  delivery_type: z.literal("inline_markup"),
1236
1236
  markup_type: z.union([z.literal("iframe_javascript"), z.literal("javascript"), z.literal("standard")]),
@@ -1269,15 +1269,15 @@ const CatalogSchema = /* @__PURE__ */ (() => z.object({
1269
1269
  url: z.string().refine(adcpJsonSchemaUri, "Invalid URI").optional(),
1270
1270
  feed_format: FeedFormatSchema.optional(),
1271
1271
  update_frequency: UpdateFrequencySchema.optional(),
1272
- items: z.array(z.object({}).passthrough()).optional(),
1273
- ids: z.array(z.string()).optional(),
1274
- gtins: z.array(z.string()).optional(),
1275
- tags: z.array(z.string()).optional(),
1272
+ items: z.array(z.object({}).passthrough()).min(1).optional(),
1273
+ ids: z.array(z.string()).min(1).optional(),
1274
+ gtins: z.array(z.string()).min(1).optional(),
1275
+ tags: z.array(z.string()).min(1).optional(),
1276
1276
  category: z.string().optional(),
1277
1277
  query: z.string().optional(),
1278
- conversion_events: z.array(EventTypeSchema).optional(),
1278
+ conversion_events: z.array(EventTypeSchema).min(1).optional(),
1279
1279
  content_id_type: ContentIDTypeSchema.optional(),
1280
- feed_field_mappings: z.array(CatalogFieldMappingSchema).optional()
1280
+ feed_field_mappings: z.array(CatalogFieldMappingSchema).min(1).optional()
1281
1281
  }).passthrough())();
1282
1282
  const BrandReferenceSchema = /* @__PURE__ */ (() => z.object({
1283
1283
  domain: z.string().regex(new RegExp("^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$")),
@@ -1448,7 +1448,7 @@ const URLAssetSchema = /* @__PURE__ */ (() => z.object({
1448
1448
  location: z.object({
1449
1449
  field: z.literal("url").optional()
1450
1450
  }).passthrough().optional()
1451
- }).passthrough())).optional(),
1451
+ }).passthrough())).min(1).optional(),
1452
1452
  description: z.string().optional(),
1453
1453
  state_id: z.string().optional(),
1454
1454
  provenance: ProvenanceSchema.optional()
@@ -3418,25 +3418,7 @@ const UpdateMediaBuyAsyncInputRequiredSchema = /* @__PURE__ */ (() => z.object({
3418
3418
  context: ContextObjectSchema.optional(),
3419
3419
  ext: ExtensionObjectSchema.optional()
3420
3420
  }).passthrough())();
3421
- const MediaBuyDeliveryWebhookResultSchema = /* @__PURE__ */ (() => z.object({
3422
- notification_type: z.union([z.literal("scheduled"), z.literal("final"), z.literal("delayed"), z.literal("adjusted"), z.literal("window_update")]),
3423
- partial_data: z.boolean().optional(),
3424
- unavailable_count: z.number().int().gte(0).optional(),
3425
- sequence_number: z.number().int().gte(1).optional(),
3426
- next_expected_at: z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(),
3427
- reporting_period: z.object({
3428
- start: z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time"),
3429
- end: z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time"),
3430
- timezone: z.string().min(1).optional()
3431
- }).passthrough(),
3432
- currency: z.string().regex(new RegExp("^[A-Z]{3}$")).optional(),
3433
- attribution_window: AttributionWindowSchema.optional(),
3434
- media_buy_deliveries: z.array(z.object({}).passthrough()),
3435
- errors: z.array(ErrorSchema).optional(),
3436
- sandbox: z.boolean().optional(),
3437
- context: ContextObjectSchema.optional(),
3438
- ext: ExtensionObjectSchema.optional()
3439
- }).passthrough())();
3421
+ const MediaBuyDeliveryWebhookResultSchema = /* @__PURE__ */ (() => z.object({ "notification_type": z.enum(["scheduled", "final", "delayed", "adjusted", "window_update"]).describe("Type of delivery-report notification: scheduled = regular periodic update, final = campaign completed, delayed = data not yet available, adjusted = corrected data for the same window, window_update = a wider measurement window supersedes a prior window."), "partial_data": z.boolean().describe("Indicates if any media buys in this webhook have missing or delayed data.").optional(), "unavailable_count": z.number().int().gte(0).describe("Number of media buys with reporting_delayed or failed status when partial_data is true.").optional(), "sequence_number": z.number().int().gte(1).describe("Sequential notification number for this reporting webhook stream.").optional(), "next_expected_at": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "reporting_period": z.object({ "start": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time"), "end": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time"), "timezone": z.string().min(1).describe("Reporting timezone applied to this report, as 'UTC' or an IANA timezone identifier. Same meaning as get_media_buy_delivery reporting_period.timezone. Sellers SHOULD return it whenever every reported media buy shares one reporting timezone.").optional() }).catchall(z.any()).describe("Period covered by the delivery report. start and end are instants on the reporting timezone's period boundaries (the products' reporting_capabilities.timezone, echoed in timezone). They fall on UTC midnight only when that timezone is UTC."), "currency": z.string().regex(new RegExp("^[A-Z]{3}$")).describe("Deprecated in AdCP 3.2 and removed in AdCP 4.0. Optional legacy report-wide ISO 4217 currency code. It may be used only when every monetary value in the report has that denomination. A report can contain media buys with different currencies, so buyers MUST NOT interpret this field as an aggregation currency or evidence of currency conversion. Prefer media_buy_deliveries[].currency when present and package-level currency otherwise.").optional(), "attribution_window": z.object({ "post_click": z.object({ "interval": z.number().int().gte(1).describe("Number of time units. Must be 1 when unit is 'campaign'."), "unit": z.enum(["seconds", "minutes", "hours", "days", "campaign"]).describe("Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.") }).strict().describe("A time duration expressed as an interval and unit. Used for frequency cap windows, attribution windows, reach optimization windows, time budgets, and other time-based settings. When unit is 'campaign', interval must be 1 \u2014 the window spans the full campaign flight.").describe("Post-click attribution window. Conversions occurring within this duration after a click are attributed to the ad.").optional(), "post_view": z.object({ "interval": z.number().int().gte(1).describe("Number of time units. Must be 1 when unit is 'campaign'."), "unit": z.enum(["seconds", "minutes", "hours", "days", "campaign"]).describe("Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.") }).strict().describe("A time duration expressed as an interval and unit. Used for frequency cap windows, attribution windows, reach optimization windows, time budgets, and other time-based settings. When unit is 'campaign', interval must be 1 \u2014 the window spans the full campaign flight.").describe("Post-view attribution window. Conversions occurring within this duration after an ad impression (without click) are attributed to the ad.").optional(), "model": z.enum(["last_touch", "first_touch", "linear", "time_decay", "data_driven"]).describe("Attribution model used to assign credit when multiple touchpoints exist. SHOULD be populated when committing to a specific model; when absent, the seller's default applies.").optional() }).catchall(z.any()).describe("Attribution methodology and lookback windows used for conversion metrics in this report.").optional(), "media_buy_deliveries": z.array(z.object({ "media_buy_id": z.string().describe("Seller's media buy identifier."), "currency": z.string().regex(new RegExp("^[A-Z]{3}$")).describe("ISO 4217 denomination for monetary values in this media-buy delivery row, including totals, package spend, and currency-denominated package rates. Sellers SHOULD populate this field whenever all monetary values in the row share one currency. For AdCP-authored buys it MUST equal the media-buy currency, and every by_package[].currency MUST equal it. For a legacy or externally created mixed-currency buy, omit this field and all monetary or money-derived values from row totals; report those values only at package level with each package's own currency. AdCP does not perform currency conversion.").optional(), "status": z.enum(["pending_creatives", "pending_start", "pending", "active", "paused", "completed", "rejected", "canceled", "failed", "reporting_delayed"]).describe("Current media buy lifecycle or reporting status. This is distinct from the webhook envelope's top-level task status."), "expected_availability": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "is_adjusted": z.boolean().describe("Indicates this row contains updated data for a previously reported period.").optional(), "is_final": z.boolean().describe("Whether this row's delivery data is final for the reporting period.").optional(), "finalized_at": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "pricing_model": z.enum(["cpm", "vcpm", "cpc", "cpcv", "cpv", "cpp", "cpa", "revenue_share", "flat_rate", "time"]).describe("Supported pricing models for advertising products").optional(), "pacing_index": z.number().gte(0).describe("Aggregate media-buy delivery pace relative to the media-buy pacing plan. Authoritative for seller-optimized buys.").optional(), "totals": z.intersection(z.object({ "impressions": z.number().gte(0).describe("Impressions delivered").optional(), "spend": z.number().gte(0).describe("Amount spent").optional(), "clicks": z.number().gte(0).describe("Total clicks").optional(), "ctr": z.number().gte(0).lte(1).describe("Click-through rate (clicks/impressions)").optional(), "views": z.number().gte(0).describe("Content engagements counted toward the billable view threshold. For video this is a platform-defined view event (e.g., 30 seconds or video midpoint); for audio/podcast it is a stream start; for other formats it follows the pricing model's view definition. When the package uses CPV pricing, spend = views \xD7 rate.").optional(), "completed_views": z.number().gte(0).describe("Video/audio completions. When the package has a completed_views optimization goal with view_duration_seconds, completions are counted at that threshold rather than 100% completion.").optional(), "completion_rate": z.union([z.number().gte(0).lte(1).describe("Completion rate (completed_views/impressions). Null indicates the metric is not applicable to this package/buy (e.g. completion rate on a non-video buy)."), z.null().describe("Completion rate (completed_views/impressions). Null indicates the metric is not applicable to this package/buy (e.g. completion rate on a non-video buy).")]).describe("Completion rate (completed_views/impressions). Null indicates the metric is not applicable to this package/buy (e.g. completion rate on a non-video buy).").optional(), "conversions": z.number().gte(0).describe("Total conversions attributed to this delivery. When by_event_type is present, this equals the sum of all by_event_type[].count entries.").optional(), "conversion_value": z.number().gte(0).describe("Total monetary value of attributed conversions (in the reporting currency)").optional(), "commissionable_value": z.number().gte(0).describe("Settled portion of attributed conversion value eligible for revenue-share commission, in the reporting currency. For revenue_share pricing, spend = round_currency(commissionable_value \xD7 commission_rate). This is distinct from conversion_value because taxes, shipping, discounts, returns, cancellations, or ineligible items may be excluded under the agreed commission basis.").optional(), "roas": z.number().gte(0).describe("Return on ad spend (conversion_value / spend)").optional(), "cost_per_acquisition": z.number().gte(0).describe("Cost per conversion (spend / conversions)").optional(), "new_to_brand_rate": z.number().gte(0).lte(1).describe("Fraction of `conversions` (transactions) from first-time brand buyers, 0 = none, 1 = all. For retail-media unit-volume tracking of first-time buyers, see `new_to_brand_units` (count, not rate).").optional(), "leads": z.number().gte(0).describe("Leads generated (convenience alias for by_event_type where event_type='lead')").optional(), "incremental_sales_lift": z.number().gte(0).describe("Incremental sales lift attributed to the campaign \u2014 sales above the control/holdout baseline. Reported as a fraction (0.15 = 15% lift) or as an absolute value depending on seller convention. The seller's `attribution_methodology` qualifier (typically `deterministic_purchase` or `modeled`) and `attribution_window` qualifier on the matching `committed_metrics` entry disambiguate the methodology and window.").optional(), "brand_lift": z.number().gte(0).describe("Brand lift \u2014 measured change in a brand metric (awareness, consideration, favorability, purchase intent, or ad recall) attributed to the campaign. Typically panel-based or survey-based. Reported as a fraction (0.05 = 5% lift). **Multidimensional in production** \u2014 Kantar, Upwave, Cint, DV all report each dimension separately with its own sample size and confidence interval. The dimension flows through `qualifier.lift_dimension` on `committed_metrics` / `by_package[].metric_values` (`awareness` | `consideration` | `favorability` | `purchase_intent` | `ad_recall`); rows under different dimensions are different surveyed outcomes and must not be combined. Use `attribution_methodology: 'panel_based'` qualifier when the underlying methodology is a panel.").optional(), "foot_traffic": z.number().gte(0).describe("Store visits attributed to ad exposure. Count of incremental visits over baseline. Typically uses location-data panel methodology (`attribution_methodology: 'panel_based'`) or deterministic loyalty-card match (`attribution_methodology: 'deterministic_purchase'`).").optional(), "conversion_lift": z.number().gte(0).describe("Incremental conversions attributed to the campaign \u2014 conversions above the control/holdout baseline. Reported as a fraction (0.10 = 10% lift) or as an absolute count depending on seller convention. Distinct from `conversions` (raw count of attributed conversions); conversion_lift requires a control group and an incrementality methodology.").optional(), "brand_search_lift": z.number().gte(0).describe("Lift in brand search query volume attributed to the campaign \u2014 measured via search-data partnerships (Google, Microsoft) or survey methodology. Reported as a fraction (0.20 = 20% lift in branded search).").optional(), "plays": z.number().gte(0).describe("Number of times the ad creative was displayed or played on DOOH or broadcast inventory. Raw play count before any impression multiplier is applied. Mirrors `forecastable-metric.json`'s `plays` token for forecast\u2194delivery reconciliation. Distinct from `dooh_metrics.loop_plays` (scheduled-rotation count) and from `impressions` (multiplied audience figure).").optional(), "measurement_source": z.string().regex(new RegExp("^[a-z0-9_]+$")).max(64).describe("Third-party measurement provider whose data produced this row's audience numbers. Mirrors delivery-forecast.json's measurement_source so forecast and delivery reconcile on the same declaration \u2014 distinct from demographic_system, which specifies demographic notation. Makes measured-channel rows (radio, broadcast, OOH) self-describing: a reconciliation join can tie delivered numbers to the system that measured them without consulting out-of-band context. Lowercase slug format.").optional(), "by_event_type": z.array(z.object({ "event_type": z.enum(["page_view", "view_content", "select_content", "select_item", "search", "share", "add_to_cart", "remove_from_cart", "viewed_cart", "add_to_wishlist", "initiate_checkout", "add_payment_info", "purchase", "refund", "lead", "qualify_lead", "close_convert_lead", "disqualify_lead", "complete_registration", "subscribe", "follow", "content_view", "watch_milestone", "start_trial", "app_install", "app_launch", "contact", "schedule", "donate", "submit_application", "custom"]).describe("The event type"), "event_source_id": z.string().describe("Event source that produced these conversions (for disambiguation when multiple event sources are configured)").optional(), "count": z.number().gte(0).describe("Number of events of this type"), "value": z.number().gte(0).describe("Total monetary value of events of this type").optional() }).catchall(z.any())).describe("Conversion metrics broken down by event type. Spend-derived metrics (ROAS, CPA) are only available at the package/totals level since spend cannot be attributed to individual event types.").optional(), "grps": z.number().gte(0).describe("Gross Rating Points delivered (for CPP)").optional(), "reach": z.number().gte(0).describe("Unique reach in the units specified by reach_unit. When reach_unit is omitted, units are unspecified \u2014 do not compare reach values across packages or media buys without a common reach_unit. The measurement window for this value is declared in `reach_window`; when `reach_window` is omitted, the window is unspecified and buyers MUST NOT sum reach across reports (the value MAY be a daily snapshot, a cumulative total, or something else).").optional(), "reach_unit": z.enum(["individuals", "households", "devices", "accounts", "cookies", "custom"]).describe("Unit of measurement for reach and audience size metrics. Different channels and measurement providers count reach in fundamentally different units, making cross-channel comparison impossible without declaring the unit.").describe("Unit of measurement for the reach field. Aligns with the reach_unit declared on optimization goals and delivery forecasts. Required when reach is present to enable cross-platform comparison.").optional(), "reach_window": z.object({ "kind": z.enum(["cumulative", "period", "rolling"]).describe("Window semantics. `cumulative` \u2014 uniques since campaign start; the value is the total unique count to date and MUST NOT be summed across rows (each later row supersedes the earlier value). `period` \u2014 uniques within a single non-overlapping reporting period (e.g., a daily snapshot for a specific calendar day). Adjacent `period` rows do not share audiences by construction, but the same person MAY appear across multiple periods, so MUST NOT be summed across rows to compute campaign reach. `rolling` \u2014 uniques within a trailing window ending at the row's reporting timestamp (e.g., trailing-7-day reach). Adjacent rolling rows overlap and MUST NOT be summed; each row's value stands alone."), "period": z.object({ "interval": z.number().int().gte(1).describe("Number of time units. Must be 1 when unit is 'campaign'."), "unit": z.enum(["seconds", "minutes", "hours", "days", "campaign"]).describe("Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.") }).strict().describe("A time duration expressed as an interval and unit. Used for frequency cap windows, attribution windows, reach optimization windows, time budgets, and other time-based settings. When unit is 'campaign', interval must be 1 \u2014 the window spans the full campaign flight.").describe('Duration of the measurement window. REQUIRED when `kind` is `period` or `rolling` \u2014 declares the snapshot length (e.g., `{"interval": 1, "unit": "days"}` for a daily snapshot) or the trailing-window length (e.g., `{"interval": 7, "unit": "days"}` for trailing-7-day rolling reach). When `kind` is `cumulative`, this field is implicit (campaign-to-date) and SHOULD be omitted.').optional() }).catchall(z.any()).and(z.union([z.any().refine((value) => !z.object({ "kind": z.enum(["period", "rolling"]) }).safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.intersection(z.object({ "kind": z.enum(["period", "rolling"]) }), z.object({ "period": z.any().refine((value) => value !== void 0, "Required") }).passthrough())]).describe("Must also satisfy at least one of these alternatives.")).describe("Measurement window for the reported `reach` and `frequency` values in this row. Declares whether the values are a per-period snapshot, a trailing rolling window, or cumulative-to-date \u2014 without this declaration, buyers summing `reach` across rows (e.g., daily delivery reports) can silently double-count audiences. Sellers SHOULD populate this whenever `reach` is present.").optional(), "frequency": z.number().gte(0).describe("Average frequency per reach unit, measured over the window declared in `reach_window`. When `reach_unit` is 'households', this is average exposures per household; when 'accounts', per logged-in account; etc. When `reach_window` is omitted, the window is unspecified \u2014 buyers MUST NOT compare or average frequency values across rows.").optional(), "quartile_data": z.union([z.object({ "q1_views": z.number().gte(0).describe("25% completion views").optional(), "q2_views": z.number().gte(0).describe("50% completion views").optional(), "q3_views": z.number().gte(0).describe("75% completion views").optional(), "q4_views": z.number().gte(0).describe("100% completion views").optional() }).describe("Audio/video quartile completion data. Null indicates the metric is not applicable to this package/buy (e.g. quartile data on a non-video buy). Individual quartiles are addressable via the leaf metric identities `quartile_25` (q1_views), `quartile_50` (q2_views), `quartile_75` (q3_views), and `quartile_100` (q4_views) for declaration, commitments, aggregates, and breakdown sorting; this object remains the canonical carrier of the values. Quartiles are player-fired events (VAST firstQuartile/midpoint/thirdQuartile/complete). `quartile_100` counts 100%-of-duration completions and is distinct from `completed_views`, which counts completions at the seller's billable view threshold (`view_duration_seconds`) when one is set."), z.null().describe("Audio/video quartile completion data. Null indicates the metric is not applicable to this package/buy (e.g. quartile data on a non-video buy). Individual quartiles are addressable via the leaf metric identities `quartile_25` (q1_views), `quartile_50` (q2_views), `quartile_75` (q3_views), and `quartile_100` (q4_views) for declaration, commitments, aggregates, and breakdown sorting; this object remains the canonical carrier of the values. Quartiles are player-fired events (VAST firstQuartile/midpoint/thirdQuartile/complete). `quartile_100` counts 100%-of-duration completions and is distinct from `completed_views`, which counts completions at the seller's billable view threshold (`view_duration_seconds`) when one is set.")]).describe("Audio/video quartile completion data. Null indicates the metric is not applicable to this package/buy (e.g. quartile data on a non-video buy). Individual quartiles are addressable via the leaf metric identities `quartile_25` (q1_views), `quartile_50` (q2_views), `quartile_75` (q3_views), and `quartile_100` (q4_views) for declaration, commitments, aggregates, and breakdown sorting; this object remains the canonical carrier of the values. Quartiles are player-fired events (VAST firstQuartile/midpoint/thirdQuartile/complete). `quartile_100` counts 100%-of-duration completions and is distinct from `completed_views`, which counts completions at the seller's billable view threshold (`view_duration_seconds`) when one is set.").optional(), "time_based_views": z.array(z.object({ "threshold_seconds": z.number().gt(0).describe("Continuous duration threshold in seconds an impression must meet to count as a view in this entry."), "basis": z.enum(["play_time", "in_view"]).describe("Whether the threshold clock runs on playback time or in-view time. Required because play-time and in-view counts at the same threshold are materially different numbers."), "views": z.number().gte(0).describe("Count of views meeting this entry's threshold and basis."), "standard": z.enum(["mrc", "groupm"]).describe("Viewability standard governing the in-view clock for this entry. RECOMMENDED when basis is 'in_view' (MRC and GroupM thresholds differ); not applicable to play_time entries.").optional() }).catchall(z.any())).describe("Time-threshold video view counts. Each entry reports views that met a continuous duration threshold under a stated basis, rather than a completion percentage (percentage-based completion is quartile_data). Thresholds of 2 and 6 seconds are RECOMMENDED cross-platform reporting points; any seller-defined threshold is permitted. One entry per (threshold_seconds, basis) pair per reporting period \u2014 sellers MUST de-duplicate before emission and MUST NOT emit the same pair twice; buyers MAY treat duplicate pairs as a seller-side conformance bug. Entries under different bases are different metrics and MUST NOT be summed (see view-threshold-basis). Primarily an autoplay/skippable-video metric (social, olv, in-feed video); completion metrics remain the currency for lean-back CTV/cinema inventory. Distinct from `views` (the single billable-threshold scalar) and from `viewability.viewed_seconds` (average in-view duration, not a threshold count). Array entries are not individually sortable in breakdown sort_by. Disclosure-grade surface: (threshold_seconds, basis) is not part of the committed-metric qualifier vocabulary, so a `committed_metrics` entry for `time_based_views` contracts the array's presence, not specific thresholds.").optional(), "dooh_metrics": z.object({ "loop_plays": z.number().int().gte(0).describe("Number of times ad played in rotation").optional(), "screens_used": z.number().int().gte(0).describe("Number of unique screens displaying the ad").optional(), "screen_time_seconds": z.number().int().gte(0).describe("Total display time in seconds").optional(), "sov_achieved": z.number().gte(0).lte(1).describe("Actual share of voice delivered on a 0.0-1.0 scale. To compare this achieved value with the selected flat-rate DOOH parameters.sov_percentage, multiply sov_achieved by 100. Share is time-weighted: the sum of the delivered segment durations divided by the full loop duration. On equal-duration loops this equals the slot-count ratio. See also ooh_metrics.share_of_voice_contracted, which uses the same 0.0-1.0 scale.").optional(), "calculation_notes": z.string().describe("Per-row supplementary methodology notes for DOOH impression calculation (e.g., 'rotation-based; 6-second slot weighted by 70% audience overlap'). Free-form prose for context that doesn't fit the structured measurement-vendor surface. Canonical methodology declarations belong on the measurement vendor's `get_adcp_capabilities.measurement.metrics[]` block where they're discoverable once and inherited across delivery rows; this field is for row-specific context (a particular daypart's calculation, a venue-mix exception) rather than the seller's general methodology.").optional(), "venue_breakdown": z.array(z.object({ "venue_id": z.string().describe("Venue identifier"), "venue_name": z.string().describe("Human-readable venue name").optional(), "venue_type": z.string().describe("Venue type (e.g., 'airport', 'transit', 'retail', 'billboard')").optional(), "impressions": z.number().int().gte(0).describe("Impressions delivered at this venue"), "loop_plays": z.number().int().gte(0).describe("Loop plays at this venue").optional(), "screens_used": z.number().int().gte(0).describe("Number of screens used at this venue").optional() }).catchall(z.any())).describe("Per-venue performance breakdown").optional() }).catchall(z.any()).describe("DOOH-specific metrics (only included for DOOH campaigns)").optional(), "ooh_metrics": z.object({ "panels": z.array(z.object({ "identifiers": z.array(z.object({ "id": z.string().describe("Panel/face identifier within the id_type namespace"), "id_type": z.enum(["geopath", "route_frame", "plant_face", "other"]).describe("Identifier scheme: geopath (US Geopath Spot ID), route_frame (UK Route frame ID), plant_face (the operator's own panel number \u2014 the identifier both sides of a direct contract know), other (markets without a listed scheme). New schemes ship as enum additions in minors.") }).catchall(z.any())).min(1).describe("All identifiers for this panel, one entry per scheme"), "name": z.string().describe("Human-readable location description (e.g., 'I-95 N of Exit 12, right-hand read')").optional() }).catchall(z.any())).describe("Panels (faces) covered by this row. A panel commonly carries multiple identifiers at once \u2014 OOH contracts key line items on the measurement-currency panel number AND the operator's own panel number together.").optional(), "posting_period_start": z.string().date().describe("First in-charge date of the posting period this row covers").optional(), "posting_period_end": z.string().date().describe("Last date of the posting period this row covers").optional(), "average_posted_date": z.string().date().describe("Average actual posting date across the row's units \u2014 the date the display term runs from under OAAA Bulletin \xA72.2 / Poster \xA73.2(a) when materials were timely. Read with materials_timely to know whether that rule was in force.").optional(), "materials_timely": z.boolean().describe("Seller's assertion that the buyer delivered acceptable materials by the contractual deadline, which determines whether the \xA72.2 posting-completion rule (term runs from average posting date) applied. An assertion about the buyer's delivery, not a derived value \u2014 it is not recomputable from postings[] evidence, and is the one field in this block that isn't checkable against it.").optional(), "share_of_voice_contracted": z.number().gte(0).lte(1).describe("Contracted share of voice where the buy is rotation-based (e.g., rotary bulletin programs) rather than an exclusive face, on a 0.0-1.0 scale. Share is time-weighted: the sum of contracted display durations divided by the full rotation duration. On equal-duration rotations this equals the slot-count ratio.").optional(), "illuminated_hours": z.number().gte(0).lte(24).describe("Contracted daily illumination hours for the panels in this row. Determines the measured day-part basis (12/18/24-hour impressions) and the illumination-credit remedy when unmet.").optional(), "estimated_impressions": z.number().int().gte(0).describe("Modeled audience impressions for the panels and period in this row. This is the channel's delivery number \u2014 there is no event-counted alternative. The methodology tier MUST be declared in estimation_basis; provider identity is declared in the row-level measurement_source; the billing vendor is declared in measurement_terms.billing_measurement. The row's top-level impressions SHOULD carry the same value so cross-channel aggregation works without channel-specific logic.").optional(), "estimation_basis": z.enum(["currency_measured", "seller_modeled"]).describe("Methodology tier of estimated_impressions: currency_measured (an audience measurement currency's estimate for the panel and period \u2014 Geopath, Route, MOVE, COMMB \u2014 with the provider named in the row-level measurement_source) or seller_modeled (the seller's own model \u2014 the honest fallback for markets without a measurement currency). Tier, not provider: currencies change over time, so provider identity is data on measurement_source, not values in this enum.").optional(), "postings": z.array(z.object({ "panel_id": z.string().describe("Panel reference matching one of panels[].identifiers[].id"), "event_type": z.enum(["posted", "rotated", "repaired", "removed"]).describe("What the record attests: initial posting, rotary rotation to a new face, repair/reposting after damage, or removal at flight end").default("posted"), "occurred_at": z.string().date().describe("Date the attested event happened. For posted events this is the posting date \u2014 display terms customarily run from the average posting date across units."), "evidence": z.object({ "url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").describe("The evidence artifact \u2014 photograph, scanned tearsheet, or evidence package"), "captured_at": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "latitude": z.number().gte(-90).lte(90).describe("Capture location latitude").optional(), "longitude": z.number().gte(-180).lte(180).describe("Capture location longitude").optional(), "notes": z.string().describe("Context that doesn't fit the structured fields (e.g., 'shot from the eastbound approach at 40mph equivalent')").optional() }).catchall(z.any()).describe("Evidence artifact for this event (completion photograph); capture time and location ride the artifact").optional() }).catchall(z.any())).describe("Posting records \u2014 the seller-attested settlement artifact proving each panel was posted for the period. Industry convention (OAAA model contracts, Proof of Performance \xA73.5): photo evidence per bulletin within five calendar days of posting and again after each rotary rotation; one representative close-up photograph per creative design variation for poster showings (no deadline attached). Distinct from the \xA72.2 posting-completion obligation (posting within five business days of the scheduled date), which governs average_posted_date, not evidence.").optional(), "calculation_notes": z.string().describe("Row-specific methodology context that doesn't fit the structured fields (e.g., a partial-period proration or a market-specific estimate adjustment). Same role as dooh_metrics.calculation_notes \u2014 canonical methodology declarations belong on the measurement vendor's discoverable surfaces, not here.").optional() }).catchall(z.any()).and(z.union([z.any().refine((value) => !z.object({ "estimated_impressions": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough().safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.object({ "estimated_impressions": z.any().refine((value) => value !== void 0, "Required"), "estimation_basis": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("Classic (static) OOH metrics \u2014 printed bulletins, posters, transit, and street furniture (only included for ooh campaigns). Experimental in AdCP 3.2. Static units have no play event: the delivery number is a period-level modeled audience estimate whose methodology tier is declared in estimation_basis (provider identity rides the row-level measurement_source), and the settlement artifact is the posting record \u2014 it proves the posting period, not an airing.").optional(), "viewability": z.object({ "vendor": z.object({ "domain": z.string().regex(new RegExp("^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$")).describe("Domain where /.well-known/brand.json is hosted, or the brand's operating domain"), "brand_id": z.string().regex(new RegExp("^[a-z0-9_]+$")).describe("Brand identifier within the house portfolio. Optional for single-brand domains.").optional(), "countries": z.array(z.string().regex(new RegExp("^[A-Z]{2}$"))).min(1).refine((arr) => arr.every((item, i) => arr.indexOf(item) == i), "All items must be unique!").describe("Canonical set of ISO 3166-1 alpha-2 countries for this advertiser identity. Omit for a global/default identity. Array order is not meaningful; producers MUST sort codes lexicographically before computing keys or signatures. This qualifies account identity and is not delivery targeting.").optional(), "industries": z.array(z.string()).describe("Inline override for the brand's industries. Useful when the caller cannot modify the brand's canonical brand.json but needs to declare industries for governance (e.g., Annex III vertical detection). brand.json remains the canonical source; when omitted here, governance agents SHOULD resolve from brand.json.").optional(), "data_subject_contestation": z.object({ "url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").regex(new RegExp("^https://")).optional(), "email": z.string().email().optional(), "languages": z.array(z.string()).optional() }).strict().and(z.union([z.object({ "url": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "email": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("Inline override for the brand's contestation contact point. Useful when the operator does not control brand.json but needs to discharge Art 22(3) for this plan. brand.json is canonical; when omitted, governance agents resolve brand \u2192 house \u2192 missing.").optional(), "brand_kit_override": z.object({ "logo": z.object({ "asset_type": z.literal("image").describe("Discriminator identifying this as an image asset. See /schemas/creative/asset-types for the registry."), "url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").describe("URL to the image asset"), "width": z.number().int().gte(1).describe("Width in pixels"), "height": z.number().int().gte(1).describe("Height in pixels"), "file_size_bytes": z.number().int().gte(1).describe("Image file size in bytes. Required by agents that advertise a max_file_size_kb constraint.").optional(), "pixel_ratio": z.number().gt(0).describe("Intrinsic pixels per logical render pixel (for example `2` for a 600\xD7500 image intended to render at 300\xD7250). Optional because a validator can infer the ratio when the target format declares logical dimensions. When supplied, it MUST agree with both `width / logical_width` and `height / logical_height`; it is never a substitute for the intrinsic `width` and `height` fields.").optional(), "state_id": z.string().describe("Binding used only when this image populates a `seller_rendered_stateful_display` `state_canvases` slot. It MUST match one declared `states[].state_id` (semantic validators resolve it). Omit for ordinary image slots.").optional(), "breakpoint_id": z.string().describe("Binding used only when this image populates a `seller_rendered_stateful_display` `state_canvases` slot. It MUST match one breakpoint declared on the selected state (semantic validators resolve it). Omit for ordinary image slots.").optional(), "focal_point": z.array(z.number().gte(0).lte(1)).min(2).max(2).describe("Normalized `[x, y]` coordinates (0\u20131 from top-left) of the image's visual anchor. Seller-side renderers crop toward the focal point when deriving renditions across breakpoints and aspect ratios; absent, cropping falls back to center-weighted defaults.").optional(), "format": z.string().describe("Image file format (jpg, png, gif, webp, etc.)").optional(), "alt_text": z.string().describe("Alternative text for accessibility").optional(), "provenance": z.object({ "digital_source_type": z.enum(["digital_capture", "digital_creation", "trained_algorithmic_media", "composite_with_trained_algorithmic_media", "algorithmic_media", "composite_capture", "composite_synthetic", "human_edits", "data_driven_media"]).describe("IPTC-aligned classification of AI involvement in producing this content").optional(), "synthetic_depiction": z.boolean().describe("Assessed declaration of whether the content synthetically depicts a real or fictional person performing or appearing in a way that was generated or materially manipulated rather than captured as depicted. `true` covers both a fully synthetic performer and material manipulation of a real performer; `false` is an assessed declaration that the content does not contain such a depiction. Absence means the content has not been assessed for synthetic depiction. This field does not claim consent, legality, or independent verification, and receivers MUST NOT derive it solely from `digital_source_type`.").optional(), "ai_tool": z.object({ "name": z.string().describe("Name of the AI tool or model (e.g., 'DALL-E 3', 'Stable Diffusion XL', 'Gemini')"), "version": z.string().describe("Version identifier for the AI tool or model (e.g., '25.1', '0125', '2.1'). For generative models, use the model version rather than the API version.").optional(), "provider": z.string().describe("Organization that provides the AI tool (e.g., 'OpenAI', 'Stability AI', 'Google')").optional() }).describe("AI system used to generate or modify this content. Aligns with IPTC 2025.1 AI metadata fields and C2PA claim_generator.").optional(), "human_oversight": z.enum(["none", "prompt_only", "selected", "edited", "directed"]).describe("Level of human involvement in the AI-assisted creation process. Independent of `disclosure.required` \u2014 the protocol does not derive disclosure obligations from oversight level. Some regulations include carve-outs for human-edited or human-directed AI output, but those carve-outs have factual prerequisites the schema cannot evaluate. Asserting `edited` or `directed` does not by itself justify `disclosure.required: false`.").optional(), "declared_by": z.object({ "agent_url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").describe("URL of the agent or service that declared this provenance").optional(), "role": z.enum(["creator", "advertiser", "agency", "platform", "tool"]).describe("Role of the declaring party in the supply chain") }).describe("Party declaring this provenance. Identifies who attached the provenance claim, enabling receiving parties to assess trust.").optional(), "declared_at": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "created_time": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "c2pa": z.object({ "manifest_url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").describe("URL to the C2PA manifest store for this content") }).describe("C2PA sidecar manifest reference. Links to a detached cryptographic provenance manifest for this content. Note: file-level C2PA bindings break when ad servers transcode, resize, or re-encode assets. For pipelines with intermediaries, consider embedded_provenance as the primary provenance mechanism.").optional(), "embedded_provenance": z.array(z.object({ "method": z.enum(["manifest_wrapper", "provenance_markers"]).describe("How provenance data is carried within the content"), "standard": z.string().describe("Standard the embedding conforms to, if any (e.g., 'c2pa' for C2PA Section A.7 text manifest embedding)").optional(), "provider": z.string().describe("Organization that performed the embedding (e.g., 'Encypher', 'Digimarc'). Display label and audit context \u2014 not a wire identifier."), "verify_agent": z.object({ "agent_url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").regex(new RegExp("^https://")).describe("URL of the governance agent the buyer represents was used to embed/verify this layer. MUST use the `https://` scheme and MUST appear in the seller's `creative_policy.accepted_verifiers[].agent_url` list (canonicalized per /docs/reference/url-canonicalization: lowercase scheme and host, strip default port, normalize path dot-segments). Sellers MUST NOT call this URL until the canonicalized match is confirmed."), "feature_id": z.string().describe("Optional `feature_id` the buyer represents the seller should request via `get_creative_features` (e.g., `encypher.markers_present_v2`). SHOULD match the `feature_id` declared on the matching `accepted_verifiers[]` entry, or be omitted to defer the selector to the seller. When the seller's entry pins a `feature_id`, that value wins; when neither side pins, the seller selects from the agent's `governance.creative_features` catalog.").optional() }).strict().describe("Buyer's representation that this embedding can be verified by a governance agent on the seller's `creative_policy.accepted_verifiers` list. The `agent_url` MUST match (canonicalized) one of the seller's published `accepted_verifiers[].agent_url` entries; sellers reject `sync_creatives` submissions whose `verify_agent.agent_url` is off-list with `PROVENANCE_VERIFIER_NOT_ACCEPTED`. This is buyer-supplied evidence, not buyer-driven routing \u2014 the seller is the verifier-of-record and the seller controls which agent it actually calls (the seller MAY use a different on-list agent if it determines this is more appropriate; the seller does not call buyer-asserted endpoints outside its allowlist). MAY be omitted for self-verifiable embeddings (e.g., a C2PA text manifest with a public key the seller already trusts).").optional(), "embedded_at": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional() })).min(1).describe("Provenance metadata embedded within the content stream. Each entry declares one embedding layer: structured provenance data carried inside the content itself, as distinct from sidecar references (c2pa.manifest_url). Embedded provenance survives operations that break sidecar and file-level bindings: ad-server transcoding, CMS ingestion, copy-paste, reformatting, and CDN re-encoding. For ad-tech pipelines where content passes through multiple intermediaries, embedded provenance is the reliable path for provenance that persists from declaration through delivery. This is a declaration by the embedding party. The receiving party (the seller) is the verifier-of-record: it confirms the claim by calling a governance agent it trusts (typically one published in `creative_policy.accepted_verifiers`).").optional(), "watermarks": z.array(z.object({ "media_type": z.enum(["audio", "image", "video", "text"]).describe("Media category of the watermarked content"), "provider": z.string().describe("Organization that applied the watermark (e.g., 'Imatag', 'Steg.AI', 'Encypher'). Display label and audit context \u2014 not a wire identifier."), "verify_agent": z.object({ "agent_url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").regex(new RegExp("^https://")).describe("URL of the governance agent the buyer represents was used to apply/detect this watermark. MUST use the `https://` scheme and MUST appear in the seller's `creative_policy.accepted_verifiers[].agent_url` list (canonicalized per /docs/reference/url-canonicalization: lowercase scheme and host, strip default port, normalize path dot-segments). Sellers MUST NOT call this URL until the canonicalized match is confirmed."), "feature_id": z.string().describe("Optional `feature_id` the buyer represents the seller should request via `get_creative_features` (e.g., `imatag.watermark_detected`). SHOULD match the `feature_id` declared on the matching `accepted_verifiers[]` entry, or be omitted to defer the selector to the seller. When the seller's entry pins a `feature_id`, that value wins; when neither side pins, the seller selects from the agent's `governance.creative_features` catalog.").optional() }).strict().describe("Buyer's representation that this watermark can be detected by a governance agent on the seller's `creative_policy.accepted_verifiers` list. The `agent_url` MUST match (canonicalized) one of the seller's published `accepted_verifiers[].agent_url` entries; sellers reject `sync_creatives` submissions whose `verify_agent.agent_url` is off-list with `PROVENANCE_VERIFIER_NOT_ACCEPTED`. This is buyer-supplied evidence, not buyer-driven routing \u2014 the seller is the verifier-of-record and the seller controls which agent it actually calls (the seller MAY use a different on-list agent if it determines this is more appropriate; the seller does not call buyer-asserted endpoints outside its allowlist).").optional(), "c2pa_action": z.enum(["c2pa.watermarked.bound", "c2pa.watermarked.unbound"]).describe("C2PA action classification for this watermark").optional(), "embedded_at": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional() })).min(1).describe("Content watermarks applied to this asset. Each entry declares one watermarking layer: a content modification that encodes an identifier or fingerprint within the asset. Watermarks differ from embedded provenance: a watermark encodes an identifier (who generated it, who owns it), while embedded provenance carries or references a structured provenance record (the full chain of custody). A single asset may carry both. Aligns with C2PA action taxonomy: c2pa.watermarked.bound (watermark linked to a C2PA manifest) and c2pa.watermarked.unbound (watermark independent of any manifest). This is a declaration by the watermarking party. The receiving party (the seller) is the verifier-of-record: it confirms the claim by calling a governance agent it trusts (typically one published in `creative_policy.accepted_verifiers`).").optional(), "disclosure": z.object({ "required": z.boolean().describe("The declaring party's claim that AI disclosure is required for this content under applicable regulations. This is a declared signal carried through the supply chain \u2014 useful as a routing and audit input \u2014 not a regulatory determination made by the protocol. Receiving parties remain responsible for their own jurisdictional analysis and should not treat `required: false` as compliance cover."), "jurisdictions": z.array(z.object({ "country": z.string().describe("ISO 3166-1 alpha-2 country code (e.g., 'US', 'DE', 'CN')"), "region": z.string().describe("Sub-national region code (e.g., 'CA' for California, 'BY' for Bavaria)").optional(), "regulation": z.string().describe("Regulation identifier (e.g., 'eu_ai_act_article_50', 'ca_sb_942', 'cn_deep_synthesis')"), "label_text": z.string().describe("Required disclosure label text for this jurisdiction, in the local language").optional(), "render_guidance": z.object({ "persistence": z.enum(["continuous", "initial", "flexible"]).describe("How long the disclosure must persist during content playback or display").optional(), "min_duration_ms": z.number().int().gte(1).describe("Minimum display duration in milliseconds for initial persistence. Recommended when persistence is initial \u2014 without it, the duration is at the publisher's discretion. At serve time the publisher reads this from provenance since the brief is not available.").optional(), "positions": z.array(z.enum(["prominent", "footer", "audio", "subtitle", "overlay", "end_card", "pre_roll", "companion"]).describe("Where a required disclosure should appear within a creative. Used by creative briefs to specify disclosure placement and by formats to declare which positions they can render.")).min(1).refine((arr) => arr.every((item, i) => arr.indexOf(item) == i), "All items must be unique!").describe("Preferred disclosure positions in priority order. The first position a format supports should be used.").optional(), "ext": z.record(z.string(), z.any()).describe("Extension object for platform-specific, vendor-namespaced parameters. Extensions are always optional and must be namespaced under a vendor/platform key (e.g., ext.gam, ext.roku). Used for custom capabilities, partner-specific configuration, and features being proposed for standardization.").optional() }).describe("How the disclosure should be rendered for this jurisdiction. Expresses the declaring party's intent for persistence and position based on regulatory requirements. Publishers control actual rendering but governance agents can audit whether guidance was followed.").refine((value) => Object.keys(value).length >= 1, "Object must contain at least 1 property").optional() })).min(1).describe("Jurisdictions where disclosure obligations apply").optional() }).describe("Regulatory disclosure requirements for this content. Indicates whether AI disclosure is required and under which jurisdictions.").optional(), "verification": z.array(z.object({ "verified_by": z.string().describe("Name of the verification service (e.g., 'DoubleVerify', 'Hive Moderation', 'Reality Defender')"), "verified_time": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "result": z.enum(["authentic", "ai_generated", "ai_modified", "inconclusive"]).describe("Verification outcome"), "confidence": z.number().gte(0).lte(1).describe("Confidence score of the verification result (0.0 to 1.0)").optional(), "details_url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").describe("URL to the full verification report").optional() })).min(1).describe("Third-party verification or detection results for this content. Multiple services may independently evaluate the same content. Provenance is a claim \u2014 verification results attached by the declaring party are supplementary. The enforcing party (e.g., seller/publisher) should run its own verification via get_creative_features or calibrate_content.").optional(), "ext": z.record(z.string(), z.any()).describe("Extension object for platform-specific, vendor-namespaced parameters. Extensions are always optional and must be namespaced under a vendor/platform key (e.g., ext.gam, ext.roku). Used for custom capabilities, partner-specific configuration, and features being proposed for standardization.").optional() }).describe("Provenance metadata for this asset, overrides manifest-level provenance").optional() }).catchall(z.any()).describe("Override logo asset.").optional(), "colors": z.object({ "primary": z.string().regex(new RegExp("^#[0-9a-fA-F]{6}$")).optional(), "secondary": z.string().regex(new RegExp("^#[0-9a-fA-F]{6}$")).optional(), "accent": z.string().regex(new RegExp("^#[0-9a-fA-F]{6}$")).optional() }).catchall(z.any()).describe("Override brand colors (hex strings).").optional(), "voice": z.string().describe("Override brand-voice description for surface-composed text/audio output.").optional(), "tagline": z.string().describe("Override tagline.").optional() }).catchall(z.any()).describe("Inline override for brand-kit fields normally resolved from `/.well-known/brand.json` on `domain` (logo, colors, voice, tagline). Use when brand.json is missing, stale, or inappropriate for this specific call \u2014 e.g., a campaign-scoped tagline, a co-branded creative, a freshly-rebranded color palette the brand.json hasn't shipped yet. Same inline-override pattern as `industries` and `data_subject_contestation` above: brand.json is canonical, the override is per-call. Adopters needing to override fields outside this subset (`voice_attributes`, `prohibited_terms`, etc.) MUST publish a different brand.json and reference it via a different `domain` \u2014 the inline override is intentionally narrow to a small high-traffic subset.\n\n**Merge semantics (normative).** The merge is **field-level**, not whole-object replacement. Each field within `brand_kit_override` (`logo`, `colors`, `voice`, `tagline`) is evaluated independently \u2014 when a field is present on the override the override value applies; when a field is absent the brand.json value applies (or is absent if brand.json doesn't carry one either). For composite fields (`colors.primary`, `colors.secondary`, `colors.accent`), the merge is one level deeper: each color slot is evaluated independently \u2014 a producer can override `colors.primary` while still inheriting `colors.secondary` from brand.json. SDKs MUST NOT treat a present `brand_kit_override.colors` as wiping the brand.json `colors` block entirely; only the per-slot fields present in the override take precedence. Without this rule, a partial-override semantics would diverge across SDKs and produce inconsistent rendering for the same payload.").optional() }).strict().describe("Vendor that produced these viewability values. Optional but RECOMMENDED so the row is self-describing \u2014 buyer agents reading delivery in isolation can attribute the numbers without joining back to `package.committed_metrics` or `package.performance_standards`. The vendor's `brand.json` `agents[type='measurement']` is the discovery anchor; the metric definitions live on the agent's `get_adcp_capabilities.measurement.metrics[]` block. Same shape as `vendor_metric_value.vendor` for symmetry across vendor-attested surfaces.").optional(), "measurable_impressions": z.number().gte(0).describe("Impressions where viewability could be measured. Excludes environments without measurement capability (e.g., non-Intersection Observer browsers, certain app environments). Coverage denominator for `viewable_rate`, `viewed_seconds`, and both viewed-seconds distributions \u2014 every duration statistic is computed over this same measurable population.").optional(), "viewable_impressions": z.number().gte(0).describe("Impressions that met the viewability threshold defined by the measurement standard.").optional(), "viewable_rate": z.number().gte(0).lte(1).describe("Viewable impression rate (viewable_impressions / measurable_impressions). Range 0.0 to 1.0.").optional(), "viewed_seconds": z.number().gte(0).describe("Average in-view duration per measurable impression, in seconds. Reporting-side counterpart to the `viewed_seconds` optimization metric in `optimization-goal.json`. Computed over `measurable_impressions`, not total impressions \u2014 the same denominator as `viewable_rate`. The viewability `standard` governs the threshold (e.g., MRC's 50% pixels for 1s display / 2s video) that defines when an impression is in view and therefore when the clock is running. Sellers reporting against a `viewed_seconds` optimization goal MUST populate this field.").optional(), "viewed_seconds_percentiles": z.object({ "p25": z.number().gte(0).describe("25th-percentile in-view duration in seconds."), "p50": z.number().gte(0).describe("Median (50th-percentile) in-view duration in seconds."), "p75": z.number().gte(0).describe("75th-percentile in-view duration in seconds."), "p90": z.number().gte(0).describe("90th-percentile in-view duration in seconds."), "p95": z.number().gte(0).describe("95th-percentile in-view duration in seconds.") }).strict().describe("Percentile summary of the per-impression in-view durations whose arithmetic mean is reported in `viewed_seconds`. This object MUST use the same reporting row, measurement vendor, viewability `standard`, and `measurable_impressions` population as `viewed_seconds`; sellers MUST omit it when `measurable_impressions` is zero. Percentiles use the nearest-rank definition: sort the N observed durations in ascending order and select rank `ceil(p \xD7 N)` (one-based) for percentile p. Values MUST be non-decreasing from p25 through p95. The structured metric identity `viewed_seconds_percentiles` makes this optional surface discoverable and requestable; it is not sortable and the nested object remains the canonical carrier.").optional(), "viewed_seconds_histogram": z.array(z.object({ "lower_bound_seconds": z.number().gte(0).describe("Inclusive lower bound of this duration bucket, in seconds."), "upper_bound_seconds": z.number().gte(0).describe("Exclusive upper bound of this duration bucket, in seconds. MUST be greater than `lower_bound_seconds`. Omit only on the final bucket to represent an unbounded upper range.").optional(), "impressions": z.number().int().gte(0).describe("Number of measurable impressions whose in-view duration falls in this bucket.") }).strict()).min(1).describe("Bucketed counts of the per-impression in-view durations whose arithmetic mean is reported in `viewed_seconds`. Buckets MUST be ordered by ascending lower bound, MUST NOT overlap, and MUST partition every impression in the same `measurable_impressions` population exactly once; therefore the sum of `impressions` MUST equal `measurable_impressions`. Buckets need not be contiguous: a gap between consecutive bucket boundaries is permitted when no impressions fall within that range \u2014 the sum constraint enforces this implicitly, and validators MUST NOT independently require contiguity. Each bucket is half-open `[lower_bound_seconds, upper_bound_seconds)`; only the final bucket MAY omit `upper_bound_seconds`, representing an unbounded upper range. Sellers choose boundaries, but buyers MUST combine histograms only when the complete boundary sequence, measurement vendor, and viewability `standard` match. The structured metric identity `viewed_seconds_histogram` makes this optional surface discoverable and requestable; it is not sortable and this nested array remains the canonical carrier.").optional(), "standard": z.enum(["mrc", "groupm"]).describe("Viewability measurement standard applied to these metrics. Governs the in-view threshold for `viewable_rate`, `viewed_seconds`, and both viewed-seconds distributions.").optional() }).catchall(z.any()).and(z.intersection(z.intersection(z.union([z.any().refine((value) => !z.object({ "viewed_seconds_percentiles": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough().safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.intersection(z.object({ "viewed_seconds_percentiles": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "measurable_impressions": z.number().int().gte(1).optional() }))]), z.union([z.any().refine((value) => !z.object({ "viewed_seconds_histogram": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough().safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.intersection(z.object({ "viewed_seconds_histogram": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "measurable_impressions": z.number().int().optional() }))])), z.intersection(z.union([z.any().refine((value) => !z.object({ "viewed_seconds_percentiles": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough().safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.object({ "viewed_seconds_percentiles": z.any().refine((value) => value !== void 0, "Required"), "viewed_seconds": z.any().refine((value) => value !== void 0, "Required"), "measurable_impressions": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]), z.union([z.any().refine((value) => !z.object({ "viewed_seconds_histogram": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough().safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.object({ "viewed_seconds_histogram": z.any().refine((value) => value !== void 0, "Required"), "viewed_seconds": z.any().refine((value) => value !== void 0, "Required"), "measurable_impressions": z.any().refine((value) => value !== void 0, "Required") }).passthrough()])))).describe("Viewability metrics. Viewable rate should be calculated as viewable_impressions / measurable_impressions (not total impressions), since some environments cannot measure viewability. Includes `viewed_seconds` \u2014 average in-view duration \u2014 plus optional percentile and histogram distributions over that duration; all three use the same `measurable_impressions` population and are governed by the same viewability threshold (`standard`). Sellers SHOULD include `standard` whenever measured viewability values are reported because MRC and GroupM rows are not interchangeable. The numeric leaves are addressable via the leaf metric identities `viewable_rate`, `viewable_impressions`, `measurable_impressions`, and `viewed_seconds` for declaration, commitments, aggregates, and breakdown sorting. The structured distribution carriers require explicit `viewed_seconds_percentiles` and `viewed_seconds_histogram` identities for declaration, commitment, and selection; they are not numeric aggregate rows or sort keys. This object remains the canonical carrier of every value. When a buy reports under more than one standard, contract a specific standard via the `viewability_standard` qualifier on `committed_metrics`; when the package's `committed_metrics` carry a `viewability_standard` qualifier, sellers MUST populate `standard` on reported viewability objects so reconciliation can match the qualifier.").optional(), "engagements": z.number().gte(0).describe("Total engagements \u2014 direct interactions with the ad beyond viewing. Includes social reactions/comments/shares, story/unit opens, interactive overlay taps on CTV, companion banner interactions on audio. Platform-specific; corresponds to the 'engagements' optimization metric. Maps to DBCFM KPI_INTERACTIONS (Interaktionen) in the Reporting/Performance block.").optional(), "follows": z.number().gte(0).describe("New followers, page likes, artist/podcast/channel follows, or free channel/feed subscribes attributed to this delivery. Paid subscriptions are conversion events with `event_type: subscribe`, not `follows`.").optional(), "saves": z.number().gte(0).describe("Saves, bookmarks, playlist adds, pins attributed to this delivery.").optional(), "profile_visits": z.number().gte(0).describe("Visits to the brand's in-platform page (profile, artist page, channel, or storefront) attributed to this delivery. Does not include external website clicks.").optional(), "engagement_rate": z.number().gte(0).lte(1).describe("Platform-specific engagement rate (0.0 to 1.0). Typically engagements/impressions, but definition varies by platform.").optional(), "cost_per_click": z.number().gte(0).describe("Cost per click (spend / clicks)").optional(), "cost_per_completed_view": z.number().gte(0).describe("Cost per completed view (spend / completed_views). Primary CPCV pricing scalar for video/audio inventory; the package's `pricing_model` is `cpcv` when this field is the billing basis.").optional(), "cpm": z.number().gte(0).describe("Cost per thousand impressions, computed as (spend / impressions) \xD7 1000. Universal pricing scalar across CTV, display, mobile/web video, native, audio, and DOOH inventory; the package's `pricing_model` is `cpm` when this field is the billing basis. Field name aligns with the canonical `cpm` token in `enums/pricing-model.json` and `pricing-options/cpm-option.json` so buyers cross-walk pricing model \u2192 reported scalar without a translation table.").optional(), "downloads": z.number().gte(0).describe("Audio/podcast downloads (IAB Podcast Measurement Technical Guidelines 2.x methodology). Distinct from `views` \u2014 for podcast inventory this is the count of podcast episode downloads; for streaming audio it is the count of stream starts that meet the platform's download threshold. Prefer this over `views` for audio inventory.").optional(), "units_sold": z.number().gte(0).describe("Items sold attributed to this delivery. Retail-media scalar distinct from `conversions` \u2014 a single conversion (transaction) may carry multiple `units_sold`. Used by retail media platforms where the buyer optimizes against unit movement, not transaction count. Attribution lookback windows are platform-specific (commonly 7/14/30 days, view-through and click-through variants); sellers SHOULD declare the window via `reporting_capabilities.measurement_windows` or `measurement_terms` rather than encoding it in this scalar.").optional(), "new_to_brand_units": z.number().gte(0).describe("Units sold to first-time brand buyers (count, not rate). Retail-media scalar \u2014 the unit-volume parallel to the conversion-fraction `new_to_brand_rate`. Used by retail media platforms where new-customer acquisition unit volume is a primary KPI. Same attribution-window note as `units_sold` applies.").optional(), "by_action_source": z.array(z.object({ "action_source": z.enum(["website", "app", "offline", "phone_call", "chat", "email", "in_store", "system_generated", "other"]).describe("Where the conversion occurred"), "event_source_id": z.string().describe("Event source that produced these conversions (for disambiguation when multiple event sources are configured)").optional(), "count": z.number().gte(0).describe("Number of conversions from this action source"), "value": z.number().gte(0).describe("Total monetary value of conversions from this action source").optional() }).catchall(z.any())).describe("Conversion metrics broken down by action source (website, app, in_store, etc.). Useful for omnichannel sellers where conversions occur across digital and physical channels.").optional(), "vendor_metric_values": z.array(z.object({ "vendor": z.object({ "domain": z.string().regex(new RegExp("^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$")).describe("Domain where /.well-known/brand.json is hosted, or the brand's operating domain"), "brand_id": z.string().regex(new RegExp("^[a-z0-9_]+$")).describe("Brand identifier within the house portfolio. Optional for single-brand domains.").optional(), "countries": z.array(z.string().regex(new RegExp("^[A-Z]{2}$"))).min(1).refine((arr) => arr.every((item, i) => arr.indexOf(item) == i), "All items must be unique!").describe("Canonical set of ISO 3166-1 alpha-2 countries for this advertiser identity. Omit for a global/default identity. Array order is not meaningful; producers MUST sort codes lexicographically before computing keys or signatures. This qualifies account identity and is not delivery targeting.").optional(), "industries": z.array(z.string()).describe("Inline override for the brand's industries. Useful when the caller cannot modify the brand's canonical brand.json but needs to declare industries for governance (e.g., Annex III vertical detection). brand.json remains the canonical source; when omitted here, governance agents SHOULD resolve from brand.json.").optional(), "data_subject_contestation": z.object({ "url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").regex(new RegExp("^https://")).optional(), "email": z.string().email().optional(), "languages": z.array(z.string()).optional() }).strict().and(z.union([z.object({ "url": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "email": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("Inline override for the brand's contestation contact point. Useful when the operator does not control brand.json but needs to discharge Art 22(3) for this plan. brand.json is canonical; when omitted, governance agents resolve brand \u2192 house \u2192 missing.").optional(), "brand_kit_override": z.object({ "logo": z.object({ "asset_type": z.literal("image").describe("Discriminator identifying this as an image asset. See /schemas/creative/asset-types for the registry."), "url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").describe("URL to the image asset"), "width": z.number().int().gte(1).describe("Width in pixels"), "height": z.number().int().gte(1).describe("Height in pixels"), "file_size_bytes": z.number().int().gte(1).describe("Image file size in bytes. Required by agents that advertise a max_file_size_kb constraint.").optional(), "pixel_ratio": z.number().gt(0).describe("Intrinsic pixels per logical render pixel (for example `2` for a 600\xD7500 image intended to render at 300\xD7250). Optional because a validator can infer the ratio when the target format declares logical dimensions. When supplied, it MUST agree with both `width / logical_width` and `height / logical_height`; it is never a substitute for the intrinsic `width` and `height` fields.").optional(), "state_id": z.string().describe("Binding used only when this image populates a `seller_rendered_stateful_display` `state_canvases` slot. It MUST match one declared `states[].state_id` (semantic validators resolve it). Omit for ordinary image slots.").optional(), "breakpoint_id": z.string().describe("Binding used only when this image populates a `seller_rendered_stateful_display` `state_canvases` slot. It MUST match one breakpoint declared on the selected state (semantic validators resolve it). Omit for ordinary image slots.").optional(), "focal_point": z.array(z.number().gte(0).lte(1)).min(2).max(2).describe("Normalized `[x, y]` coordinates (0\u20131 from top-left) of the image's visual anchor. Seller-side renderers crop toward the focal point when deriving renditions across breakpoints and aspect ratios; absent, cropping falls back to center-weighted defaults.").optional(), "format": z.string().describe("Image file format (jpg, png, gif, webp, etc.)").optional(), "alt_text": z.string().describe("Alternative text for accessibility").optional(), "provenance": z.object({ "digital_source_type": z.enum(["digital_capture", "digital_creation", "trained_algorithmic_media", "composite_with_trained_algorithmic_media", "algorithmic_media", "composite_capture", "composite_synthetic", "human_edits", "data_driven_media"]).describe("IPTC-aligned classification of AI involvement in producing this content").optional(), "synthetic_depiction": z.boolean().describe("Assessed declaration of whether the content synthetically depicts a real or fictional person performing or appearing in a way that was generated or materially manipulated rather than captured as depicted. `true` covers both a fully synthetic performer and material manipulation of a real performer; `false` is an assessed declaration that the content does not contain such a depiction. Absence means the content has not been assessed for synthetic depiction. This field does not claim consent, legality, or independent verification, and receivers MUST NOT derive it solely from `digital_source_type`.").optional(), "ai_tool": z.object({ "name": z.string().describe("Name of the AI tool or model (e.g., 'DALL-E 3', 'Stable Diffusion XL', 'Gemini')"), "version": z.string().describe("Version identifier for the AI tool or model (e.g., '25.1', '0125', '2.1'). For generative models, use the model version rather than the API version.").optional(), "provider": z.string().describe("Organization that provides the AI tool (e.g., 'OpenAI', 'Stability AI', 'Google')").optional() }).describe("AI system used to generate or modify this content. Aligns with IPTC 2025.1 AI metadata fields and C2PA claim_generator.").optional(), "human_oversight": z.enum(["none", "prompt_only", "selected", "edited", "directed"]).describe("Level of human involvement in the AI-assisted creation process. Independent of `disclosure.required` \u2014 the protocol does not derive disclosure obligations from oversight level. Some regulations include carve-outs for human-edited or human-directed AI output, but those carve-outs have factual prerequisites the schema cannot evaluate. Asserting `edited` or `directed` does not by itself justify `disclosure.required: false`.").optional(), "declared_by": z.object({ "agent_url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").describe("URL of the agent or service that declared this provenance").optional(), "role": z.enum(["creator", "advertiser", "agency", "platform", "tool"]).describe("Role of the declaring party in the supply chain") }).describe("Party declaring this provenance. Identifies who attached the provenance claim, enabling receiving parties to assess trust.").optional(), "declared_at": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "created_time": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "c2pa": z.object({ "manifest_url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").describe("URL to the C2PA manifest store for this content") }).describe("C2PA sidecar manifest reference. Links to a detached cryptographic provenance manifest for this content. Note: file-level C2PA bindings break when ad servers transcode, resize, or re-encode assets. For pipelines with intermediaries, consider embedded_provenance as the primary provenance mechanism.").optional(), "embedded_provenance": z.array(z.object({ "method": z.enum(["manifest_wrapper", "provenance_markers"]).describe("How provenance data is carried within the content"), "standard": z.string().describe("Standard the embedding conforms to, if any (e.g., 'c2pa' for C2PA Section A.7 text manifest embedding)").optional(), "provider": z.string().describe("Organization that performed the embedding (e.g., 'Encypher', 'Digimarc'). Display label and audit context \u2014 not a wire identifier."), "verify_agent": z.object({ "agent_url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").regex(new RegExp("^https://")).describe("URL of the governance agent the buyer represents was used to embed/verify this layer. MUST use the `https://` scheme and MUST appear in the seller's `creative_policy.accepted_verifiers[].agent_url` list (canonicalized per /docs/reference/url-canonicalization: lowercase scheme and host, strip default port, normalize path dot-segments). Sellers MUST NOT call this URL until the canonicalized match is confirmed."), "feature_id": z.string().describe("Optional `feature_id` the buyer represents the seller should request via `get_creative_features` (e.g., `encypher.markers_present_v2`). SHOULD match the `feature_id` declared on the matching `accepted_verifiers[]` entry, or be omitted to defer the selector to the seller. When the seller's entry pins a `feature_id`, that value wins; when neither side pins, the seller selects from the agent's `governance.creative_features` catalog.").optional() }).strict().describe("Buyer's representation that this embedding can be verified by a governance agent on the seller's `creative_policy.accepted_verifiers` list. The `agent_url` MUST match (canonicalized) one of the seller's published `accepted_verifiers[].agent_url` entries; sellers reject `sync_creatives` submissions whose `verify_agent.agent_url` is off-list with `PROVENANCE_VERIFIER_NOT_ACCEPTED`. This is buyer-supplied evidence, not buyer-driven routing \u2014 the seller is the verifier-of-record and the seller controls which agent it actually calls (the seller MAY use a different on-list agent if it determines this is more appropriate; the seller does not call buyer-asserted endpoints outside its allowlist). MAY be omitted for self-verifiable embeddings (e.g., a C2PA text manifest with a public key the seller already trusts).").optional(), "embedded_at": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional() })).min(1).describe("Provenance metadata embedded within the content stream. Each entry declares one embedding layer: structured provenance data carried inside the content itself, as distinct from sidecar references (c2pa.manifest_url). Embedded provenance survives operations that break sidecar and file-level bindings: ad-server transcoding, CMS ingestion, copy-paste, reformatting, and CDN re-encoding. For ad-tech pipelines where content passes through multiple intermediaries, embedded provenance is the reliable path for provenance that persists from declaration through delivery. This is a declaration by the embedding party. The receiving party (the seller) is the verifier-of-record: it confirms the claim by calling a governance agent it trusts (typically one published in `creative_policy.accepted_verifiers`).").optional(), "watermarks": z.array(z.object({ "media_type": z.enum(["audio", "image", "video", "text"]).describe("Media category of the watermarked content"), "provider": z.string().describe("Organization that applied the watermark (e.g., 'Imatag', 'Steg.AI', 'Encypher'). Display label and audit context \u2014 not a wire identifier."), "verify_agent": z.object({ "agent_url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").regex(new RegExp("^https://")).describe("URL of the governance agent the buyer represents was used to apply/detect this watermark. MUST use the `https://` scheme and MUST appear in the seller's `creative_policy.accepted_verifiers[].agent_url` list (canonicalized per /docs/reference/url-canonicalization: lowercase scheme and host, strip default port, normalize path dot-segments). Sellers MUST NOT call this URL until the canonicalized match is confirmed."), "feature_id": z.string().describe("Optional `feature_id` the buyer represents the seller should request via `get_creative_features` (e.g., `imatag.watermark_detected`). SHOULD match the `feature_id` declared on the matching `accepted_verifiers[]` entry, or be omitted to defer the selector to the seller. When the seller's entry pins a `feature_id`, that value wins; when neither side pins, the seller selects from the agent's `governance.creative_features` catalog.").optional() }).strict().describe("Buyer's representation that this watermark can be detected by a governance agent on the seller's `creative_policy.accepted_verifiers` list. The `agent_url` MUST match (canonicalized) one of the seller's published `accepted_verifiers[].agent_url` entries; sellers reject `sync_creatives` submissions whose `verify_agent.agent_url` is off-list with `PROVENANCE_VERIFIER_NOT_ACCEPTED`. This is buyer-supplied evidence, not buyer-driven routing \u2014 the seller is the verifier-of-record and the seller controls which agent it actually calls (the seller MAY use a different on-list agent if it determines this is more appropriate; the seller does not call buyer-asserted endpoints outside its allowlist).").optional(), "c2pa_action": z.enum(["c2pa.watermarked.bound", "c2pa.watermarked.unbound"]).describe("C2PA action classification for this watermark").optional(), "embedded_at": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional() })).min(1).describe("Content watermarks applied to this asset. Each entry declares one watermarking layer: a content modification that encodes an identifier or fingerprint within the asset. Watermarks differ from embedded provenance: a watermark encodes an identifier (who generated it, who owns it), while embedded provenance carries or references a structured provenance record (the full chain of custody). A single asset may carry both. Aligns with C2PA action taxonomy: c2pa.watermarked.bound (watermark linked to a C2PA manifest) and c2pa.watermarked.unbound (watermark independent of any manifest). This is a declaration by the watermarking party. The receiving party (the seller) is the verifier-of-record: it confirms the claim by calling a governance agent it trusts (typically one published in `creative_policy.accepted_verifiers`).").optional(), "disclosure": z.object({ "required": z.boolean().describe("The declaring party's claim that AI disclosure is required for this content under applicable regulations. This is a declared signal carried through the supply chain \u2014 useful as a routing and audit input \u2014 not a regulatory determination made by the protocol. Receiving parties remain responsible for their own jurisdictional analysis and should not treat `required: false` as compliance cover."), "jurisdictions": z.array(z.object({ "country": z.string().describe("ISO 3166-1 alpha-2 country code (e.g., 'US', 'DE', 'CN')"), "region": z.string().describe("Sub-national region code (e.g., 'CA' for California, 'BY' for Bavaria)").optional(), "regulation": z.string().describe("Regulation identifier (e.g., 'eu_ai_act_article_50', 'ca_sb_942', 'cn_deep_synthesis')"), "label_text": z.string().describe("Required disclosure label text for this jurisdiction, in the local language").optional(), "render_guidance": z.object({ "persistence": z.enum(["continuous", "initial", "flexible"]).describe("How long the disclosure must persist during content playback or display").optional(), "min_duration_ms": z.number().int().gte(1).describe("Minimum display duration in milliseconds for initial persistence. Recommended when persistence is initial \u2014 without it, the duration is at the publisher's discretion. At serve time the publisher reads this from provenance since the brief is not available.").optional(), "positions": z.array(z.enum(["prominent", "footer", "audio", "subtitle", "overlay", "end_card", "pre_roll", "companion"]).describe("Where a required disclosure should appear within a creative. Used by creative briefs to specify disclosure placement and by formats to declare which positions they can render.")).min(1).refine((arr) => arr.every((item, i) => arr.indexOf(item) == i), "All items must be unique!").describe("Preferred disclosure positions in priority order. The first position a format supports should be used.").optional(), "ext": z.record(z.string(), z.any()).describe("Extension object for platform-specific, vendor-namespaced parameters. Extensions are always optional and must be namespaced under a vendor/platform key (e.g., ext.gam, ext.roku). Used for custom capabilities, partner-specific configuration, and features being proposed for standardization.").optional() }).describe("How the disclosure should be rendered for this jurisdiction. Expresses the declaring party's intent for persistence and position based on regulatory requirements. Publishers control actual rendering but governance agents can audit whether guidance was followed.").refine((value) => Object.keys(value).length >= 1, "Object must contain at least 1 property").optional() })).min(1).describe("Jurisdictions where disclosure obligations apply").optional() }).describe("Regulatory disclosure requirements for this content. Indicates whether AI disclosure is required and under which jurisdictions.").optional(), "verification": z.array(z.object({ "verified_by": z.string().describe("Name of the verification service (e.g., 'DoubleVerify', 'Hive Moderation', 'Reality Defender')"), "verified_time": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "result": z.enum(["authentic", "ai_generated", "ai_modified", "inconclusive"]).describe("Verification outcome"), "confidence": z.number().gte(0).lte(1).describe("Confidence score of the verification result (0.0 to 1.0)").optional(), "details_url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").describe("URL to the full verification report").optional() })).min(1).describe("Third-party verification or detection results for this content. Multiple services may independently evaluate the same content. Provenance is a claim \u2014 verification results attached by the declaring party are supplementary. The enforcing party (e.g., seller/publisher) should run its own verification via get_creative_features or calibrate_content.").optional(), "ext": z.record(z.string(), z.any()).describe("Extension object for platform-specific, vendor-namespaced parameters. Extensions are always optional and must be namespaced under a vendor/platform key (e.g., ext.gam, ext.roku). Used for custom capabilities, partner-specific configuration, and features being proposed for standardization.").optional() }).describe("Provenance metadata for this asset, overrides manifest-level provenance").optional() }).catchall(z.any()).describe("Override logo asset.").optional(), "colors": z.object({ "primary": z.string().regex(new RegExp("^#[0-9a-fA-F]{6}$")).optional(), "secondary": z.string().regex(new RegExp("^#[0-9a-fA-F]{6}$")).optional(), "accent": z.string().regex(new RegExp("^#[0-9a-fA-F]{6}$")).optional() }).catchall(z.any()).describe("Override brand colors (hex strings).").optional(), "voice": z.string().describe("Override brand-voice description for surface-composed text/audio output.").optional(), "tagline": z.string().describe("Override tagline.").optional() }).catchall(z.any()).describe("Inline override for brand-kit fields normally resolved from `/.well-known/brand.json` on `domain` (logo, colors, voice, tagline). Use when brand.json is missing, stale, or inappropriate for this specific call \u2014 e.g., a campaign-scoped tagline, a co-branded creative, a freshly-rebranded color palette the brand.json hasn't shipped yet. Same inline-override pattern as `industries` and `data_subject_contestation` above: brand.json is canonical, the override is per-call. Adopters needing to override fields outside this subset (`voice_attributes`, `prohibited_terms`, etc.) MUST publish a different brand.json and reference it via a different `domain` \u2014 the inline override is intentionally narrow to a small high-traffic subset.\n\n**Merge semantics (normative).** The merge is **field-level**, not whole-object replacement. Each field within `brand_kit_override` (`logo`, `colors`, `voice`, `tagline`) is evaluated independently \u2014 when a field is present on the override the override value applies; when a field is absent the brand.json value applies (or is absent if brand.json doesn't carry one either). For composite fields (`colors.primary`, `colors.secondary`, `colors.accent`), the merge is one level deeper: each color slot is evaluated independently \u2014 a producer can override `colors.primary` while still inheriting `colors.secondary` from brand.json. SDKs MUST NOT treat a present `brand_kit_override.colors` as wiping the brand.json `colors` block entirely; only the per-slot fields present in the override take precedence. Without this rule, a partial-override semantics would diverge across SDKs and produce inconsistent rendering for the same payload.").optional() }).strict().describe("Vendor that produced this value. Matches a `vendor_metrics[].vendor` declaration on the product."), "metric_id": z.string().regex(new RegExp("^[a-z][a-z0-9_]*$")).min(1).max(64).describe("Identifier for the metric within the vendor's vocabulary. Matches a `vendor_metrics[].metric_id` declaration on the product."), "value": z.number().describe("The reported value. Unit semantics are vendor-defined \u2014 see `unit` field below and the vendor's `brand.json` measurement-agent documentation."), "unit": z.string().describe("Unit of the value. Free-form to accommodate the heterogeneity of vendor metrics (e.g., `score`, `seconds`, `persons`, `gCO2e`, `USD`, `lift_percent`). When the value is monetary, use the ISO 4217 code (e.g., `USD`, `EUR`); for non-monetary, use whatever the vendor publishes. Optional on every row \u2014 the canonical unit lives at the vendor's measurement-agent metric definition (`brand.json` `agents[type='measurement']`). When sellers populate it inline they SHOULD match the vendor's published unit; buyers MAY resolve from the vendor's measurement agent when this field is absent.").optional(), "measurable_impressions": z.number().gte(0).describe("Number of impressions in this reporting period that the vendor was able to measure. Coverage denominator \u2014 buyers compute coverage rate as `measurable_impressions / impressions`. When absent, coverage is unspecified \u2014 buyers MUST NOT compute a coverage rate or assume full coverage. When the vendor measured zero impressions but is integrated, set to 0 explicitly. When the entry is omitted from `vendor_metric_values` entirely, the buyer infers no measurement happened (no integration). This pattern parallels `viewability.measurable_impressions` (`delivery-metrics.json#/properties/viewability`), which has handled vendor coverage in the IAS/DV/MRC ecosystem for over a decade \u2014 same convention: absence is unknown, not full. For channels where the atomic observation unit is a play or screen-second rather than an impression (DOOH, cinema, place-based), report `measurable_plays` or `measurable_play_seconds` instead \u2014 `impressions` there is itself a modelled figure (`plays \xD7 audience multiplier`), so `measurable_impressions / impressions` divides a measured count by a model output and has no interpretation.").optional(), "measurable_plays": z.number().gte(0).describe("Number of plays (loop plays / spots aired) in this reporting period that the vendor was able to measure. Coverage denominator for channels where a play, not an impression, is the atomic observation unit \u2014 DOOH, cinema, place-based audio. Buyers compute coverage as `measurable_plays / plays` (top-level `plays` on `delivery-metrics.json`). Same absence semantics as `measurable_impressions`: absent means coverage is unspecified and buyers MUST NOT compute a rate; 0 means the vendor is integrated but measured nothing. A row SHOULD carry exactly one coverage denominator \u2014 the one matching the unit the vendor actually observes.").optional(), "measurable_play_seconds": z.number().gte(0).describe("Play-seconds \u2014 seconds of creative playout summed across endpoints (screens, speakers, players) \u2014 in this reporting period that the vendor was able to measure. Medium-neutral on purpose: place-based audio has plays and duration but no screen. Coverage denominator when the vendor meters exposure duration rather than discrete plays. On screen networks buyers compute coverage as `measurable_play_seconds / dooh_metrics.screen_time_seconds`; on other place-based media, against the seller's reported playout seconds for the period. Same absence semantics as `measurable_impressions`.").optional(), "vendor_relationship": z.enum(["first_party", "affiliated", "third_party"]).describe("Optional echo of the product's `reporting_capabilities.vendor_metrics[].vendor_relationship` for this `(vendor, metric_id)`, so the delivery row is self-describing without joining back to the product (same reasoning as `viewability.vendor`). When present it MUST equal the declared value; buyers MAY resolve from the product declaration when absent. Absence on the row is *undeclared*, never `third_party`. A relationship disposition, not a trust ranking. Deliberately not a `qualifier` key: the relationship is constant across every row for a (seller, vendor) pair and does not partition rows, so it stays out of the `(vendor, metric_id, qualifier)` reconciliation join.").optional(), "qualifier": z.object({ "viewability_standard": z.enum(["mrc", "groupm"]).describe("Viewability measurement standard applied to determine whether an impression qualifies as viewable. These are materially different thresholds and should not be compared across standards.").optional(), "completion_source": z.enum(["seller_attested", "vendor_attested"]).describe("Trust-source disambiguator for `completion_rate` \u2014 *who* attested to the completion event, not *how* (methodology granularity is a separate dimension; future qualifier keys may add it if buyer demand surfaces). The two paths can yield materially different rates, particularly in SSAI environments where the player's view of completion may differ from a vendor's. Used as a `qualifier.completion_source` key on `committed_metrics`, `missing_metrics`, and package-level delivery values (`metric_values` or `vendor_metric_values`) to disambiguate which trust source the row represents. Edge cases: walled gardens where the seller is also the measurement vendor (YouTube, Spotify) collapse to `seller_attested` by trust-model logic \u2014 the same party served and counted. IAB-certified first-party podcast measurement (Podtrac, Triton on their own platforms; Art19 on its own platform) likewise collapses to `seller_attested`. The same vendor's offering on a third-party platform (Podtrac on a publisher who isn't Podtrac) is `vendor_attested`. The trust axis is *not* who runs the SDK \u2014 it's who is independent of the seller's revenue interest.").optional(), "attribution_methodology": z.enum(["deterministic_purchase", "probabilistic", "panel_based", "modeled"]).describe("How attribution between ad exposure and outcome events was computed. Used as a `qualifier.attribution_methodology` key on `committed_metrics`, `missing_metrics`, package-level delivery values (`metric_values` or `vendor_metric_values`), and `performance-feedback.metric` to disambiguate the same outcome metric reported under different methodologies \u2014 `conversion_value` measured deterministically (matched purchase IDs) is not the same number as `conversion_value` measured probabilistically (modeled match) and should never be summed across methodologies. The retail-media closed-loop pattern typically reports under `deterministic_purchase`; MMM and clean-room outputs typically report under `modeled` or `probabilistic`; panel-based measurement (Nielsen, comScore, Edison) reports under `panel_based`.").optional(), "attribution_window": z.object({ "interval": z.number().int().gte(1).describe("Number of time units. Must be 1 when unit is 'campaign'."), "unit": z.enum(["seconds", "minutes", "hours", "days", "campaign"]).describe("Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.") }).strict().describe("A time duration expressed as an interval and unit. Used for frequency cap windows, attribution windows, reach optimization windows, time budgets, and other time-based settings. When unit is 'campaign', interval must be 1 \u2014 the window spans the full campaign flight.").optional(), "lift_dimension": z.enum(["awareness", "consideration", "favorability", "purchase_intent", "ad_recall"]).describe("Brand-lift dimension disambiguator. Brand lift is multidimensional in production \u2014 Kantar, Upwave, Cint, DoubleVerify, and similar vendors report awareness, consideration, favorability, purchase intent, and ad recall as separate measurements with their own sample sizes and confidence intervals. Used as a `qualifier.lift_dimension` key on `committed_metrics`, `missing_metrics`, package-level delivery values (`metric_values` or `vendor_metric_values`), and `performance-feedback.metric` to disambiguate which dimension of `brand_lift` a row represents. Two `brand_lift` rows under different lift dimensions represent different surveyed outcomes and must not be combined into a single number.").optional() }).strict().describe("Optional qualifier disambiguating this row from sibling rows for the same (vendor, metric_id) \u2014 e.g., the same vendor outcome metric reported under 7-day and 30-day attribution windows. Same closed key set as `committed-metric`. When the matching `committed_metrics` entry carries a qualifier, this row MUST carry the identical qualifier so reconciliation joins on `(vendor, metric_id, qualifier)`.").optional(), "breakdown": z.record(z.string(), z.any()).describe("Optional structured payload for vendor metrics that don't fit a single scalar \u2014 panel demographic breakouts, co-view audience composition, incremental reach + frequency + lift decompositions. Free-form; the keys and value semantics are defined by the vendor (see the vendor's `brand.json` measurement-agent docs). Buyers MUST treat this object as opaque without consulting the vendor's documentation. Vendors place any fields beyond the standard envelope (e.g., confidence intervals, panel sizes) inside this object rather than at the top level.").optional() }).strict().describe("A reported value for a vendor-defined metric, emitted in `delivery-metrics.json` `vendor_metric_values` parallel to standard scalars. Identifies the vendor (BrandRef), the metric name within that vendor's vocabulary, the value, and the coverage denominator (`measurable_impressions`) \u2014 vendor measurement is rarely 100% coverage. Channels whose atomic observation unit is a play or screen-second rather than an impression (DOOH, cinema, place-based) use the sibling denominators `measurable_plays` / `measurable_play_seconds`. `vendor_relationship` optionally echoes the seller's declared relationship to the vendor (`first_party` / `affiliated` / `third_party`) so a row is self-describing without a discovery hop. The `breakdown` slot accommodates vendors that emit structured payloads beyond a single scalar (panel demographic breakouts, co-view ratios, incremental decompositions). To add fields beyond what this schema defines, vendors place them inside `breakdown` rather than alongside the standard envelope.")).describe("Reported values for vendor-defined metrics that the product's `reporting_capabilities.vendor_metrics` declared. Each entry carries the vendor (BrandRef), the metric identifier within the vendor's vocabulary, the value, optional unit, and `measurable_impressions` as the coverage denominator \u2014 vendor measurement is rarely 100% of delivered impressions, since vendors only score impressions where their SDK fires or their panel matches. When a declared vendor metric is omitted from this array, buyers infer no measurement happened (no integration). One row per `(vendor.domain, vendor.brand_id, metric_id, qualifier)` per reporting period \u2014 the same vendor metric MAY appear in multiple rows only when each carries a distinct qualifier (e.g., 7-day and 30-day attribution windows); sellers MUST de-duplicate before emission and MUST NOT emit two rows with the same tuple; buyers MAY treat duplicate rows as a seller-side conformance bug. The structured `vendor_metric_values` array is the recommended path for vendor metrics; `additionalProperties: true` on this parent object is preserved so existing free-form vendor emissions remain conformant during migration.").optional() }).catchall(z.any()).and(z.union([z.any().refine((value) => !z.object({ "reach": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough().safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.object({ "reach": z.any().refine((value) => value !== void 0, "Required"), "reach_unit": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("Standard delivery metrics that can be reported at media buy, package, or creative level"), z.object({ "effective_rate": z.number().gte(0).optional() }).catchall(z.any()).describe("Aggregate metrics for this media buy across all packages.")), "by_package": z.array(z.intersection(z.object({ "impressions": z.number().gte(0).describe("Impressions delivered").optional(), "spend": z.number().gte(0).describe("Amount spent").optional(), "clicks": z.number().gte(0).describe("Total clicks").optional(), "ctr": z.number().gte(0).lte(1).describe("Click-through rate (clicks/impressions)").optional(), "views": z.number().gte(0).describe("Content engagements counted toward the billable view threshold. For video this is a platform-defined view event (e.g., 30 seconds or video midpoint); for audio/podcast it is a stream start; for other formats it follows the pricing model's view definition. When the package uses CPV pricing, spend = views \xD7 rate.").optional(), "completed_views": z.number().gte(0).describe("Video/audio completions. When the package has a completed_views optimization goal with view_duration_seconds, completions are counted at that threshold rather than 100% completion.").optional(), "completion_rate": z.union([z.number().gte(0).lte(1).describe("Completion rate (completed_views/impressions). Null indicates the metric is not applicable to this package/buy (e.g. completion rate on a non-video buy)."), z.null().describe("Completion rate (completed_views/impressions). Null indicates the metric is not applicable to this package/buy (e.g. completion rate on a non-video buy).")]).describe("Completion rate (completed_views/impressions). Null indicates the metric is not applicable to this package/buy (e.g. completion rate on a non-video buy).").optional(), "conversions": z.number().gte(0).describe("Total conversions attributed to this delivery. When by_event_type is present, this equals the sum of all by_event_type[].count entries.").optional(), "conversion_value": z.number().gte(0).describe("Total monetary value of attributed conversions (in the reporting currency)").optional(), "commissionable_value": z.number().gte(0).describe("Settled portion of attributed conversion value eligible for revenue-share commission, in the reporting currency. For revenue_share pricing, spend = round_currency(commissionable_value \xD7 commission_rate). This is distinct from conversion_value because taxes, shipping, discounts, returns, cancellations, or ineligible items may be excluded under the agreed commission basis.").optional(), "roas": z.number().gte(0).describe("Return on ad spend (conversion_value / spend)").optional(), "cost_per_acquisition": z.number().gte(0).describe("Cost per conversion (spend / conversions)").optional(), "new_to_brand_rate": z.number().gte(0).lte(1).describe("Fraction of `conversions` (transactions) from first-time brand buyers, 0 = none, 1 = all. For retail-media unit-volume tracking of first-time buyers, see `new_to_brand_units` (count, not rate).").optional(), "leads": z.number().gte(0).describe("Leads generated (convenience alias for by_event_type where event_type='lead')").optional(), "incremental_sales_lift": z.number().gte(0).describe("Incremental sales lift attributed to the campaign \u2014 sales above the control/holdout baseline. Reported as a fraction (0.15 = 15% lift) or as an absolute value depending on seller convention. The seller's `attribution_methodology` qualifier (typically `deterministic_purchase` or `modeled`) and `attribution_window` qualifier on the matching `committed_metrics` entry disambiguate the methodology and window.").optional(), "brand_lift": z.number().gte(0).describe("Brand lift \u2014 measured change in a brand metric (awareness, consideration, favorability, purchase intent, or ad recall) attributed to the campaign. Typically panel-based or survey-based. Reported as a fraction (0.05 = 5% lift). **Multidimensional in production** \u2014 Kantar, Upwave, Cint, DV all report each dimension separately with its own sample size and confidence interval. The dimension flows through `qualifier.lift_dimension` on `committed_metrics` / `by_package[].metric_values` (`awareness` | `consideration` | `favorability` | `purchase_intent` | `ad_recall`); rows under different dimensions are different surveyed outcomes and must not be combined. Use `attribution_methodology: 'panel_based'` qualifier when the underlying methodology is a panel.").optional(), "foot_traffic": z.number().gte(0).describe("Store visits attributed to ad exposure. Count of incremental visits over baseline. Typically uses location-data panel methodology (`attribution_methodology: 'panel_based'`) or deterministic loyalty-card match (`attribution_methodology: 'deterministic_purchase'`).").optional(), "conversion_lift": z.number().gte(0).describe("Incremental conversions attributed to the campaign \u2014 conversions above the control/holdout baseline. Reported as a fraction (0.10 = 10% lift) or as an absolute count depending on seller convention. Distinct from `conversions` (raw count of attributed conversions); conversion_lift requires a control group and an incrementality methodology.").optional(), "brand_search_lift": z.number().gte(0).describe("Lift in brand search query volume attributed to the campaign \u2014 measured via search-data partnerships (Google, Microsoft) or survey methodology. Reported as a fraction (0.20 = 20% lift in branded search).").optional(), "plays": z.number().gte(0).describe("Number of times the ad creative was displayed or played on DOOH or broadcast inventory. Raw play count before any impression multiplier is applied. Mirrors `forecastable-metric.json`'s `plays` token for forecast\u2194delivery reconciliation. Distinct from `dooh_metrics.loop_plays` (scheduled-rotation count) and from `impressions` (multiplied audience figure).").optional(), "measurement_source": z.string().regex(new RegExp("^[a-z0-9_]+$")).max(64).describe("Third-party measurement provider whose data produced this row's audience numbers. Mirrors delivery-forecast.json's measurement_source so forecast and delivery reconcile on the same declaration \u2014 distinct from demographic_system, which specifies demographic notation. Makes measured-channel rows (radio, broadcast, OOH) self-describing: a reconciliation join can tie delivered numbers to the system that measured them without consulting out-of-band context. Lowercase slug format.").optional(), "by_event_type": z.array(z.object({ "event_type": z.enum(["page_view", "view_content", "select_content", "select_item", "search", "share", "add_to_cart", "remove_from_cart", "viewed_cart", "add_to_wishlist", "initiate_checkout", "add_payment_info", "purchase", "refund", "lead", "qualify_lead", "close_convert_lead", "disqualify_lead", "complete_registration", "subscribe", "follow", "content_view", "watch_milestone", "start_trial", "app_install", "app_launch", "contact", "schedule", "donate", "submit_application", "custom"]).describe("The event type"), "event_source_id": z.string().describe("Event source that produced these conversions (for disambiguation when multiple event sources are configured)").optional(), "count": z.number().gte(0).describe("Number of events of this type"), "value": z.number().gte(0).describe("Total monetary value of events of this type").optional() }).catchall(z.any())).describe("Conversion metrics broken down by event type. Spend-derived metrics (ROAS, CPA) are only available at the package/totals level since spend cannot be attributed to individual event types.").optional(), "grps": z.number().gte(0).describe("Gross Rating Points delivered (for CPP)").optional(), "reach": z.number().gte(0).describe("Unique reach in the units specified by reach_unit. When reach_unit is omitted, units are unspecified \u2014 do not compare reach values across packages or media buys without a common reach_unit. The measurement window for this value is declared in `reach_window`; when `reach_window` is omitted, the window is unspecified and buyers MUST NOT sum reach across reports (the value MAY be a daily snapshot, a cumulative total, or something else).").optional(), "reach_unit": z.enum(["individuals", "households", "devices", "accounts", "cookies", "custom"]).describe("Unit of measurement for reach and audience size metrics. Different channels and measurement providers count reach in fundamentally different units, making cross-channel comparison impossible without declaring the unit.").describe("Unit of measurement for the reach field. Aligns with the reach_unit declared on optimization goals and delivery forecasts. Required when reach is present to enable cross-platform comparison.").optional(), "reach_window": z.object({ "kind": z.enum(["cumulative", "period", "rolling"]).describe("Window semantics. `cumulative` \u2014 uniques since campaign start; the value is the total unique count to date and MUST NOT be summed across rows (each later row supersedes the earlier value). `period` \u2014 uniques within a single non-overlapping reporting period (e.g., a daily snapshot for a specific calendar day). Adjacent `period` rows do not share audiences by construction, but the same person MAY appear across multiple periods, so MUST NOT be summed across rows to compute campaign reach. `rolling` \u2014 uniques within a trailing window ending at the row's reporting timestamp (e.g., trailing-7-day reach). Adjacent rolling rows overlap and MUST NOT be summed; each row's value stands alone."), "period": z.object({ "interval": z.number().int().gte(1).describe("Number of time units. Must be 1 when unit is 'campaign'."), "unit": z.enum(["seconds", "minutes", "hours", "days", "campaign"]).describe("Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.") }).strict().describe("A time duration expressed as an interval and unit. Used for frequency cap windows, attribution windows, reach optimization windows, time budgets, and other time-based settings. When unit is 'campaign', interval must be 1 \u2014 the window spans the full campaign flight.").describe('Duration of the measurement window. REQUIRED when `kind` is `period` or `rolling` \u2014 declares the snapshot length (e.g., `{"interval": 1, "unit": "days"}` for a daily snapshot) or the trailing-window length (e.g., `{"interval": 7, "unit": "days"}` for trailing-7-day rolling reach). When `kind` is `cumulative`, this field is implicit (campaign-to-date) and SHOULD be omitted.').optional() }).catchall(z.any()).and(z.union([z.any().refine((value) => !z.object({ "kind": z.enum(["period", "rolling"]) }).safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.intersection(z.object({ "kind": z.enum(["period", "rolling"]) }), z.object({ "period": z.any().refine((value) => value !== void 0, "Required") }).passthrough())]).describe("Must also satisfy at least one of these alternatives.")).describe("Measurement window for the reported `reach` and `frequency` values in this row. Declares whether the values are a per-period snapshot, a trailing rolling window, or cumulative-to-date \u2014 without this declaration, buyers summing `reach` across rows (e.g., daily delivery reports) can silently double-count audiences. Sellers SHOULD populate this whenever `reach` is present.").optional(), "frequency": z.number().gte(0).describe("Average frequency per reach unit, measured over the window declared in `reach_window`. When `reach_unit` is 'households', this is average exposures per household; when 'accounts', per logged-in account; etc. When `reach_window` is omitted, the window is unspecified \u2014 buyers MUST NOT compare or average frequency values across rows.").optional(), "quartile_data": z.union([z.object({ "q1_views": z.number().gte(0).describe("25% completion views").optional(), "q2_views": z.number().gte(0).describe("50% completion views").optional(), "q3_views": z.number().gte(0).describe("75% completion views").optional(), "q4_views": z.number().gte(0).describe("100% completion views").optional() }).describe("Audio/video quartile completion data. Null indicates the metric is not applicable to this package/buy (e.g. quartile data on a non-video buy). Individual quartiles are addressable via the leaf metric identities `quartile_25` (q1_views), `quartile_50` (q2_views), `quartile_75` (q3_views), and `quartile_100` (q4_views) for declaration, commitments, aggregates, and breakdown sorting; this object remains the canonical carrier of the values. Quartiles are player-fired events (VAST firstQuartile/midpoint/thirdQuartile/complete). `quartile_100` counts 100%-of-duration completions and is distinct from `completed_views`, which counts completions at the seller's billable view threshold (`view_duration_seconds`) when one is set."), z.null().describe("Audio/video quartile completion data. Null indicates the metric is not applicable to this package/buy (e.g. quartile data on a non-video buy). Individual quartiles are addressable via the leaf metric identities `quartile_25` (q1_views), `quartile_50` (q2_views), `quartile_75` (q3_views), and `quartile_100` (q4_views) for declaration, commitments, aggregates, and breakdown sorting; this object remains the canonical carrier of the values. Quartiles are player-fired events (VAST firstQuartile/midpoint/thirdQuartile/complete). `quartile_100` counts 100%-of-duration completions and is distinct from `completed_views`, which counts completions at the seller's billable view threshold (`view_duration_seconds`) when one is set.")]).describe("Audio/video quartile completion data. Null indicates the metric is not applicable to this package/buy (e.g. quartile data on a non-video buy). Individual quartiles are addressable via the leaf metric identities `quartile_25` (q1_views), `quartile_50` (q2_views), `quartile_75` (q3_views), and `quartile_100` (q4_views) for declaration, commitments, aggregates, and breakdown sorting; this object remains the canonical carrier of the values. Quartiles are player-fired events (VAST firstQuartile/midpoint/thirdQuartile/complete). `quartile_100` counts 100%-of-duration completions and is distinct from `completed_views`, which counts completions at the seller's billable view threshold (`view_duration_seconds`) when one is set.").optional(), "time_based_views": z.array(z.object({ "threshold_seconds": z.number().gt(0).describe("Continuous duration threshold in seconds an impression must meet to count as a view in this entry."), "basis": z.enum(["play_time", "in_view"]).describe("Whether the threshold clock runs on playback time or in-view time. Required because play-time and in-view counts at the same threshold are materially different numbers."), "views": z.number().gte(0).describe("Count of views meeting this entry's threshold and basis."), "standard": z.enum(["mrc", "groupm"]).describe("Viewability standard governing the in-view clock for this entry. RECOMMENDED when basis is 'in_view' (MRC and GroupM thresholds differ); not applicable to play_time entries.").optional() }).catchall(z.any())).describe("Time-threshold video view counts. Each entry reports views that met a continuous duration threshold under a stated basis, rather than a completion percentage (percentage-based completion is quartile_data). Thresholds of 2 and 6 seconds are RECOMMENDED cross-platform reporting points; any seller-defined threshold is permitted. One entry per (threshold_seconds, basis) pair per reporting period \u2014 sellers MUST de-duplicate before emission and MUST NOT emit the same pair twice; buyers MAY treat duplicate pairs as a seller-side conformance bug. Entries under different bases are different metrics and MUST NOT be summed (see view-threshold-basis). Primarily an autoplay/skippable-video metric (social, olv, in-feed video); completion metrics remain the currency for lean-back CTV/cinema inventory. Distinct from `views` (the single billable-threshold scalar) and from `viewability.viewed_seconds` (average in-view duration, not a threshold count). Array entries are not individually sortable in breakdown sort_by. Disclosure-grade surface: (threshold_seconds, basis) is not part of the committed-metric qualifier vocabulary, so a `committed_metrics` entry for `time_based_views` contracts the array's presence, not specific thresholds.").optional(), "dooh_metrics": z.object({ "loop_plays": z.number().int().gte(0).describe("Number of times ad played in rotation").optional(), "screens_used": z.number().int().gte(0).describe("Number of unique screens displaying the ad").optional(), "screen_time_seconds": z.number().int().gte(0).describe("Total display time in seconds").optional(), "sov_achieved": z.number().gte(0).lte(1).describe("Actual share of voice delivered on a 0.0-1.0 scale. To compare this achieved value with the selected flat-rate DOOH parameters.sov_percentage, multiply sov_achieved by 100. Share is time-weighted: the sum of the delivered segment durations divided by the full loop duration. On equal-duration loops this equals the slot-count ratio. See also ooh_metrics.share_of_voice_contracted, which uses the same 0.0-1.0 scale.").optional(), "calculation_notes": z.string().describe("Per-row supplementary methodology notes for DOOH impression calculation (e.g., 'rotation-based; 6-second slot weighted by 70% audience overlap'). Free-form prose for context that doesn't fit the structured measurement-vendor surface. Canonical methodology declarations belong on the measurement vendor's `get_adcp_capabilities.measurement.metrics[]` block where they're discoverable once and inherited across delivery rows; this field is for row-specific context (a particular daypart's calculation, a venue-mix exception) rather than the seller's general methodology.").optional(), "venue_breakdown": z.array(z.object({ "venue_id": z.string().describe("Venue identifier"), "venue_name": z.string().describe("Human-readable venue name").optional(), "venue_type": z.string().describe("Venue type (e.g., 'airport', 'transit', 'retail', 'billboard')").optional(), "impressions": z.number().int().gte(0).describe("Impressions delivered at this venue"), "loop_plays": z.number().int().gte(0).describe("Loop plays at this venue").optional(), "screens_used": z.number().int().gte(0).describe("Number of screens used at this venue").optional() }).catchall(z.any())).describe("Per-venue performance breakdown").optional() }).catchall(z.any()).describe("DOOH-specific metrics (only included for DOOH campaigns)").optional(), "ooh_metrics": z.object({ "panels": z.array(z.object({ "identifiers": z.array(z.object({ "id": z.string().describe("Panel/face identifier within the id_type namespace"), "id_type": z.enum(["geopath", "route_frame", "plant_face", "other"]).describe("Identifier scheme: geopath (US Geopath Spot ID), route_frame (UK Route frame ID), plant_face (the operator's own panel number \u2014 the identifier both sides of a direct contract know), other (markets without a listed scheme). New schemes ship as enum additions in minors.") }).catchall(z.any())).min(1).describe("All identifiers for this panel, one entry per scheme"), "name": z.string().describe("Human-readable location description (e.g., 'I-95 N of Exit 12, right-hand read')").optional() }).catchall(z.any())).describe("Panels (faces) covered by this row. A panel commonly carries multiple identifiers at once \u2014 OOH contracts key line items on the measurement-currency panel number AND the operator's own panel number together.").optional(), "posting_period_start": z.string().date().describe("First in-charge date of the posting period this row covers").optional(), "posting_period_end": z.string().date().describe("Last date of the posting period this row covers").optional(), "average_posted_date": z.string().date().describe("Average actual posting date across the row's units \u2014 the date the display term runs from under OAAA Bulletin \xA72.2 / Poster \xA73.2(a) when materials were timely. Read with materials_timely to know whether that rule was in force.").optional(), "materials_timely": z.boolean().describe("Seller's assertion that the buyer delivered acceptable materials by the contractual deadline, which determines whether the \xA72.2 posting-completion rule (term runs from average posting date) applied. An assertion about the buyer's delivery, not a derived value \u2014 it is not recomputable from postings[] evidence, and is the one field in this block that isn't checkable against it.").optional(), "share_of_voice_contracted": z.number().gte(0).lte(1).describe("Contracted share of voice where the buy is rotation-based (e.g., rotary bulletin programs) rather than an exclusive face, on a 0.0-1.0 scale. Share is time-weighted: the sum of contracted display durations divided by the full rotation duration. On equal-duration rotations this equals the slot-count ratio.").optional(), "illuminated_hours": z.number().gte(0).lte(24).describe("Contracted daily illumination hours for the panels in this row. Determines the measured day-part basis (12/18/24-hour impressions) and the illumination-credit remedy when unmet.").optional(), "estimated_impressions": z.number().int().gte(0).describe("Modeled audience impressions for the panels and period in this row. This is the channel's delivery number \u2014 there is no event-counted alternative. The methodology tier MUST be declared in estimation_basis; provider identity is declared in the row-level measurement_source; the billing vendor is declared in measurement_terms.billing_measurement. The row's top-level impressions SHOULD carry the same value so cross-channel aggregation works without channel-specific logic.").optional(), "estimation_basis": z.enum(["currency_measured", "seller_modeled"]).describe("Methodology tier of estimated_impressions: currency_measured (an audience measurement currency's estimate for the panel and period \u2014 Geopath, Route, MOVE, COMMB \u2014 with the provider named in the row-level measurement_source) or seller_modeled (the seller's own model \u2014 the honest fallback for markets without a measurement currency). Tier, not provider: currencies change over time, so provider identity is data on measurement_source, not values in this enum.").optional(), "postings": z.array(z.object({ "panel_id": z.string().describe("Panel reference matching one of panels[].identifiers[].id"), "event_type": z.enum(["posted", "rotated", "repaired", "removed"]).describe("What the record attests: initial posting, rotary rotation to a new face, repair/reposting after damage, or removal at flight end").default("posted"), "occurred_at": z.string().date().describe("Date the attested event happened. For posted events this is the posting date \u2014 display terms customarily run from the average posting date across units."), "evidence": z.object({ "url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").describe("The evidence artifact \u2014 photograph, scanned tearsheet, or evidence package"), "captured_at": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "latitude": z.number().gte(-90).lte(90).describe("Capture location latitude").optional(), "longitude": z.number().gte(-180).lte(180).describe("Capture location longitude").optional(), "notes": z.string().describe("Context that doesn't fit the structured fields (e.g., 'shot from the eastbound approach at 40mph equivalent')").optional() }).catchall(z.any()).describe("Evidence artifact for this event (completion photograph); capture time and location ride the artifact").optional() }).catchall(z.any())).describe("Posting records \u2014 the seller-attested settlement artifact proving each panel was posted for the period. Industry convention (OAAA model contracts, Proof of Performance \xA73.5): photo evidence per bulletin within five calendar days of posting and again after each rotary rotation; one representative close-up photograph per creative design variation for poster showings (no deadline attached). Distinct from the \xA72.2 posting-completion obligation (posting within five business days of the scheduled date), which governs average_posted_date, not evidence.").optional(), "calculation_notes": z.string().describe("Row-specific methodology context that doesn't fit the structured fields (e.g., a partial-period proration or a market-specific estimate adjustment). Same role as dooh_metrics.calculation_notes \u2014 canonical methodology declarations belong on the measurement vendor's discoverable surfaces, not here.").optional() }).catchall(z.any()).and(z.union([z.any().refine((value) => !z.object({ "estimated_impressions": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough().safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.object({ "estimated_impressions": z.any().refine((value) => value !== void 0, "Required"), "estimation_basis": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("Classic (static) OOH metrics \u2014 printed bulletins, posters, transit, and street furniture (only included for ooh campaigns). Experimental in AdCP 3.2. Static units have no play event: the delivery number is a period-level modeled audience estimate whose methodology tier is declared in estimation_basis (provider identity rides the row-level measurement_source), and the settlement artifact is the posting record \u2014 it proves the posting period, not an airing.").optional(), "viewability": z.object({ "vendor": z.object({ "domain": z.string().regex(new RegExp("^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$")).describe("Domain where /.well-known/brand.json is hosted, or the brand's operating domain"), "brand_id": z.string().regex(new RegExp("^[a-z0-9_]+$")).describe("Brand identifier within the house portfolio. Optional for single-brand domains.").optional(), "countries": z.array(z.string().regex(new RegExp("^[A-Z]{2}$"))).min(1).refine((arr) => arr.every((item, i) => arr.indexOf(item) == i), "All items must be unique!").describe("Canonical set of ISO 3166-1 alpha-2 countries for this advertiser identity. Omit for a global/default identity. Array order is not meaningful; producers MUST sort codes lexicographically before computing keys or signatures. This qualifies account identity and is not delivery targeting.").optional(), "industries": z.array(z.string()).describe("Inline override for the brand's industries. Useful when the caller cannot modify the brand's canonical brand.json but needs to declare industries for governance (e.g., Annex III vertical detection). brand.json remains the canonical source; when omitted here, governance agents SHOULD resolve from brand.json.").optional(), "data_subject_contestation": z.object({ "url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").regex(new RegExp("^https://")).optional(), "email": z.string().email().optional(), "languages": z.array(z.string()).optional() }).strict().and(z.union([z.object({ "url": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "email": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("Inline override for the brand's contestation contact point. Useful when the operator does not control brand.json but needs to discharge Art 22(3) for this plan. brand.json is canonical; when omitted, governance agents resolve brand \u2192 house \u2192 missing.").optional(), "brand_kit_override": z.object({ "logo": z.object({ "asset_type": z.literal("image").describe("Discriminator identifying this as an image asset. See /schemas/creative/asset-types for the registry."), "url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").describe("URL to the image asset"), "width": z.number().int().gte(1).describe("Width in pixels"), "height": z.number().int().gte(1).describe("Height in pixels"), "file_size_bytes": z.number().int().gte(1).describe("Image file size in bytes. Required by agents that advertise a max_file_size_kb constraint.").optional(), "pixel_ratio": z.number().gt(0).describe("Intrinsic pixels per logical render pixel (for example `2` for a 600\xD7500 image intended to render at 300\xD7250). Optional because a validator can infer the ratio when the target format declares logical dimensions. When supplied, it MUST agree with both `width / logical_width` and `height / logical_height`; it is never a substitute for the intrinsic `width` and `height` fields.").optional(), "state_id": z.string().describe("Binding used only when this image populates a `seller_rendered_stateful_display` `state_canvases` slot. It MUST match one declared `states[].state_id` (semantic validators resolve it). Omit for ordinary image slots.").optional(), "breakpoint_id": z.string().describe("Binding used only when this image populates a `seller_rendered_stateful_display` `state_canvases` slot. It MUST match one breakpoint declared on the selected state (semantic validators resolve it). Omit for ordinary image slots.").optional(), "focal_point": z.array(z.number().gte(0).lte(1)).min(2).max(2).describe("Normalized `[x, y]` coordinates (0\u20131 from top-left) of the image's visual anchor. Seller-side renderers crop toward the focal point when deriving renditions across breakpoints and aspect ratios; absent, cropping falls back to center-weighted defaults.").optional(), "format": z.string().describe("Image file format (jpg, png, gif, webp, etc.)").optional(), "alt_text": z.string().describe("Alternative text for accessibility").optional(), "provenance": z.object({ "digital_source_type": z.enum(["digital_capture", "digital_creation", "trained_algorithmic_media", "composite_with_trained_algorithmic_media", "algorithmic_media", "composite_capture", "composite_synthetic", "human_edits", "data_driven_media"]).describe("IPTC-aligned classification of AI involvement in producing this content").optional(), "synthetic_depiction": z.boolean().describe("Assessed declaration of whether the content synthetically depicts a real or fictional person performing or appearing in a way that was generated or materially manipulated rather than captured as depicted. `true` covers both a fully synthetic performer and material manipulation of a real performer; `false` is an assessed declaration that the content does not contain such a depiction. Absence means the content has not been assessed for synthetic depiction. This field does not claim consent, legality, or independent verification, and receivers MUST NOT derive it solely from `digital_source_type`.").optional(), "ai_tool": z.object({ "name": z.string().describe("Name of the AI tool or model (e.g., 'DALL-E 3', 'Stable Diffusion XL', 'Gemini')"), "version": z.string().describe("Version identifier for the AI tool or model (e.g., '25.1', '0125', '2.1'). For generative models, use the model version rather than the API version.").optional(), "provider": z.string().describe("Organization that provides the AI tool (e.g., 'OpenAI', 'Stability AI', 'Google')").optional() }).describe("AI system used to generate or modify this content. Aligns with IPTC 2025.1 AI metadata fields and C2PA claim_generator.").optional(), "human_oversight": z.enum(["none", "prompt_only", "selected", "edited", "directed"]).describe("Level of human involvement in the AI-assisted creation process. Independent of `disclosure.required` \u2014 the protocol does not derive disclosure obligations from oversight level. Some regulations include carve-outs for human-edited or human-directed AI output, but those carve-outs have factual prerequisites the schema cannot evaluate. Asserting `edited` or `directed` does not by itself justify `disclosure.required: false`.").optional(), "declared_by": z.object({ "agent_url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").describe("URL of the agent or service that declared this provenance").optional(), "role": z.enum(["creator", "advertiser", "agency", "platform", "tool"]).describe("Role of the declaring party in the supply chain") }).describe("Party declaring this provenance. Identifies who attached the provenance claim, enabling receiving parties to assess trust.").optional(), "declared_at": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "created_time": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "c2pa": z.object({ "manifest_url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").describe("URL to the C2PA manifest store for this content") }).describe("C2PA sidecar manifest reference. Links to a detached cryptographic provenance manifest for this content. Note: file-level C2PA bindings break when ad servers transcode, resize, or re-encode assets. For pipelines with intermediaries, consider embedded_provenance as the primary provenance mechanism.").optional(), "embedded_provenance": z.array(z.object({ "method": z.enum(["manifest_wrapper", "provenance_markers"]).describe("How provenance data is carried within the content"), "standard": z.string().describe("Standard the embedding conforms to, if any (e.g., 'c2pa' for C2PA Section A.7 text manifest embedding)").optional(), "provider": z.string().describe("Organization that performed the embedding (e.g., 'Encypher', 'Digimarc'). Display label and audit context \u2014 not a wire identifier."), "verify_agent": z.object({ "agent_url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").regex(new RegExp("^https://")).describe("URL of the governance agent the buyer represents was used to embed/verify this layer. MUST use the `https://` scheme and MUST appear in the seller's `creative_policy.accepted_verifiers[].agent_url` list (canonicalized per /docs/reference/url-canonicalization: lowercase scheme and host, strip default port, normalize path dot-segments). Sellers MUST NOT call this URL until the canonicalized match is confirmed."), "feature_id": z.string().describe("Optional `feature_id` the buyer represents the seller should request via `get_creative_features` (e.g., `encypher.markers_present_v2`). SHOULD match the `feature_id` declared on the matching `accepted_verifiers[]` entry, or be omitted to defer the selector to the seller. When the seller's entry pins a `feature_id`, that value wins; when neither side pins, the seller selects from the agent's `governance.creative_features` catalog.").optional() }).strict().describe("Buyer's representation that this embedding can be verified by a governance agent on the seller's `creative_policy.accepted_verifiers` list. The `agent_url` MUST match (canonicalized) one of the seller's published `accepted_verifiers[].agent_url` entries; sellers reject `sync_creatives` submissions whose `verify_agent.agent_url` is off-list with `PROVENANCE_VERIFIER_NOT_ACCEPTED`. This is buyer-supplied evidence, not buyer-driven routing \u2014 the seller is the verifier-of-record and the seller controls which agent it actually calls (the seller MAY use a different on-list agent if it determines this is more appropriate; the seller does not call buyer-asserted endpoints outside its allowlist). MAY be omitted for self-verifiable embeddings (e.g., a C2PA text manifest with a public key the seller already trusts).").optional(), "embedded_at": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional() })).min(1).describe("Provenance metadata embedded within the content stream. Each entry declares one embedding layer: structured provenance data carried inside the content itself, as distinct from sidecar references (c2pa.manifest_url). Embedded provenance survives operations that break sidecar and file-level bindings: ad-server transcoding, CMS ingestion, copy-paste, reformatting, and CDN re-encoding. For ad-tech pipelines where content passes through multiple intermediaries, embedded provenance is the reliable path for provenance that persists from declaration through delivery. This is a declaration by the embedding party. The receiving party (the seller) is the verifier-of-record: it confirms the claim by calling a governance agent it trusts (typically one published in `creative_policy.accepted_verifiers`).").optional(), "watermarks": z.array(z.object({ "media_type": z.enum(["audio", "image", "video", "text"]).describe("Media category of the watermarked content"), "provider": z.string().describe("Organization that applied the watermark (e.g., 'Imatag', 'Steg.AI', 'Encypher'). Display label and audit context \u2014 not a wire identifier."), "verify_agent": z.object({ "agent_url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").regex(new RegExp("^https://")).describe("URL of the governance agent the buyer represents was used to apply/detect this watermark. MUST use the `https://` scheme and MUST appear in the seller's `creative_policy.accepted_verifiers[].agent_url` list (canonicalized per /docs/reference/url-canonicalization: lowercase scheme and host, strip default port, normalize path dot-segments). Sellers MUST NOT call this URL until the canonicalized match is confirmed."), "feature_id": z.string().describe("Optional `feature_id` the buyer represents the seller should request via `get_creative_features` (e.g., `imatag.watermark_detected`). SHOULD match the `feature_id` declared on the matching `accepted_verifiers[]` entry, or be omitted to defer the selector to the seller. When the seller's entry pins a `feature_id`, that value wins; when neither side pins, the seller selects from the agent's `governance.creative_features` catalog.").optional() }).strict().describe("Buyer's representation that this watermark can be detected by a governance agent on the seller's `creative_policy.accepted_verifiers` list. The `agent_url` MUST match (canonicalized) one of the seller's published `accepted_verifiers[].agent_url` entries; sellers reject `sync_creatives` submissions whose `verify_agent.agent_url` is off-list with `PROVENANCE_VERIFIER_NOT_ACCEPTED`. This is buyer-supplied evidence, not buyer-driven routing \u2014 the seller is the verifier-of-record and the seller controls which agent it actually calls (the seller MAY use a different on-list agent if it determines this is more appropriate; the seller does not call buyer-asserted endpoints outside its allowlist).").optional(), "c2pa_action": z.enum(["c2pa.watermarked.bound", "c2pa.watermarked.unbound"]).describe("C2PA action classification for this watermark").optional(), "embedded_at": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional() })).min(1).describe("Content watermarks applied to this asset. Each entry declares one watermarking layer: a content modification that encodes an identifier or fingerprint within the asset. Watermarks differ from embedded provenance: a watermark encodes an identifier (who generated it, who owns it), while embedded provenance carries or references a structured provenance record (the full chain of custody). A single asset may carry both. Aligns with C2PA action taxonomy: c2pa.watermarked.bound (watermark linked to a C2PA manifest) and c2pa.watermarked.unbound (watermark independent of any manifest). This is a declaration by the watermarking party. The receiving party (the seller) is the verifier-of-record: it confirms the claim by calling a governance agent it trusts (typically one published in `creative_policy.accepted_verifiers`).").optional(), "disclosure": z.object({ "required": z.boolean().describe("The declaring party's claim that AI disclosure is required for this content under applicable regulations. This is a declared signal carried through the supply chain \u2014 useful as a routing and audit input \u2014 not a regulatory determination made by the protocol. Receiving parties remain responsible for their own jurisdictional analysis and should not treat `required: false` as compliance cover."), "jurisdictions": z.array(z.object({ "country": z.string().describe("ISO 3166-1 alpha-2 country code (e.g., 'US', 'DE', 'CN')"), "region": z.string().describe("Sub-national region code (e.g., 'CA' for California, 'BY' for Bavaria)").optional(), "regulation": z.string().describe("Regulation identifier (e.g., 'eu_ai_act_article_50', 'ca_sb_942', 'cn_deep_synthesis')"), "label_text": z.string().describe("Required disclosure label text for this jurisdiction, in the local language").optional(), "render_guidance": z.object({ "persistence": z.enum(["continuous", "initial", "flexible"]).describe("How long the disclosure must persist during content playback or display").optional(), "min_duration_ms": z.number().int().gte(1).describe("Minimum display duration in milliseconds for initial persistence. Recommended when persistence is initial \u2014 without it, the duration is at the publisher's discretion. At serve time the publisher reads this from provenance since the brief is not available.").optional(), "positions": z.array(z.enum(["prominent", "footer", "audio", "subtitle", "overlay", "end_card", "pre_roll", "companion"]).describe("Where a required disclosure should appear within a creative. Used by creative briefs to specify disclosure placement and by formats to declare which positions they can render.")).min(1).refine((arr) => arr.every((item, i) => arr.indexOf(item) == i), "All items must be unique!").describe("Preferred disclosure positions in priority order. The first position a format supports should be used.").optional(), "ext": z.record(z.string(), z.any()).describe("Extension object for platform-specific, vendor-namespaced parameters. Extensions are always optional and must be namespaced under a vendor/platform key (e.g., ext.gam, ext.roku). Used for custom capabilities, partner-specific configuration, and features being proposed for standardization.").optional() }).describe("How the disclosure should be rendered for this jurisdiction. Expresses the declaring party's intent for persistence and position based on regulatory requirements. Publishers control actual rendering but governance agents can audit whether guidance was followed.").refine((value) => Object.keys(value).length >= 1, "Object must contain at least 1 property").optional() })).min(1).describe("Jurisdictions where disclosure obligations apply").optional() }).describe("Regulatory disclosure requirements for this content. Indicates whether AI disclosure is required and under which jurisdictions.").optional(), "verification": z.array(z.object({ "verified_by": z.string().describe("Name of the verification service (e.g., 'DoubleVerify', 'Hive Moderation', 'Reality Defender')"), "verified_time": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "result": z.enum(["authentic", "ai_generated", "ai_modified", "inconclusive"]).describe("Verification outcome"), "confidence": z.number().gte(0).lte(1).describe("Confidence score of the verification result (0.0 to 1.0)").optional(), "details_url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").describe("URL to the full verification report").optional() })).min(1).describe("Third-party verification or detection results for this content. Multiple services may independently evaluate the same content. Provenance is a claim \u2014 verification results attached by the declaring party are supplementary. The enforcing party (e.g., seller/publisher) should run its own verification via get_creative_features or calibrate_content.").optional(), "ext": z.record(z.string(), z.any()).describe("Extension object for platform-specific, vendor-namespaced parameters. Extensions are always optional and must be namespaced under a vendor/platform key (e.g., ext.gam, ext.roku). Used for custom capabilities, partner-specific configuration, and features being proposed for standardization.").optional() }).describe("Provenance metadata for this asset, overrides manifest-level provenance").optional() }).catchall(z.any()).describe("Override logo asset.").optional(), "colors": z.object({ "primary": z.string().regex(new RegExp("^#[0-9a-fA-F]{6}$")).optional(), "secondary": z.string().regex(new RegExp("^#[0-9a-fA-F]{6}$")).optional(), "accent": z.string().regex(new RegExp("^#[0-9a-fA-F]{6}$")).optional() }).catchall(z.any()).describe("Override brand colors (hex strings).").optional(), "voice": z.string().describe("Override brand-voice description for surface-composed text/audio output.").optional(), "tagline": z.string().describe("Override tagline.").optional() }).catchall(z.any()).describe("Inline override for brand-kit fields normally resolved from `/.well-known/brand.json` on `domain` (logo, colors, voice, tagline). Use when brand.json is missing, stale, or inappropriate for this specific call \u2014 e.g., a campaign-scoped tagline, a co-branded creative, a freshly-rebranded color palette the brand.json hasn't shipped yet. Same inline-override pattern as `industries` and `data_subject_contestation` above: brand.json is canonical, the override is per-call. Adopters needing to override fields outside this subset (`voice_attributes`, `prohibited_terms`, etc.) MUST publish a different brand.json and reference it via a different `domain` \u2014 the inline override is intentionally narrow to a small high-traffic subset.\n\n**Merge semantics (normative).** The merge is **field-level**, not whole-object replacement. Each field within `brand_kit_override` (`logo`, `colors`, `voice`, `tagline`) is evaluated independently \u2014 when a field is present on the override the override value applies; when a field is absent the brand.json value applies (or is absent if brand.json doesn't carry one either). For composite fields (`colors.primary`, `colors.secondary`, `colors.accent`), the merge is one level deeper: each color slot is evaluated independently \u2014 a producer can override `colors.primary` while still inheriting `colors.secondary` from brand.json. SDKs MUST NOT treat a present `brand_kit_override.colors` as wiping the brand.json `colors` block entirely; only the per-slot fields present in the override take precedence. Without this rule, a partial-override semantics would diverge across SDKs and produce inconsistent rendering for the same payload.").optional() }).strict().describe("Vendor that produced these viewability values. Optional but RECOMMENDED so the row is self-describing \u2014 buyer agents reading delivery in isolation can attribute the numbers without joining back to `package.committed_metrics` or `package.performance_standards`. The vendor's `brand.json` `agents[type='measurement']` is the discovery anchor; the metric definitions live on the agent's `get_adcp_capabilities.measurement.metrics[]` block. Same shape as `vendor_metric_value.vendor` for symmetry across vendor-attested surfaces.").optional(), "measurable_impressions": z.number().gte(0).describe("Impressions where viewability could be measured. Excludes environments without measurement capability (e.g., non-Intersection Observer browsers, certain app environments). Coverage denominator for `viewable_rate`, `viewed_seconds`, and both viewed-seconds distributions \u2014 every duration statistic is computed over this same measurable population.").optional(), "viewable_impressions": z.number().gte(0).describe("Impressions that met the viewability threshold defined by the measurement standard.").optional(), "viewable_rate": z.number().gte(0).lte(1).describe("Viewable impression rate (viewable_impressions / measurable_impressions). Range 0.0 to 1.0.").optional(), "viewed_seconds": z.number().gte(0).describe("Average in-view duration per measurable impression, in seconds. Reporting-side counterpart to the `viewed_seconds` optimization metric in `optimization-goal.json`. Computed over `measurable_impressions`, not total impressions \u2014 the same denominator as `viewable_rate`. The viewability `standard` governs the threshold (e.g., MRC's 50% pixels for 1s display / 2s video) that defines when an impression is in view and therefore when the clock is running. Sellers reporting against a `viewed_seconds` optimization goal MUST populate this field.").optional(), "viewed_seconds_percentiles": z.object({ "p25": z.number().gte(0).describe("25th-percentile in-view duration in seconds."), "p50": z.number().gte(0).describe("Median (50th-percentile) in-view duration in seconds."), "p75": z.number().gte(0).describe("75th-percentile in-view duration in seconds."), "p90": z.number().gte(0).describe("90th-percentile in-view duration in seconds."), "p95": z.number().gte(0).describe("95th-percentile in-view duration in seconds.") }).strict().describe("Percentile summary of the per-impression in-view durations whose arithmetic mean is reported in `viewed_seconds`. This object MUST use the same reporting row, measurement vendor, viewability `standard`, and `measurable_impressions` population as `viewed_seconds`; sellers MUST omit it when `measurable_impressions` is zero. Percentiles use the nearest-rank definition: sort the N observed durations in ascending order and select rank `ceil(p \xD7 N)` (one-based) for percentile p. Values MUST be non-decreasing from p25 through p95. The structured metric identity `viewed_seconds_percentiles` makes this optional surface discoverable and requestable; it is not sortable and the nested object remains the canonical carrier.").optional(), "viewed_seconds_histogram": z.array(z.object({ "lower_bound_seconds": z.number().gte(0).describe("Inclusive lower bound of this duration bucket, in seconds."), "upper_bound_seconds": z.number().gte(0).describe("Exclusive upper bound of this duration bucket, in seconds. MUST be greater than `lower_bound_seconds`. Omit only on the final bucket to represent an unbounded upper range.").optional(), "impressions": z.number().int().gte(0).describe("Number of measurable impressions whose in-view duration falls in this bucket.") }).strict()).min(1).describe("Bucketed counts of the per-impression in-view durations whose arithmetic mean is reported in `viewed_seconds`. Buckets MUST be ordered by ascending lower bound, MUST NOT overlap, and MUST partition every impression in the same `measurable_impressions` population exactly once; therefore the sum of `impressions` MUST equal `measurable_impressions`. Buckets need not be contiguous: a gap between consecutive bucket boundaries is permitted when no impressions fall within that range \u2014 the sum constraint enforces this implicitly, and validators MUST NOT independently require contiguity. Each bucket is half-open `[lower_bound_seconds, upper_bound_seconds)`; only the final bucket MAY omit `upper_bound_seconds`, representing an unbounded upper range. Sellers choose boundaries, but buyers MUST combine histograms only when the complete boundary sequence, measurement vendor, and viewability `standard` match. The structured metric identity `viewed_seconds_histogram` makes this optional surface discoverable and requestable; it is not sortable and this nested array remains the canonical carrier.").optional(), "standard": z.enum(["mrc", "groupm"]).describe("Viewability measurement standard applied to these metrics. Governs the in-view threshold for `viewable_rate`, `viewed_seconds`, and both viewed-seconds distributions.").optional() }).catchall(z.any()).and(z.intersection(z.intersection(z.union([z.any().refine((value) => !z.object({ "viewed_seconds_percentiles": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough().safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.intersection(z.object({ "viewed_seconds_percentiles": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "measurable_impressions": z.number().int().gte(1).optional() }))]), z.union([z.any().refine((value) => !z.object({ "viewed_seconds_histogram": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough().safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.intersection(z.object({ "viewed_seconds_histogram": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "measurable_impressions": z.number().int().optional() }))])), z.intersection(z.union([z.any().refine((value) => !z.object({ "viewed_seconds_percentiles": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough().safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.object({ "viewed_seconds_percentiles": z.any().refine((value) => value !== void 0, "Required"), "viewed_seconds": z.any().refine((value) => value !== void 0, "Required"), "measurable_impressions": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]), z.union([z.any().refine((value) => !z.object({ "viewed_seconds_histogram": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough().safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.object({ "viewed_seconds_histogram": z.any().refine((value) => value !== void 0, "Required"), "viewed_seconds": z.any().refine((value) => value !== void 0, "Required"), "measurable_impressions": z.any().refine((value) => value !== void 0, "Required") }).passthrough()])))).describe("Viewability metrics. Viewable rate should be calculated as viewable_impressions / measurable_impressions (not total impressions), since some environments cannot measure viewability. Includes `viewed_seconds` \u2014 average in-view duration \u2014 plus optional percentile and histogram distributions over that duration; all three use the same `measurable_impressions` population and are governed by the same viewability threshold (`standard`). Sellers SHOULD include `standard` whenever measured viewability values are reported because MRC and GroupM rows are not interchangeable. The numeric leaves are addressable via the leaf metric identities `viewable_rate`, `viewable_impressions`, `measurable_impressions`, and `viewed_seconds` for declaration, commitments, aggregates, and breakdown sorting. The structured distribution carriers require explicit `viewed_seconds_percentiles` and `viewed_seconds_histogram` identities for declaration, commitment, and selection; they are not numeric aggregate rows or sort keys. This object remains the canonical carrier of every value. When a buy reports under more than one standard, contract a specific standard via the `viewability_standard` qualifier on `committed_metrics`; when the package's `committed_metrics` carry a `viewability_standard` qualifier, sellers MUST populate `standard` on reported viewability objects so reconciliation can match the qualifier.").optional(), "engagements": z.number().gte(0).describe("Total engagements \u2014 direct interactions with the ad beyond viewing. Includes social reactions/comments/shares, story/unit opens, interactive overlay taps on CTV, companion banner interactions on audio. Platform-specific; corresponds to the 'engagements' optimization metric. Maps to DBCFM KPI_INTERACTIONS (Interaktionen) in the Reporting/Performance block.").optional(), "follows": z.number().gte(0).describe("New followers, page likes, artist/podcast/channel follows, or free channel/feed subscribes attributed to this delivery. Paid subscriptions are conversion events with `event_type: subscribe`, not `follows`.").optional(), "saves": z.number().gte(0).describe("Saves, bookmarks, playlist adds, pins attributed to this delivery.").optional(), "profile_visits": z.number().gte(0).describe("Visits to the brand's in-platform page (profile, artist page, channel, or storefront) attributed to this delivery. Does not include external website clicks.").optional(), "engagement_rate": z.number().gte(0).lte(1).describe("Platform-specific engagement rate (0.0 to 1.0). Typically engagements/impressions, but definition varies by platform.").optional(), "cost_per_click": z.number().gte(0).describe("Cost per click (spend / clicks)").optional(), "cost_per_completed_view": z.number().gte(0).describe("Cost per completed view (spend / completed_views). Primary CPCV pricing scalar for video/audio inventory; the package's `pricing_model` is `cpcv` when this field is the billing basis.").optional(), "cpm": z.number().gte(0).describe("Cost per thousand impressions, computed as (spend / impressions) \xD7 1000. Universal pricing scalar across CTV, display, mobile/web video, native, audio, and DOOH inventory; the package's `pricing_model` is `cpm` when this field is the billing basis. Field name aligns with the canonical `cpm` token in `enums/pricing-model.json` and `pricing-options/cpm-option.json` so buyers cross-walk pricing model \u2192 reported scalar without a translation table.").optional(), "downloads": z.number().gte(0).describe("Audio/podcast downloads (IAB Podcast Measurement Technical Guidelines 2.x methodology). Distinct from `views` \u2014 for podcast inventory this is the count of podcast episode downloads; for streaming audio it is the count of stream starts that meet the platform's download threshold. Prefer this over `views` for audio inventory.").optional(), "units_sold": z.number().gte(0).describe("Items sold attributed to this delivery. Retail-media scalar distinct from `conversions` \u2014 a single conversion (transaction) may carry multiple `units_sold`. Used by retail media platforms where the buyer optimizes against unit movement, not transaction count. Attribution lookback windows are platform-specific (commonly 7/14/30 days, view-through and click-through variants); sellers SHOULD declare the window via `reporting_capabilities.measurement_windows` or `measurement_terms` rather than encoding it in this scalar.").optional(), "new_to_brand_units": z.number().gte(0).describe("Units sold to first-time brand buyers (count, not rate). Retail-media scalar \u2014 the unit-volume parallel to the conversion-fraction `new_to_brand_rate`. Used by retail media platforms where new-customer acquisition unit volume is a primary KPI. Same attribution-window note as `units_sold` applies.").optional(), "by_action_source": z.array(z.object({ "action_source": z.enum(["website", "app", "offline", "phone_call", "chat", "email", "in_store", "system_generated", "other"]).describe("Where the conversion occurred"), "event_source_id": z.string().describe("Event source that produced these conversions (for disambiguation when multiple event sources are configured)").optional(), "count": z.number().gte(0).describe("Number of conversions from this action source"), "value": z.number().gte(0).describe("Total monetary value of conversions from this action source").optional() }).catchall(z.any())).describe("Conversion metrics broken down by action source (website, app, in_store, etc.). Useful for omnichannel sellers where conversions occur across digital and physical channels.").optional(), "vendor_metric_values": z.array(z.object({ "vendor": z.object({ "domain": z.string().regex(new RegExp("^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$")).describe("Domain where /.well-known/brand.json is hosted, or the brand's operating domain"), "brand_id": z.string().regex(new RegExp("^[a-z0-9_]+$")).describe("Brand identifier within the house portfolio. Optional for single-brand domains.").optional(), "countries": z.array(z.string().regex(new RegExp("^[A-Z]{2}$"))).min(1).refine((arr) => arr.every((item, i) => arr.indexOf(item) == i), "All items must be unique!").describe("Canonical set of ISO 3166-1 alpha-2 countries for this advertiser identity. Omit for a global/default identity. Array order is not meaningful; producers MUST sort codes lexicographically before computing keys or signatures. This qualifies account identity and is not delivery targeting.").optional(), "industries": z.array(z.string()).describe("Inline override for the brand's industries. Useful when the caller cannot modify the brand's canonical brand.json but needs to declare industries for governance (e.g., Annex III vertical detection). brand.json remains the canonical source; when omitted here, governance agents SHOULD resolve from brand.json.").optional(), "data_subject_contestation": z.object({ "url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").regex(new RegExp("^https://")).optional(), "email": z.string().email().optional(), "languages": z.array(z.string()).optional() }).strict().and(z.union([z.object({ "url": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "email": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("Inline override for the brand's contestation contact point. Useful when the operator does not control brand.json but needs to discharge Art 22(3) for this plan. brand.json is canonical; when omitted, governance agents resolve brand \u2192 house \u2192 missing.").optional(), "brand_kit_override": z.object({ "logo": z.object({ "asset_type": z.literal("image").describe("Discriminator identifying this as an image asset. See /schemas/creative/asset-types for the registry."), "url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").describe("URL to the image asset"), "width": z.number().int().gte(1).describe("Width in pixels"), "height": z.number().int().gte(1).describe("Height in pixels"), "file_size_bytes": z.number().int().gte(1).describe("Image file size in bytes. Required by agents that advertise a max_file_size_kb constraint.").optional(), "pixel_ratio": z.number().gt(0).describe("Intrinsic pixels per logical render pixel (for example `2` for a 600\xD7500 image intended to render at 300\xD7250). Optional because a validator can infer the ratio when the target format declares logical dimensions. When supplied, it MUST agree with both `width / logical_width` and `height / logical_height`; it is never a substitute for the intrinsic `width` and `height` fields.").optional(), "state_id": z.string().describe("Binding used only when this image populates a `seller_rendered_stateful_display` `state_canvases` slot. It MUST match one declared `states[].state_id` (semantic validators resolve it). Omit for ordinary image slots.").optional(), "breakpoint_id": z.string().describe("Binding used only when this image populates a `seller_rendered_stateful_display` `state_canvases` slot. It MUST match one breakpoint declared on the selected state (semantic validators resolve it). Omit for ordinary image slots.").optional(), "focal_point": z.array(z.number().gte(0).lte(1)).min(2).max(2).describe("Normalized `[x, y]` coordinates (0\u20131 from top-left) of the image's visual anchor. Seller-side renderers crop toward the focal point when deriving renditions across breakpoints and aspect ratios; absent, cropping falls back to center-weighted defaults.").optional(), "format": z.string().describe("Image file format (jpg, png, gif, webp, etc.)").optional(), "alt_text": z.string().describe("Alternative text for accessibility").optional(), "provenance": z.object({ "digital_source_type": z.enum(["digital_capture", "digital_creation", "trained_algorithmic_media", "composite_with_trained_algorithmic_media", "algorithmic_media", "composite_capture", "composite_synthetic", "human_edits", "data_driven_media"]).describe("IPTC-aligned classification of AI involvement in producing this content").optional(), "synthetic_depiction": z.boolean().describe("Assessed declaration of whether the content synthetically depicts a real or fictional person performing or appearing in a way that was generated or materially manipulated rather than captured as depicted. `true` covers both a fully synthetic performer and material manipulation of a real performer; `false` is an assessed declaration that the content does not contain such a depiction. Absence means the content has not been assessed for synthetic depiction. This field does not claim consent, legality, or independent verification, and receivers MUST NOT derive it solely from `digital_source_type`.").optional(), "ai_tool": z.object({ "name": z.string().describe("Name of the AI tool or model (e.g., 'DALL-E 3', 'Stable Diffusion XL', 'Gemini')"), "version": z.string().describe("Version identifier for the AI tool or model (e.g., '25.1', '0125', '2.1'). For generative models, use the model version rather than the API version.").optional(), "provider": z.string().describe("Organization that provides the AI tool (e.g., 'OpenAI', 'Stability AI', 'Google')").optional() }).describe("AI system used to generate or modify this content. Aligns with IPTC 2025.1 AI metadata fields and C2PA claim_generator.").optional(), "human_oversight": z.enum(["none", "prompt_only", "selected", "edited", "directed"]).describe("Level of human involvement in the AI-assisted creation process. Independent of `disclosure.required` \u2014 the protocol does not derive disclosure obligations from oversight level. Some regulations include carve-outs for human-edited or human-directed AI output, but those carve-outs have factual prerequisites the schema cannot evaluate. Asserting `edited` or `directed` does not by itself justify `disclosure.required: false`.").optional(), "declared_by": z.object({ "agent_url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").describe("URL of the agent or service that declared this provenance").optional(), "role": z.enum(["creator", "advertiser", "agency", "platform", "tool"]).describe("Role of the declaring party in the supply chain") }).describe("Party declaring this provenance. Identifies who attached the provenance claim, enabling receiving parties to assess trust.").optional(), "declared_at": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "created_time": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "c2pa": z.object({ "manifest_url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").describe("URL to the C2PA manifest store for this content") }).describe("C2PA sidecar manifest reference. Links to a detached cryptographic provenance manifest for this content. Note: file-level C2PA bindings break when ad servers transcode, resize, or re-encode assets. For pipelines with intermediaries, consider embedded_provenance as the primary provenance mechanism.").optional(), "embedded_provenance": z.array(z.object({ "method": z.enum(["manifest_wrapper", "provenance_markers"]).describe("How provenance data is carried within the content"), "standard": z.string().describe("Standard the embedding conforms to, if any (e.g., 'c2pa' for C2PA Section A.7 text manifest embedding)").optional(), "provider": z.string().describe("Organization that performed the embedding (e.g., 'Encypher', 'Digimarc'). Display label and audit context \u2014 not a wire identifier."), "verify_agent": z.object({ "agent_url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").regex(new RegExp("^https://")).describe("URL of the governance agent the buyer represents was used to embed/verify this layer. MUST use the `https://` scheme and MUST appear in the seller's `creative_policy.accepted_verifiers[].agent_url` list (canonicalized per /docs/reference/url-canonicalization: lowercase scheme and host, strip default port, normalize path dot-segments). Sellers MUST NOT call this URL until the canonicalized match is confirmed."), "feature_id": z.string().describe("Optional `feature_id` the buyer represents the seller should request via `get_creative_features` (e.g., `encypher.markers_present_v2`). SHOULD match the `feature_id` declared on the matching `accepted_verifiers[]` entry, or be omitted to defer the selector to the seller. When the seller's entry pins a `feature_id`, that value wins; when neither side pins, the seller selects from the agent's `governance.creative_features` catalog.").optional() }).strict().describe("Buyer's representation that this embedding can be verified by a governance agent on the seller's `creative_policy.accepted_verifiers` list. The `agent_url` MUST match (canonicalized) one of the seller's published `accepted_verifiers[].agent_url` entries; sellers reject `sync_creatives` submissions whose `verify_agent.agent_url` is off-list with `PROVENANCE_VERIFIER_NOT_ACCEPTED`. This is buyer-supplied evidence, not buyer-driven routing \u2014 the seller is the verifier-of-record and the seller controls which agent it actually calls (the seller MAY use a different on-list agent if it determines this is more appropriate; the seller does not call buyer-asserted endpoints outside its allowlist). MAY be omitted for self-verifiable embeddings (e.g., a C2PA text manifest with a public key the seller already trusts).").optional(), "embedded_at": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional() })).min(1).describe("Provenance metadata embedded within the content stream. Each entry declares one embedding layer: structured provenance data carried inside the content itself, as distinct from sidecar references (c2pa.manifest_url). Embedded provenance survives operations that break sidecar and file-level bindings: ad-server transcoding, CMS ingestion, copy-paste, reformatting, and CDN re-encoding. For ad-tech pipelines where content passes through multiple intermediaries, embedded provenance is the reliable path for provenance that persists from declaration through delivery. This is a declaration by the embedding party. The receiving party (the seller) is the verifier-of-record: it confirms the claim by calling a governance agent it trusts (typically one published in `creative_policy.accepted_verifiers`).").optional(), "watermarks": z.array(z.object({ "media_type": z.enum(["audio", "image", "video", "text"]).describe("Media category of the watermarked content"), "provider": z.string().describe("Organization that applied the watermark (e.g., 'Imatag', 'Steg.AI', 'Encypher'). Display label and audit context \u2014 not a wire identifier."), "verify_agent": z.object({ "agent_url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").regex(new RegExp("^https://")).describe("URL of the governance agent the buyer represents was used to apply/detect this watermark. MUST use the `https://` scheme and MUST appear in the seller's `creative_policy.accepted_verifiers[].agent_url` list (canonicalized per /docs/reference/url-canonicalization: lowercase scheme and host, strip default port, normalize path dot-segments). Sellers MUST NOT call this URL until the canonicalized match is confirmed."), "feature_id": z.string().describe("Optional `feature_id` the buyer represents the seller should request via `get_creative_features` (e.g., `imatag.watermark_detected`). SHOULD match the `feature_id` declared on the matching `accepted_verifiers[]` entry, or be omitted to defer the selector to the seller. When the seller's entry pins a `feature_id`, that value wins; when neither side pins, the seller selects from the agent's `governance.creative_features` catalog.").optional() }).strict().describe("Buyer's representation that this watermark can be detected by a governance agent on the seller's `creative_policy.accepted_verifiers` list. The `agent_url` MUST match (canonicalized) one of the seller's published `accepted_verifiers[].agent_url` entries; sellers reject `sync_creatives` submissions whose `verify_agent.agent_url` is off-list with `PROVENANCE_VERIFIER_NOT_ACCEPTED`. This is buyer-supplied evidence, not buyer-driven routing \u2014 the seller is the verifier-of-record and the seller controls which agent it actually calls (the seller MAY use a different on-list agent if it determines this is more appropriate; the seller does not call buyer-asserted endpoints outside its allowlist).").optional(), "c2pa_action": z.enum(["c2pa.watermarked.bound", "c2pa.watermarked.unbound"]).describe("C2PA action classification for this watermark").optional(), "embedded_at": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional() })).min(1).describe("Content watermarks applied to this asset. Each entry declares one watermarking layer: a content modification that encodes an identifier or fingerprint within the asset. Watermarks differ from embedded provenance: a watermark encodes an identifier (who generated it, who owns it), while embedded provenance carries or references a structured provenance record (the full chain of custody). A single asset may carry both. Aligns with C2PA action taxonomy: c2pa.watermarked.bound (watermark linked to a C2PA manifest) and c2pa.watermarked.unbound (watermark independent of any manifest). This is a declaration by the watermarking party. The receiving party (the seller) is the verifier-of-record: it confirms the claim by calling a governance agent it trusts (typically one published in `creative_policy.accepted_verifiers`).").optional(), "disclosure": z.object({ "required": z.boolean().describe("The declaring party's claim that AI disclosure is required for this content under applicable regulations. This is a declared signal carried through the supply chain \u2014 useful as a routing and audit input \u2014 not a regulatory determination made by the protocol. Receiving parties remain responsible for their own jurisdictional analysis and should not treat `required: false` as compliance cover."), "jurisdictions": z.array(z.object({ "country": z.string().describe("ISO 3166-1 alpha-2 country code (e.g., 'US', 'DE', 'CN')"), "region": z.string().describe("Sub-national region code (e.g., 'CA' for California, 'BY' for Bavaria)").optional(), "regulation": z.string().describe("Regulation identifier (e.g., 'eu_ai_act_article_50', 'ca_sb_942', 'cn_deep_synthesis')"), "label_text": z.string().describe("Required disclosure label text for this jurisdiction, in the local language").optional(), "render_guidance": z.object({ "persistence": z.enum(["continuous", "initial", "flexible"]).describe("How long the disclosure must persist during content playback or display").optional(), "min_duration_ms": z.number().int().gte(1).describe("Minimum display duration in milliseconds for initial persistence. Recommended when persistence is initial \u2014 without it, the duration is at the publisher's discretion. At serve time the publisher reads this from provenance since the brief is not available.").optional(), "positions": z.array(z.enum(["prominent", "footer", "audio", "subtitle", "overlay", "end_card", "pre_roll", "companion"]).describe("Where a required disclosure should appear within a creative. Used by creative briefs to specify disclosure placement and by formats to declare which positions they can render.")).min(1).refine((arr) => arr.every((item, i) => arr.indexOf(item) == i), "All items must be unique!").describe("Preferred disclosure positions in priority order. The first position a format supports should be used.").optional(), "ext": z.record(z.string(), z.any()).describe("Extension object for platform-specific, vendor-namespaced parameters. Extensions are always optional and must be namespaced under a vendor/platform key (e.g., ext.gam, ext.roku). Used for custom capabilities, partner-specific configuration, and features being proposed for standardization.").optional() }).describe("How the disclosure should be rendered for this jurisdiction. Expresses the declaring party's intent for persistence and position based on regulatory requirements. Publishers control actual rendering but governance agents can audit whether guidance was followed.").refine((value) => Object.keys(value).length >= 1, "Object must contain at least 1 property").optional() })).min(1).describe("Jurisdictions where disclosure obligations apply").optional() }).describe("Regulatory disclosure requirements for this content. Indicates whether AI disclosure is required and under which jurisdictions.").optional(), "verification": z.array(z.object({ "verified_by": z.string().describe("Name of the verification service (e.g., 'DoubleVerify', 'Hive Moderation', 'Reality Defender')"), "verified_time": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "result": z.enum(["authentic", "ai_generated", "ai_modified", "inconclusive"]).describe("Verification outcome"), "confidence": z.number().gte(0).lte(1).describe("Confidence score of the verification result (0.0 to 1.0)").optional(), "details_url": z.string().refine(adcpJsonSchemaUri, "Invalid URI").describe("URL to the full verification report").optional() })).min(1).describe("Third-party verification or detection results for this content. Multiple services may independently evaluate the same content. Provenance is a claim \u2014 verification results attached by the declaring party are supplementary. The enforcing party (e.g., seller/publisher) should run its own verification via get_creative_features or calibrate_content.").optional(), "ext": z.record(z.string(), z.any()).describe("Extension object for platform-specific, vendor-namespaced parameters. Extensions are always optional and must be namespaced under a vendor/platform key (e.g., ext.gam, ext.roku). Used for custom capabilities, partner-specific configuration, and features being proposed for standardization.").optional() }).describe("Provenance metadata for this asset, overrides manifest-level provenance").optional() }).catchall(z.any()).describe("Override logo asset.").optional(), "colors": z.object({ "primary": z.string().regex(new RegExp("^#[0-9a-fA-F]{6}$")).optional(), "secondary": z.string().regex(new RegExp("^#[0-9a-fA-F]{6}$")).optional(), "accent": z.string().regex(new RegExp("^#[0-9a-fA-F]{6}$")).optional() }).catchall(z.any()).describe("Override brand colors (hex strings).").optional(), "voice": z.string().describe("Override brand-voice description for surface-composed text/audio output.").optional(), "tagline": z.string().describe("Override tagline.").optional() }).catchall(z.any()).describe("Inline override for brand-kit fields normally resolved from `/.well-known/brand.json` on `domain` (logo, colors, voice, tagline). Use when brand.json is missing, stale, or inappropriate for this specific call \u2014 e.g., a campaign-scoped tagline, a co-branded creative, a freshly-rebranded color palette the brand.json hasn't shipped yet. Same inline-override pattern as `industries` and `data_subject_contestation` above: brand.json is canonical, the override is per-call. Adopters needing to override fields outside this subset (`voice_attributes`, `prohibited_terms`, etc.) MUST publish a different brand.json and reference it via a different `domain` \u2014 the inline override is intentionally narrow to a small high-traffic subset.\n\n**Merge semantics (normative).** The merge is **field-level**, not whole-object replacement. Each field within `brand_kit_override` (`logo`, `colors`, `voice`, `tagline`) is evaluated independently \u2014 when a field is present on the override the override value applies; when a field is absent the brand.json value applies (or is absent if brand.json doesn't carry one either). For composite fields (`colors.primary`, `colors.secondary`, `colors.accent`), the merge is one level deeper: each color slot is evaluated independently \u2014 a producer can override `colors.primary` while still inheriting `colors.secondary` from brand.json. SDKs MUST NOT treat a present `brand_kit_override.colors` as wiping the brand.json `colors` block entirely; only the per-slot fields present in the override take precedence. Without this rule, a partial-override semantics would diverge across SDKs and produce inconsistent rendering for the same payload.").optional() }).strict().describe("Vendor that produced this value. Matches a `vendor_metrics[].vendor` declaration on the product."), "metric_id": z.string().regex(new RegExp("^[a-z][a-z0-9_]*$")).min(1).max(64).describe("Identifier for the metric within the vendor's vocabulary. Matches a `vendor_metrics[].metric_id` declaration on the product."), "value": z.number().describe("The reported value. Unit semantics are vendor-defined \u2014 see `unit` field below and the vendor's `brand.json` measurement-agent documentation."), "unit": z.string().describe("Unit of the value. Free-form to accommodate the heterogeneity of vendor metrics (e.g., `score`, `seconds`, `persons`, `gCO2e`, `USD`, `lift_percent`). When the value is monetary, use the ISO 4217 code (e.g., `USD`, `EUR`); for non-monetary, use whatever the vendor publishes. Optional on every row \u2014 the canonical unit lives at the vendor's measurement-agent metric definition (`brand.json` `agents[type='measurement']`). When sellers populate it inline they SHOULD match the vendor's published unit; buyers MAY resolve from the vendor's measurement agent when this field is absent.").optional(), "measurable_impressions": z.number().gte(0).describe("Number of impressions in this reporting period that the vendor was able to measure. Coverage denominator \u2014 buyers compute coverage rate as `measurable_impressions / impressions`. When absent, coverage is unspecified \u2014 buyers MUST NOT compute a coverage rate or assume full coverage. When the vendor measured zero impressions but is integrated, set to 0 explicitly. When the entry is omitted from `vendor_metric_values` entirely, the buyer infers no measurement happened (no integration). This pattern parallels `viewability.measurable_impressions` (`delivery-metrics.json#/properties/viewability`), which has handled vendor coverage in the IAS/DV/MRC ecosystem for over a decade \u2014 same convention: absence is unknown, not full. For channels where the atomic observation unit is a play or screen-second rather than an impression (DOOH, cinema, place-based), report `measurable_plays` or `measurable_play_seconds` instead \u2014 `impressions` there is itself a modelled figure (`plays \xD7 audience multiplier`), so `measurable_impressions / impressions` divides a measured count by a model output and has no interpretation.").optional(), "measurable_plays": z.number().gte(0).describe("Number of plays (loop plays / spots aired) in this reporting period that the vendor was able to measure. Coverage denominator for channels where a play, not an impression, is the atomic observation unit \u2014 DOOH, cinema, place-based audio. Buyers compute coverage as `measurable_plays / plays` (top-level `plays` on `delivery-metrics.json`). Same absence semantics as `measurable_impressions`: absent means coverage is unspecified and buyers MUST NOT compute a rate; 0 means the vendor is integrated but measured nothing. A row SHOULD carry exactly one coverage denominator \u2014 the one matching the unit the vendor actually observes.").optional(), "measurable_play_seconds": z.number().gte(0).describe("Play-seconds \u2014 seconds of creative playout summed across endpoints (screens, speakers, players) \u2014 in this reporting period that the vendor was able to measure. Medium-neutral on purpose: place-based audio has plays and duration but no screen. Coverage denominator when the vendor meters exposure duration rather than discrete plays. On screen networks buyers compute coverage as `measurable_play_seconds / dooh_metrics.screen_time_seconds`; on other place-based media, against the seller's reported playout seconds for the period. Same absence semantics as `measurable_impressions`.").optional(), "vendor_relationship": z.enum(["first_party", "affiliated", "third_party"]).describe("Optional echo of the product's `reporting_capabilities.vendor_metrics[].vendor_relationship` for this `(vendor, metric_id)`, so the delivery row is self-describing without joining back to the product (same reasoning as `viewability.vendor`). When present it MUST equal the declared value; buyers MAY resolve from the product declaration when absent. Absence on the row is *undeclared*, never `third_party`. A relationship disposition, not a trust ranking. Deliberately not a `qualifier` key: the relationship is constant across every row for a (seller, vendor) pair and does not partition rows, so it stays out of the `(vendor, metric_id, qualifier)` reconciliation join.").optional(), "qualifier": z.object({ "viewability_standard": z.enum(["mrc", "groupm"]).describe("Viewability measurement standard applied to determine whether an impression qualifies as viewable. These are materially different thresholds and should not be compared across standards.").optional(), "completion_source": z.enum(["seller_attested", "vendor_attested"]).describe("Trust-source disambiguator for `completion_rate` \u2014 *who* attested to the completion event, not *how* (methodology granularity is a separate dimension; future qualifier keys may add it if buyer demand surfaces). The two paths can yield materially different rates, particularly in SSAI environments where the player's view of completion may differ from a vendor's. Used as a `qualifier.completion_source` key on `committed_metrics`, `missing_metrics`, and package-level delivery values (`metric_values` or `vendor_metric_values`) to disambiguate which trust source the row represents. Edge cases: walled gardens where the seller is also the measurement vendor (YouTube, Spotify) collapse to `seller_attested` by trust-model logic \u2014 the same party served and counted. IAB-certified first-party podcast measurement (Podtrac, Triton on their own platforms; Art19 on its own platform) likewise collapses to `seller_attested`. The same vendor's offering on a third-party platform (Podtrac on a publisher who isn't Podtrac) is `vendor_attested`. The trust axis is *not* who runs the SDK \u2014 it's who is independent of the seller's revenue interest.").optional(), "attribution_methodology": z.enum(["deterministic_purchase", "probabilistic", "panel_based", "modeled"]).describe("How attribution between ad exposure and outcome events was computed. Used as a `qualifier.attribution_methodology` key on `committed_metrics`, `missing_metrics`, package-level delivery values (`metric_values` or `vendor_metric_values`), and `performance-feedback.metric` to disambiguate the same outcome metric reported under different methodologies \u2014 `conversion_value` measured deterministically (matched purchase IDs) is not the same number as `conversion_value` measured probabilistically (modeled match) and should never be summed across methodologies. The retail-media closed-loop pattern typically reports under `deterministic_purchase`; MMM and clean-room outputs typically report under `modeled` or `probabilistic`; panel-based measurement (Nielsen, comScore, Edison) reports under `panel_based`.").optional(), "attribution_window": z.object({ "interval": z.number().int().gte(1).describe("Number of time units. Must be 1 when unit is 'campaign'."), "unit": z.enum(["seconds", "minutes", "hours", "days", "campaign"]).describe("Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.") }).strict().describe("A time duration expressed as an interval and unit. Used for frequency cap windows, attribution windows, reach optimization windows, time budgets, and other time-based settings. When unit is 'campaign', interval must be 1 \u2014 the window spans the full campaign flight.").optional(), "lift_dimension": z.enum(["awareness", "consideration", "favorability", "purchase_intent", "ad_recall"]).describe("Brand-lift dimension disambiguator. Brand lift is multidimensional in production \u2014 Kantar, Upwave, Cint, DoubleVerify, and similar vendors report awareness, consideration, favorability, purchase intent, and ad recall as separate measurements with their own sample sizes and confidence intervals. Used as a `qualifier.lift_dimension` key on `committed_metrics`, `missing_metrics`, package-level delivery values (`metric_values` or `vendor_metric_values`), and `performance-feedback.metric` to disambiguate which dimension of `brand_lift` a row represents. Two `brand_lift` rows under different lift dimensions represent different surveyed outcomes and must not be combined into a single number.").optional() }).strict().describe("Optional qualifier disambiguating this row from sibling rows for the same (vendor, metric_id) \u2014 e.g., the same vendor outcome metric reported under 7-day and 30-day attribution windows. Same closed key set as `committed-metric`. When the matching `committed_metrics` entry carries a qualifier, this row MUST carry the identical qualifier so reconciliation joins on `(vendor, metric_id, qualifier)`.").optional(), "breakdown": z.record(z.string(), z.any()).describe("Optional structured payload for vendor metrics that don't fit a single scalar \u2014 panel demographic breakouts, co-view audience composition, incremental reach + frequency + lift decompositions. Free-form; the keys and value semantics are defined by the vendor (see the vendor's `brand.json` measurement-agent docs). Buyers MUST treat this object as opaque without consulting the vendor's documentation. Vendors place any fields beyond the standard envelope (e.g., confidence intervals, panel sizes) inside this object rather than at the top level.").optional() }).strict().describe("A reported value for a vendor-defined metric, emitted in `delivery-metrics.json` `vendor_metric_values` parallel to standard scalars. Identifies the vendor (BrandRef), the metric name within that vendor's vocabulary, the value, and the coverage denominator (`measurable_impressions`) \u2014 vendor measurement is rarely 100% coverage. Channels whose atomic observation unit is a play or screen-second rather than an impression (DOOH, cinema, place-based) use the sibling denominators `measurable_plays` / `measurable_play_seconds`. `vendor_relationship` optionally echoes the seller's declared relationship to the vendor (`first_party` / `affiliated` / `third_party`) so a row is self-describing without a discovery hop. The `breakdown` slot accommodates vendors that emit structured payloads beyond a single scalar (panel demographic breakouts, co-view ratios, incremental decompositions). To add fields beyond what this schema defines, vendors place them inside `breakdown` rather than alongside the standard envelope.")).describe("Reported values for vendor-defined metrics that the product's `reporting_capabilities.vendor_metrics` declared. Each entry carries the vendor (BrandRef), the metric identifier within the vendor's vocabulary, the value, optional unit, and `measurable_impressions` as the coverage denominator \u2014 vendor measurement is rarely 100% of delivered impressions, since vendors only score impressions where their SDK fires or their panel matches. When a declared vendor metric is omitted from this array, buyers infer no measurement happened (no integration). One row per `(vendor.domain, vendor.brand_id, metric_id, qualifier)` per reporting period \u2014 the same vendor metric MAY appear in multiple rows only when each carries a distinct qualifier (e.g., 7-day and 30-day attribution windows); sellers MUST de-duplicate before emission and MUST NOT emit two rows with the same tuple; buyers MAY treat duplicate rows as a seller-side conformance bug. The structured `vendor_metric_values` array is the recommended path for vendor metrics; `additionalProperties: true` on this parent object is preserved so existing free-form vendor emissions remain conformant during migration.").optional() }).catchall(z.any()).and(z.union([z.any().refine((value) => !z.object({ "reach": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough().safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.object({ "reach": z.any().refine((value) => value !== void 0, "Required"), "reach_unit": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("Standard delivery metrics that can be reported at media buy, package, or creative level"), z.object({ "package_id": z.string().optional(), "pacing_index": z.number().gte(0).describe("Subordinate package pacing diagnostic. May be absent for seller-optimized packages without package-level pacing.").optional(), "pricing_model": z.enum(["cpm", "vcpm", "cpc", "cpcv", "cpv", "cpp", "cpa", "revenue_share", "flat_rate", "time"]).describe("Supported pricing models for advertising products").optional(), "rate": z.number().gte(0).optional(), "currency": z.string().regex(new RegExp("^[A-Z]{3}$")).describe("ISO 4217 currency code for this package's spend and currency-denominated pricing rate. The rate for revenue_share is a dimensionless commission fraction, but attributed monetary values still use this currency. When the enclosing media_buy_deliveries[].currency is present, this value MUST equal it. For AdCP-authored buys both values MUST equal the media-buy currency. A different package currency is permitted only for a legacy or externally created mixed-currency buy whose row currency and row-level monetary totals are omitted. When both row and deprecated response-wide currency are absent, a package with monetary values MUST include this field. AdCP does not perform currency conversion.").optional(), "delivery_status": z.enum(["delivering", "not_delivering", "completed", "budget_exhausted", "flight_ended", "goal_met"]).describe("System-reported operational state of this package. Reflects actual delivery state independent of buyer pause control. 'not_delivering' means zero impressions were recorded for the entire reporting_period while the package was in-flight. Sellers SHOULD only report 'not_delivering' once the package's data is_final for the period \u2014 a provisional (is_final: false) zero may still be measurement catching up, not genuine non-delivery.").optional(), "paused": z.boolean().optional(), "is_final": z.boolean().optional(), "finalized_at": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "measurement_window": z.string().max(50).optional(), "supersedes_window": z.string().max(50).optional(), "metric_values": z.array(z.intersection(z.object({ "scope": z.literal("standard").describe("Standard metric from the closed `available-metric.json` enum."), "metric_id": z.intersection(z.enum(["impressions", "spend", "clicks", "ctr", "views", "completed_views", "completion_rate", "conversions", "conversion_value", "commissionable_value", "roas", "cost_per_acquisition", "new_to_brand_rate", "leads", "reach", "frequency", "grps", "engagements", "engagement_rate", "follows", "saves", "profile_visits", "viewability", "viewable_rate", "viewable_impressions", "measurable_impressions", "viewed_seconds", "viewed_seconds_percentiles", "viewed_seconds_histogram", "quartile_data", "quartile_25", "quartile_50", "quartile_75", "quartile_100", "time_based_views", "dooh_metrics", "ooh_metrics", "cost_per_click", "cost_per_completed_view", "cpm", "downloads", "units_sold", "new_to_brand_units", "plays", "incremental_sales_lift", "brand_lift", "foot_traffic", "conversion_lift", "brand_search_lift"]).describe("Standard delivery and performance metrics available for reporting. Most values name flat numeric fields of `core/delivery-metrics.json`. Leaf identities address a single numeric value nested inside an object-shaped metric so it can be declared, committed, aggregated, and sorted individually: `quartile_25`/`quartile_50`/`quartile_75`/`quartile_100` resolve to `quartile_data.q1_views`\u2013`q4_views`, and `viewable_rate`/`viewable_impressions`/`measurable_impressions`/`viewed_seconds` resolve to the same-named fields of `viewability`. Structured nested identities `viewed_seconds_percentiles` and `viewed_seconds_histogram` make the corresponding optional distribution carriers discoverable, committable, and requestable, but not aggregatable or sortable. The nested object or array remains the canonical carrier \u2014 nested identities never introduce duplicate flat response fields. Container tokens such as `viewability`, `quartile_data`, `dooh_metrics`, and `time_based_views` declare their documented nested surface. **Container subsumption applies only to numeric leaves**: `viewability` subsumes `viewable_rate`, `viewable_impressions`, `measurable_impressions`, and `viewed_seconds`; `quartile_data` subsumes `quartile_25`, `quartile_50`, `quartile_75`, and `quartile_100`. This rule applies to capability declaration, `required_metrics` filtering, format `reported_metrics` intersection, and `requested_metrics` selection. Optional structured identities MUST be declared explicitly: `viewability` alone does not satisfy `viewed_seconds_percentiles` or `viewed_seconds_histogram`. Requesting any nested identity selects its canonical carrier in the response. A nested identity declaration does not imply sibling values or the carrier's non-metric fields."), z.any().refine((value) => !z.enum(["viewability", "viewed_seconds_percentiles", "viewed_seconds_histogram", "quartile_data", "time_based_views", "dooh_metrics"]).safeParse(value).success, "Invalid input: Should NOT be valid against schema")).describe("Identifier for a scalar standard metric. Container tokens and structured distribution identities are committed and selected through their canonical carriers, not represented as numeric aggregate rows."), "qualifier": z.object({ "viewability_standard": z.enum(["mrc", "groupm"]).describe("Viewability standard under which this row was measured. MRC and GroupM define materially different thresholds; never sum across standards.").optional(), "completion_source": z.enum(["seller_attested", "vendor_attested"]).describe("Source of `completion_rate` attestation for this row \u2014 `seller_attested` from player/ad server, `vendor_attested` from a third-party measurement vendor. The two paths can yield different rates; never sum across sources.").optional(), "attribution_methodology": z.enum(["deterministic_purchase", "probabilistic", "panel_based", "modeled"]).describe("Attribution methodology under which this outcome row was computed (`deterministic_purchase`, `probabilistic`, `panel_based`, `modeled`). Outcome metrics measured under different methodologies represent materially different numbers; never sum across methodologies.").optional(), "attribution_window": z.object({ "interval": z.number().int().gte(1).describe("Number of time units. Must be 1 when unit is 'campaign'."), "unit": z.enum(["seconds", "minutes", "hours", "days", "campaign"]).describe("Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.") }).strict().describe("Attribution window for this outcome row. Object-valued duration (`{interval, unit}`), not a shorthand string. Outcome metrics measured over different windows represent the same metric over different time periods; the partition keeps them as separate rows so buyers don't accidentally aggregate.").optional(), "lift_dimension": z.enum(["awareness", "consideration", "favorability", "purchase_intent", "ad_recall"]).describe("Brand-lift dimension this row represents (awareness, consideration, favorability, purchase intent, or ad recall). Required when `metric_id` is `brand_lift`. Each dimension is a separate surveyed outcome with its own sample size and confidence interval; never sum across dimensions.").optional() }).strict().describe("Qualifier keys disambiguating this row from sibling rows under the same `metric_id`. Symmetric with `committed_metrics.qualifier` today; expected to diverge in future minors as transparency disclosures buyers don't commit to ship delivery-only. Closed (`additionalProperties: false`) \u2014 new qualifier keys ship explicitly.").optional(), "value": z.number().describe("Aggregated metric value for this `(metric_id, qualifier)` partition. Heterogeneous by `metric_id` \u2014 rate metrics (`viewable_rate`, `completion_rate`) are 0.0\u20131.0; cost-per metrics (`cost_per_acquisition`, `cost_per_completed_view`) are currency amounts; count metrics (`impressions`, `clicks`) are non-negative integers as numbers; ratio metrics (`roas`) are non-negative numbers. Buyer agents MUST inspect `metric_id` before doing arithmetic \u2014 same dispatch convention as `committed_metrics`."), "measurable_impressions": z.number().gte(0).describe("Coverage denominator for verification metrics (e.g., `viewable_rate`). Buyers compute coverage as `measurable_impressions / impressions` from the partition.").optional(), "viewable_impressions": z.number().gte(0).describe("Component for `viewable_rate` (numerator).").optional(), "impressions": z.number().gte(0).describe("Component for rate metrics whose denominator is total impressions (e.g., `completion_rate`, `engagement_rate`).").optional(), "completed_views": z.number().gte(0).describe("Component for `completion_rate` (numerator).").optional(), "spend": z.number().gte(0).describe("Component for cost-per metrics (denominator-ish; the cost half of the ratio).").optional(), "conversions": z.number().gte(0).describe("Component for `cost_per_acquisition` and ROAS-family metrics.").optional(), "conversion_value": z.number().gte(0).describe("Component for `roas` (numerator).").optional(), "clicks": z.number().gte(0).describe("Component for `cost_per_click` and click-rate metrics.").optional() }).strict().and(z.intersection(z.intersection(z.union([z.any().refine((value) => !z.object({ "metric_id": z.literal("viewable_rate").optional() }).safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.intersection(z.object({ "metric_id": z.literal("viewable_rate").optional() }), z.object({ "measurable_impressions": z.any().refine((value) => value !== void 0, "Required"), "viewable_impressions": z.any().refine((value) => value !== void 0, "Required") }).passthrough())]), z.union([z.any().refine((value) => !z.object({ "metric_id": z.literal("completion_rate").optional() }).safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.intersection(z.object({ "metric_id": z.literal("completion_rate").optional() }), z.object({ "impressions": z.any().refine((value) => value !== void 0, "Required"), "completed_views": z.any().refine((value) => value !== void 0, "Required") }).passthrough())])), z.intersection(z.union([z.any().refine((value) => !z.object({ "metric_id": z.literal("cost_per_acquisition").optional() }).safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.intersection(z.object({ "metric_id": z.literal("cost_per_acquisition").optional() }), z.object({ "spend": z.any().refine((value) => value !== void 0, "Required"), "conversions": z.any().refine((value) => value !== void 0, "Required") }).passthrough())]), z.union([z.any().refine((value) => !z.object({ "metric_id": z.literal("roas").optional() }).safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.intersection(z.object({ "metric_id": z.literal("roas").optional() }), z.object({ "spend": z.any().refine((value) => value !== void 0, "Required"), "conversion_value": z.any().refine((value) => value !== void 0, "Required") }).passthrough())])))), z.object({ "qualifier": z.any().refine((value) => Object.keys(value).length >= 1, "Object must contain at least 1 property") })).describe("A qualified standard delivery value reported at package grain. The qualifier is required and must be non-empty; unqualified spend remains on the package's flat spend field.")).describe("Qualified standard delivery values for this package. Each entry is the delivered counterpart to a standard-scope package.committed_metrics or by_package[].missing_metrics row, using the same atomic key (scope, metric_id, qualifier). Sellers report one row per full qualifier set at package grain; when a metric appears here, its flat scalar counterpart on the package MUST be omitted to avoid two sources of truth. Vendor-scope values continue to use vendor_metric_values. Buyers reconcile rows directly and perform any compatible cross-package aggregation themselves.").optional() }).catchall(z.any()))).describe("Metrics broken down by package.") }).catchall(z.any()).and(z.union([z.any().refine((value) => !z.object({ "currency": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough().safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.intersection(z.object({ "currency": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "totals": z.object({ "spend": z.any().refine((value) => value !== void 0, "Required") }).passthrough().optional() }))]).describe("Must also satisfy at least one of these alternatives."))).describe("Delivery rows for one or more media buys included in this notification."), "errors": z.array(z.object({ "code": z.string().min(1).max(64).describe("Error code for programmatic handling. The error-code vocabulary is open: `error.code` is wire-typed `string` (not a closed enum), the standard codes published in `enums/error-code.json` are documentary, and senders MAY emit codes outside that set (platform-specific codes, or codes introduced in a later AdCP version). Receivers MUST decode unknown codes \u2014 treat the response as well-formed, read `error.recovery` for the recovery classification, and fall back to `transient` when `recovery` is absent. See `error-handling.mdx#forward-compatible-decoding-normative` for the full forward-compat contract \u2014 this rule is what lets future maintenance lines ship new codes additively."), "message": z.string().describe("Human-readable error message"), "buyer_reason": z.object({ "code": z.string().min(1).max(64).describe("Machine-readable buyer-actionable reason from the standard `enums/error-code.json` vocabulary or a producer-specific extension. Extensions MUST follow the standard `X_{VENDOR}_{CODE}` naming rule. The wire field is open for forward compatibility. Receivers MUST accept unknown values and use the enclosing `error.recovery` plus this object's `message` as the fallback."), "message": z.string().min(1).describe("Buyer-safe explanation of the actionable failure. MUST NOT expose vendor identifiers, ad-server type names, internal object names, internal IDs, stack traces, or other producer-private implementation details.") }).catchall(z.any()).describe("Optional buyer-actionable classification of the failure. Use this when the enclosing error code or message is too coarse or contains producer-internal context that must not cross the buyer trust boundary. `code` reuses the comprehensive standard vocabulary and recovery classifications published in `enums/error-code.json`, including policy, governance, account, commercial, inventory, and creative failures. The wire field remains open for forward compatibility. `message` MUST be safe to show to the buyer and MUST NOT contain vendor identifiers, ad-server type names, internal object names, internal IDs, stack traces, or other producer-private implementation details. When present, the enclosing `error.recovery` MUST classify the buyer-actionable reason. If both the enclosing code and buyer reason are registered, their standard recovery classifications MUST agree with each other and with `error.recovery`; sellers MUST choose the closest compatible enclosing code rather than retain a conflicting upstream transport wrapper. One buyer_reason classifies one error object. If a rejection contains independently actionable failures from different classes, sellers MUST emit separate error objects or omit buyer_reason rather than select a misleading single class.").optional(), "field": z.string().describe("Field path associated with the error in JSONPath-lite format (e.g., 'packages[0].targeting'). When `issues[]` is also present, sellers MUST set this to `issues[0].pointer` translated from RFC 6901 to JSONPath-lite (e.g., '/packages/0/targeting' \u2192 'packages[0].targeting') so pre-3.1 consumers reading `field` only get deterministic behavior. Will be deprecated in a future major version in favor of `issues[].pointer`.").optional(), "suggestion": z.string().describe("Suggested fix for the error").optional(), "retry_after": z.number().gte(1).lte(3600).describe("Seconds to wait before retrying the operation. AdCP 3.2 producers MUST emit an integer from 1 through 3600. The 3.x schema continues to accept finite fractional values for backward compatibility with earlier producers; consumers receiving one MUST round up to the next whole second before clamping so the retry is never scheduled earlier than intended. Non-finite values are treated as absent.").optional(), "issues": z.array(z.object({ "pointer": z.string().describe("RFC 6901 JSON Pointer to the offending field in the request payload (e.g., '/packages/0/targeting/geo_countries/2'). Format chosen to match Ajv's native validation output (`instancePath`); standardized and unambiguous on keys containing `/` or `~`. NOTE: this differs from the legacy top-level `field` which uses JSONPath-lite (`packages[0].targeting.geo_countries[2]`). When sellers populate `field` from `issues[0].pointer` for backward compatibility (see `field` description), they MUST translate the format \u2014 `/packages/0/x` \u2192 `packages[0].x`. Future major versions will deprecate `field` in favor of `issues[].pointer`."), "message": z.string().describe("Human-readable description of why this specific field was rejected."), "keyword": z.string().describe("Schema keyword that rejected the payload, drawn from the JSON Schema vocabulary (e.g., 'required', 'type', 'format', 'enum', 'pattern', 'minimum', 'maxLength'). Matches the keyword names emitted by JSON Schema validators (Ajv, jsonschema, etc.) so agents can pattern-match on rejection class without parsing message text. Implementers SHOULD use the validator's native keyword name; do not invent custom values here."), "schemaPath": z.string().describe("Optional. JSON Schema tree path of the rejecting keyword (e.g. '#/properties/packages/items/oneOf/1'). 3.1+ consumers SHOULD prefer `schema_id`; `schemaPath` is retained for 3.0.x compatibility (renamed to `schema_path` in a future major). See error-handling.mdx for the validator-internals production-emit rules.").optional(), "schema_id": z.string().describe("Optional. `$id` of the rejecting (sub-)schema (e.g. `/schemas/3.1.0/core/activation-key.json`). MUST resolve to a `$id` published in the spec at the version the seller advertises via `get_adcp_capabilities` \u2014 either a deep sub-schema (the typical case) or the response-root `$id` (the bundled-tree fallback for tools served from bundles built before #3868). Sellers MUST NOT emit when the rejection occurred against a private extension, server-only sub-schema, or pre-release element \u2014 the public-spec replay rationale only holds when the rejecting element is reachable from the public bundle. Sellers populating `schemaPath` SHOULD also populate `schema_id` when they have it so 3.1+ readers don't get strictly less than 3.0.x readers. See error-handling.mdx for resolution guidance and the bundled-tree caveat.").optional() }).catchall(z.any())).describe("Structured list of validation failures. Primary use is `VALIDATION_ERROR`, where multi-field rejections are common and `field` (singular) cannot carry the full pointer map. MAY appear on other error codes that reject multiple fields at once. When `issues` is present, sellers MUST also populate `field` from `issues[0]` for backward compatibility with pre-3.1 consumers that read `field` only \u2014 translating the RFC 6901 `pointer` format to the JSONPath-lite format `field` uses (e.g., `/packages/0/targeting` \u2192 `packages[0].targeting`). MUST (not SHOULD) so consumers reading `field` get deterministic behavior across sellers \u2014 the cost is one line of dual-write per seller; the cost of SHOULD is a long tail of seller-A-vs-seller-B inconsistency. Future major versions will deprecate `field` in favor of `issues[].pointer`.").optional(), "details": z.record(z.string(), z.any()).describe('Additional task-specific error details. Sellers MAY mirror `issues[]` here as `details.issues` for backward compatibility with pre-3.1 consumers reading from `details`; new consumers SHOULD prefer the top-level `issues` field.\n\n**Canonical rejection-set shape (3.1+).** When the error reports a rejected value against a closed set of accepted values (e.g., enum mismatch, unsupported pricing option, invalid signal id), sellers SHOULD use the canonical key `accepted_values: <array>` under `details` rather than seller-specific variants observed in the wild (`available`, `allowed`, `accepted_values` at the error root, etc.). The canonical shape:\n\n```json\n{\n "code": "INVALID_PRICING_OPTION",\n "message": "Pricing option not found: po_prism_abandoner_cpm",\n "field": "pricing_option_id",\n "details": {\n "rejected_value": "po_prism_abandoner_cpm",\n "accepted_values": ["po_prism_cart_cpm", "po_prism_view_cpm"]\n }\n}\n```\n\n- `rejected_value` (optional): the offending value the buyer supplied, echoed for buyer-side diagnostic clarity (especially when the offending field is nested or transformed before validation).\n- `accepted_values` (optional): the closed set the seller would have accepted at this field on this call. Sellers MUST NOT enumerate the full ecosystem-wide accepted set if it differs from what\'s accepted for *this caller in this context* (account, brand, scope) \u2014 leaking ecosystem-wide accepted sets to a per-caller rejection turns the error into an enumeration oracle.\n\nThis is **SHOULD-level guidance**, not MUST: `details` remains `additionalProperties: true` and pre-3.1 sellers using `available` / `allowed` / `accepted_values` at the error root remain conformant. The canonical shape lets buyer-side diagnostic tooling (SDK runner hints, dashboards, error classifiers) reliably surface the accepted-set without per-seller pattern matching. SDKs SHOULD accept any of the legacy variants and normalize on read; the canonical shape is what new sellers and 3.1+ adopters should emit going forward.').optional(), "recovery": z.enum(["transient", "correctable", "terminal"]).describe("Agent recovery classification. transient: retry after delay (rate limit, service unavailable, timeout). correctable: fix the request and resend (invalid field, budget too low, creative rejected). terminal: requires human action (account suspended, payment required, account not found). AdCP 3.2 producers MUST populate `recovery` on every error; 3.1 producers SHOULD populate it. The shared 3.x schema intentionally does not add `recovery` to `required` so retained and live errors from earlier 3.x producers remain decodable. When `buyer_reason` is present, `recovery` is required and MUST classify that buyer-actionable reason. If the enclosing code and buyer reason are both registered, their standard recovery classifications MUST agree with each other and with this field. A receiver that does not recognize `error.code` (a newer code, or a platform-specific code) MUST still be able to classify the error from `recovery`. When a legacy error omits `recovery`, receivers use the registered classification for a known code and fall back to `transient` for an unknown code, subject to the bounded retry budget. The `enumMetadata.recovery` block in `enums/error-code.json` is the documentary mirror for known top-level and buyer-reason codes; `error.recovery` on the wire is authoritative when present.").optional(), "source": z.enum(["producer", "sdk"]).describe("Who emitted this error entry. `producer` (default when absent): emitted by the response's authoring agent (the seller for `get_products`, the creative agent for `build_creative`, etc.). `sdk`: augmented by a consuming SDK that detected a non-fatal advisory condition on consumption (e.g., `FORMAT_PROJECTION_FAILED` when the buyer SDK couldn't project a v1 format to a canonical, or `FORMAT_DECLARATION_DIVERGENT` when the SDK detected a producer bug on read). SDK-augmented entries SHOULD also set `sdk_id` so downstream consumers can identify which intermediate processor inserted the entry.\n\n**Multi-hop propagation (normative).** AdCP is a federated agent network \u2014 responses commonly traverse multiple SDKs (e.g., sales agent \u2192 interchange \u2192 DSP \u2192 buyer). When an SDK augments `errors[]` with a consumption-detected entry, the augmented response carries the entry forward to subsequent hops. Each hop that detects the same condition independently SHOULD deduplicate by `(code, field)` rather than re-emit; the existing entry's `sdk_id` identifies which earlier processor saw it first. Producer entries (those without `source: \"sdk\"`) are authoritative for what the response's authoring agent self-detected; SDK entries are observations made on top.\n\n**Replay/audit safety.** Persisted or replayed responses carry `source` and `sdk_id` so the audit trail can distinguish seller-emitted entries from SDK-augmented ones. Without `source`, a downstream consumer can't tell whether a code came from the seller or an intermediate SDK, which corrupts attribution.").optional(), "sdk_id": z.string().describe('Optional identifier for the SDK that augmented this error entry. Format: `<sdk_package_name>@<version>` (e.g., `@adcontextprotocol/adcp@7.3.0`, `adcontextprotocol-adcp-python@1.2.0`). MUST be set when `source: "sdk"`; MUST be absent when `source: "producer"` or absent. Lets downstream consumers identify which intermediate processor inserted the entry, useful for debugging cross-SDK divergence (e.g., one SDK detects a projection failure that another SDK\'s registry version doesn\'t).').optional() }).catchall(z.any()).and(z.union([z.any().refine((value) => !z.object({ "buyer_reason": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough().safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.object({ "buyer_reason": z.any().refine((value) => value !== void 0, "Required"), "recovery": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("Standard error structure for task-specific errors and warnings")).describe("Task-specific delivery errors or warnings.").optional(), "sandbox": z.boolean().optional(), "context": z.record(z.string(), z.any()).describe("Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.").optional(), "ext": z.record(z.string(), z.any()).describe("Extension object for platform-specific, vendor-namespaced parameters. Extensions are always optional and must be namespaced under a vendor/platform key (e.g., ext.gam, ext.roku). Used for custom capabilities, partner-specific configuration, and features being proposed for standardization.").optional() }).catchall(z.any()).describe("Payload-only delivery report result carried under core/mcp-webhook-payload.json result for task_type media_buy_delivery. This is not a top-level webhook POST body and does not include protocol envelope fields such as task_id or status."))();
3440
3422
  const BuildCreativeAsyncWorkingSchema = /* @__PURE__ */ (() => z.object({
3441
3423
  percentage: z.number().optional(),
3442
3424
  current_step: z.string().optional(),
@@ -5065,7 +5047,7 @@ const PriceSchema = /* @__PURE__ */ (() => z.object({
5065
5047
  const VASTAssetSchema = /* @__PURE__ */ (() => z.object({
5066
5048
  asset_type: z.literal("vast"),
5067
5049
  vast_version: VASTVersionSchema.optional(),
5068
- macro_declarations: z.array(MacroDeclarationSchema).optional(),
5050
+ macro_declarations: z.array(MacroDeclarationSchema).min(1).optional(),
5069
5051
  vpaid_enabled: z.boolean().optional(),
5070
5052
  duration_ms: z.number().int().gte(0).optional(),
5071
5053
  tracking_events: z.array(VASTTrackingEventSchema).optional(),
@@ -5079,7 +5061,7 @@ const VASTAssetSchema = /* @__PURE__ */ (() => z.object({
5079
5061
  location: z.object({
5080
5062
  field: z.literal("url").optional()
5081
5063
  }).passthrough().optional()
5082
- }).passthrough()).optional()
5064
+ }).passthrough()).min(1).optional()
5083
5065
  }).passthrough(), z.object({
5084
5066
  delivery_type: z.literal("inline"),
5085
5067
  content: z.string(),
@@ -5087,7 +5069,7 @@ const VASTAssetSchema = /* @__PURE__ */ (() => z.object({
5087
5069
  location: z.object({
5088
5070
  field: z.literal("content").optional()
5089
5071
  }).passthrough().optional()
5090
- }).passthrough()).optional()
5072
+ }).passthrough()).min(1).optional()
5091
5073
  }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")))();
5092
5074
  const AdCPAssetGroupVocabularyRegistrySchema = /* @__PURE__ */ (() => z.object({}).passthrough())();
5093
5075
  const AttestationIssuerSchema = /* @__PURE__ */ (() => z.union([AttestationBrandIssuerSchema, AttestationAgentIssuerSchema, AttestationOriginIssuerSchema]))();
@@ -8467,7 +8449,7 @@ const TagURLSchema = /* @__PURE__ */ (() => z.object({
8467
8449
  location: z.object({
8468
8450
  field: z.literal("url").optional()
8469
8451
  }).passthrough().optional()
8470
- }).passthrough())).optional(),
8452
+ }).passthrough())).min(1).optional(),
8471
8453
  provenance: ProvenanceSchema.optional(),
8472
8454
  delivery_type: z.literal("tag_url"),
8473
8455
  url: MacroBearingURL1Schema
@@ -8478,7 +8460,7 @@ const PairedRedirectSchema = /* @__PURE__ */ (() => z.object({
8478
8460
  location: z.object({
8479
8461
  field: z.union([z.literal("ad_request_url"), z.literal("clickthrough_url")]).optional()
8480
8462
  }).passthrough().optional()
8481
- }).passthrough())).optional(),
8463
+ }).passthrough())).min(1).optional(),
8482
8464
  provenance: ProvenanceSchema.optional(),
8483
8465
  delivery_type: z.literal("paired_redirect"),
8484
8466
  ad_request_url: MacroBearingURL2Schema,
@@ -8492,7 +8474,7 @@ const URLAsset1Schema = /* @__PURE__ */ (() => z.object({
8492
8474
  location: z.object({
8493
8475
  field: z.literal("url").optional()
8494
8476
  }).passthrough().optional()
8495
- }).passthrough())).optional(),
8477
+ }).passthrough())).min(1).optional(),
8496
8478
  description: z.string().optional(),
8497
8479
  state_id: z.string().optional(),
8498
8480
  provenance: ProvenanceSchema.optional()
@@ -11784,7 +11766,7 @@ const SelectedPlacementsSchema = /* @__PURE__ */ (() => z.object({
11784
11766
  }).passthrough())();
11785
11767
  const DisplayTagAssetSchema = /* @__PURE__ */ (() => z.object({
11786
11768
  asset_type: z.literal("display_tag"),
11787
- macro_declarations: z.array(MacroDeclarationSchema).optional(),
11769
+ macro_declarations: z.array(MacroDeclarationSchema).min(1).optional(),
11788
11770
  provenance: ProvenanceSchema.optional()
11789
11771
  }).passthrough().and(z.union([TagURLSchema, InlineMarkupSchema, PairedRedirectSchema]).describe("Must also satisfy at least one of these alternatives.")))();
11790
11772
  const DAASTAssetSchema = /* @__PURE__ */ (() => z.object({
@@ -11795,7 +11777,7 @@ const DAASTAssetSchema = /* @__PURE__ */ (() => z.object({
11795
11777
  companion_ads: z.boolean().optional(),
11796
11778
  transcript_url: z.string().refine(adcpJsonSchemaUri, "Invalid URI").optional(),
11797
11779
  provenance: ProvenanceSchema.optional(),
11798
- macro_declarations: z.array(MacroDeclarationSchema).optional()
11780
+ macro_declarations: z.array(MacroDeclarationSchema).min(1).optional()
11799
11781
  }).passthrough().and(z.union([z.object({
11800
11782
  delivery_type: z.literal("url"),
11801
11783
  url: MacroBearingURL5Schema,
@@ -11803,7 +11785,7 @@ const DAASTAssetSchema = /* @__PURE__ */ (() => z.object({
11803
11785
  location: z.object({
11804
11786
  field: z.literal("url").optional()
11805
11787
  }).passthrough().optional()
11806
- }).passthrough()).optional()
11788
+ }).passthrough()).min(1).optional()
11807
11789
  }).passthrough(), z.object({
11808
11790
  delivery_type: z.literal("inline"),
11809
11791
  content: z.string(),
@@ -11811,7 +11793,7 @@ const DAASTAssetSchema = /* @__PURE__ */ (() => z.object({
11811
11793
  location: z.object({
11812
11794
  field: z.literal("content").optional()
11813
11795
  }).passthrough().optional()
11814
- }).passthrough()).optional()
11796
+ }).passthrough()).min(1).optional()
11815
11797
  }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")))();
11816
11798
  const CardAssetSchema = /* @__PURE__ */ (() => z.object({
11817
11799
  asset_type: z.literal("card"),
@@ -11832,7 +11814,7 @@ const PixelTrackerAssetSchema = /* @__PURE__ */ (() => z.object({}).passthrough(
11832
11814
  location: z.object({
11833
11815
  field: z.literal("url").optional()
11834
11816
  }).passthrough().optional()
11835
- }).passthrough())).optional(),
11817
+ }).passthrough())).min(1).optional(),
11836
11818
  custom_event_name: z.string().optional(),
11837
11819
  provenance: ProvenanceSchema.optional()
11838
11820
  }).passthrough()))();
@@ -11844,7 +11826,7 @@ const VASTTrackerAssetSchema = /* @__PURE__ */ (() => z.object({}).passthrough()
11844
11826
  location: z.object({
11845
11827
  field: z.literal("url").optional()
11846
11828
  }).passthrough().optional()
11847
- }).passthrough())).optional(),
11829
+ }).passthrough())).min(1).optional(),
11848
11830
  offset: z.string().regex(new RegExp("^(\\d{2}:[0-5]\\d:[0-5]\\d(\\.\\d{3})?|(100|\\d{1,2})%)$")).optional(),
11849
11831
  target: z.union([z.literal("linear"), z.literal("non_linear"), z.literal("companion")]).optional(),
11850
11832
  provenance: ProvenanceSchema.optional()
@@ -11857,7 +11839,7 @@ const DAASTTrackerAssetSchema = /* @__PURE__ */ (() => z.object({}).passthrough(
11857
11839
  location: z.object({
11858
11840
  field: z.literal("url").optional()
11859
11841
  }).passthrough().optional()
11860
- }).passthrough())).optional(),
11842
+ }).passthrough())).min(1).optional(),
11861
11843
  offset: z.string().regex(new RegExp("^(\\d{2}:[0-5]\\d:[0-5]\\d(\\.\\d{3})?|(100|\\d{1,2})%)$")).optional(),
11862
11844
  target: z.union([z.literal("linear"), z.literal("companion")]).optional(),
11863
11845
  provenance: ProvenanceSchema.optional()
@@ -12291,7 +12273,8 @@ const CanonicalProductActionSchema = /* @__PURE__ */ (() => z.object({
12291
12273
  constraints: MediaBuyChangeTermConstraintsSchema.optional(),
12292
12274
  terms_ref: z.string().optional()
12293
12275
  }).passthrough())();
12294
- const AssetVariantSchema = /* @__PURE__ */ (() => z.union([ImageAssetSchema, VideoAssetSchema, AudioAssetSchema, VASTAssetSchema, DisplayTagAssetSchema, TextAssetSchema, URLAssetSchema, HTMLAssetSchema, JavaScriptAssetSchema, ZipAssetSchema, WebhookAssetSchema, CSSAssetSchema, DAASTAssetSchema, MarkdownAssetSchema, BriefAssetSchema, CatalogAssetSchema, PublishedPostAssetSchema, CardAssetSchema, PixelTrackerAssetSchema, VASTTrackerAssetSchema, DAASTTrackerAssetSchema]))();
12276
+ const AssetVariantSchemaOptionsSource = /* @__PURE__ */ (() => z.union([ImageAssetSchema, VideoAssetSchema, AudioAssetSchema, VASTAssetSchema, DisplayTagAssetSchema, TextAssetSchema, URLAssetSchema, HTMLAssetSchema, JavaScriptAssetSchema, ZipAssetSchema, WebhookAssetSchema, CSSAssetSchema, DAASTAssetSchema, MarkdownAssetSchema, BriefAssetSchema, CatalogAssetSchema, PublishedPostAssetSchema, CardAssetSchema, PixelTrackerAssetSchema, VASTTrackerAssetSchema, DAASTTrackerAssetSchema]))();
12277
+ const AssetVariantSchema = /* @__PURE__ */ (() => AssetVariantSchemaOptionsSource)();
12295
12278
  const TargetingOverlaySchema = /* @__PURE__ */ (() => (() => {
12296
12279
  const objectSchema = z.object({ "geo_countries": z.array(z.string().regex(new RegExp("^[A-Z]{2}$"))).min(1).describe("Restrict delivery to specific countries. ISO 3166-1 alpha-2 codes (e.g., 'US', 'GB', 'DE').").optional(), "geo_countries_exclude": z.array(z.string().regex(new RegExp("^[A-Z]{2}$"))).min(1).describe("Exclude specific countries from delivery. ISO 3166-1 alpha-2 codes (e.g., 'US', 'GB', 'DE').").optional(), "geo_regions": z.array(z.string().regex(new RegExp("^[A-Z]{2}-[A-Z0-9]{1,3}$"))).min(1).describe("Restrict delivery to exact canonical ISO 3166-2 subdivisions (states, provinces, regions, departments, or other subdivision categories). Unknown identifiers are invalid. At create or update, sellers MUST reject unsupported identifiers and MUST NOT silently widen, drop, or partially apply the list. During get_products, a seller may instead return a sparse, buyer-reviewable targeting_resolution modification for a valid but unsupported requested outcome. Exact internal translation preserves accepted identifiers in package readback.").optional(), "geo_regions_exclude": z.array(z.string().regex(new RegExp("^[A-Z]{2}-[A-Z0-9]{1,3}$"))).min(1).describe("Exclude exact canonical ISO 3166-2 subdivisions. Support is independent from geo_regions inclusion support. Unknown identifiers and values also present in geo_regions are invalid. At create or update, sellers MUST reject unsupported identifiers and partial application; during get_products, a seller may instead return a sparse, buyer-reviewable targeting_resolution modification for a valid but unsupported requested outcome.").optional(), "geo_metros": z.array(z.object({ "system": z.enum(["nielsen_dma", "uk_itl1", "uk_itl2", "eurostat_nuts2", "custom"]).describe("Metro area classification system (e.g., 'nielsen_dma', 'uk_itl2')"), "values": z.array(z.string()).min(1).describe("Metro codes within the system (e.g., ['501', '602'] for Nielsen DMAs)") }).strict().describe("A targeted metro area.")).min(1).describe("Restrict delivery to specific metro areas. Each entry specifies the classification system and target values. Seller must declare supported systems in get_adcp_capabilities.").optional(), "geo_metros_exclude": z.array(z.object({ "system": z.enum(["nielsen_dma", "uk_itl1", "uk_itl2", "eurostat_nuts2", "custom"]).describe("Metro area classification system (e.g., 'nielsen_dma', 'uk_itl2')"), "values": z.array(z.string()).min(1).describe("Metro codes to exclude within the system (e.g., ['501', '602'] for Nielsen DMAs)") }).strict()).min(1).describe("Exclude specific metro areas from delivery. Each entry specifies the classification system and excluded values. Seller must declare supported systems in get_adcp_capabilities.").optional(), "geo_postal_areas": z.array(z.union([z.object({ "country": z.string().regex(new RegExp("^[A-Z]{2}$")).describe("ISO 3166-1 alpha-2 country code for the postal values."), "system": z.enum(["postal_code", "zip", "zip_plus_four", "outward", "full", "fsa", "plz", "code_postal", "postcode", "cep", "pin", "custom", "us_zip", "us_zip_plus_four", "gb_outward", "gb_full", "ca_fsa", "ca_full", "de_plz", "fr_code_postal", "au_postcode", "ch_plz", "at_plz"]).describe("Country-local postal code system (e.g., 'zip', 'outward', 'plz', 'postal_code')."), "values": z.array(z.string()).min(1).describe("Postal codes within the country and system.") }).strict().and(z.object({ "country": z.string().regex(new RegExp("^[A-Z]{2}$")).describe("ISO 3166-1 alpha-2 country code."), "system": z.enum(["postal_code", "zip", "zip_plus_four", "outward", "full", "fsa", "plz", "code_postal", "postcode", "cep", "pin", "custom", "us_zip", "us_zip_plus_four", "gb_outward", "gb_full", "ca_fsa", "ca_full", "de_plz", "fr_code_postal", "au_postcode", "ch_plz", "at_plz"]).describe("Country-local postal code system.") }).and(z.union([z.object({ "country": z.literal("US").optional(), "system": z.enum(["zip", "zip_plus_four"]).optional() }), z.object({ "country": z.literal("GB").optional(), "system": z.enum(["outward", "full"]).optional() }), z.object({ "country": z.literal("CA").optional(), "system": z.enum(["fsa", "full"]).optional() }), z.object({ "country": z.enum(["DE", "CH", "AT"]).optional(), "system": z.literal("plz").optional() }), z.object({ "country": z.literal("FR").optional(), "system": z.literal("code_postal").optional() }), z.object({ "country": z.literal("AU").optional(), "system": z.literal("postcode").optional() }), z.object({ "country": z.literal("BR").optional(), "system": z.literal("cep").optional() }), z.object({ "country": z.literal("IN").optional(), "system": z.literal("pin").optional() }), z.object({ "country": z.literal("ZA").optional(), "system": z.literal("postal_code").optional() }), z.object({ "country": z.any().refine((value) => !z.enum(["US", "GB", "CA", "DE", "CH", "AT", "FR", "AU", "BR", "IN", "ZA"]).safeParse(value).success, "Invalid input: Should NOT be valid against schema").optional(), "system": z.enum(["postal_code", "custom"]).optional() })]).describe("Must also satisfy at least one of these alternatives.")).describe("Valid country-local postal system pairing. Registered countries only accept their registered local systems; countries without a registered local system use postal_code or custom.")), z.object({ "system": z.enum(["us_zip", "us_zip_plus_four", "gb_outward", "gb_full", "ca_fsa", "ca_full", "de_plz", "fr_code_postal", "au_postcode", "ch_plz", "at_plz"]).describe("Deprecated country-fused postal code system (e.g., 'us_zip', 'gb_outward'). Prefer country + postal-system."), "values": z.array(z.string()).min(1).describe("Postal codes within the legacy system.") }).strict()]).describe("Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.")).min(1).describe("Restrict delivery to specific postal areas. Prefer the native country + postal system form. The deprecated legacy country-fused postal-system tokens remain accepted for compatibility. Seller must declare supported systems in get_adcp_capabilities.").optional(), "geo_postal_areas_exclude": z.array(z.union([z.object({ "country": z.string().regex(new RegExp("^[A-Z]{2}$")).describe("ISO 3166-1 alpha-2 country code for the postal values."), "system": z.enum(["postal_code", "zip", "zip_plus_four", "outward", "full", "fsa", "plz", "code_postal", "postcode", "cep", "pin", "custom", "us_zip", "us_zip_plus_four", "gb_outward", "gb_full", "ca_fsa", "ca_full", "de_plz", "fr_code_postal", "au_postcode", "ch_plz", "at_plz"]).describe("Country-local postal code system (e.g., 'zip', 'outward', 'plz', 'postal_code')."), "values": z.array(z.string()).min(1).describe("Postal codes within the country and system.") }).strict().and(z.object({ "country": z.string().regex(new RegExp("^[A-Z]{2}$")).describe("ISO 3166-1 alpha-2 country code."), "system": z.enum(["postal_code", "zip", "zip_plus_four", "outward", "full", "fsa", "plz", "code_postal", "postcode", "cep", "pin", "custom", "us_zip", "us_zip_plus_four", "gb_outward", "gb_full", "ca_fsa", "ca_full", "de_plz", "fr_code_postal", "au_postcode", "ch_plz", "at_plz"]).describe("Country-local postal code system.") }).and(z.union([z.object({ "country": z.literal("US").optional(), "system": z.enum(["zip", "zip_plus_four"]).optional() }), z.object({ "country": z.literal("GB").optional(), "system": z.enum(["outward", "full"]).optional() }), z.object({ "country": z.literal("CA").optional(), "system": z.enum(["fsa", "full"]).optional() }), z.object({ "country": z.enum(["DE", "CH", "AT"]).optional(), "system": z.literal("plz").optional() }), z.object({ "country": z.literal("FR").optional(), "system": z.literal("code_postal").optional() }), z.object({ "country": z.literal("AU").optional(), "system": z.literal("postcode").optional() }), z.object({ "country": z.literal("BR").optional(), "system": z.literal("cep").optional() }), z.object({ "country": z.literal("IN").optional(), "system": z.literal("pin").optional() }), z.object({ "country": z.literal("ZA").optional(), "system": z.literal("postal_code").optional() }), z.object({ "country": z.any().refine((value) => !z.enum(["US", "GB", "CA", "DE", "CH", "AT", "FR", "AU", "BR", "IN", "ZA"]).safeParse(value).success, "Invalid input: Should NOT be valid against schema").optional(), "system": z.enum(["postal_code", "custom"]).optional() })]).describe("Must also satisfy at least one of these alternatives.")).describe("Valid country-local postal system pairing. Registered countries only accept their registered local systems; countries without a registered local system use postal_code or custom.")), z.object({ "system": z.enum(["us_zip", "us_zip_plus_four", "gb_outward", "gb_full", "ca_fsa", "ca_full", "de_plz", "fr_code_postal", "au_postcode", "ch_plz", "at_plz"]).describe("Deprecated country-fused postal code system (e.g., 'us_zip', 'gb_outward'). Prefer country + postal-system."), "values": z.array(z.string()).min(1).describe("Postal codes within the legacy system.") }).strict()]).describe("Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.")).min(1).describe("Exclude specific postal areas from delivery. Prefer the native country + postal system form. The deprecated legacy country-fused postal-system tokens remain accepted for compatibility. Seller must declare supported systems in get_adcp_capabilities.").optional(), "geo_places": z.array(z.object({ "country": z.string().regex(new RegExp("^[A-Z]{2}$")).describe("ISO 3166-1 alpha-2 country code containing the place."), "system": z.union([z.enum(["geonames", "google_ads", "microsoft_ads"]), z.string().refine(adcpJsonSchemaUri, "Invalid URI").regex(new RegExp("^https://"))]).describe("Collision-safe identifier namespace for geographic places. Registered tokens have protocol-defined semantics. Unregistered systems MUST use an absolute HTTPS URI controlled by the catalog owner; consumers compare URI systems as exact opaque strings."), "system_version": z.string().min(1).describe("Optional exact catalog version from the seller's declared supported_versions. When omitted, the seller applies catalog.current_version and MUST echo that version on persisted package state.").optional(), "place_type": z.union([z.enum(["airport", "borough", "city", "city_region", "commune", "county", "district", "municipality", "neighborhood", "post_town", "prefecture", "province", "quarter", "state", "territory", "ward"]), z.string().refine(adcpJsonSchemaUri, "Invalid URI").regex(new RegExp("^https://"))]).describe("Canonical place classification. Registered tokens have protocol-defined meanings. Catalog-specific classifications without a registered mapping MUST use an absolute HTTPS URI controlled by the vocabulary owner; consumers compare URI types as exact opaque strings."), "values": z.array(z.string().min(1)).min(1).refine((arr) => arr.every((item, i) => arr.indexOf(item) == i), "All items must be unique!").describe("Stable place identifiers in the declared system. Display names are not valid targeting values."), "value_labels": z.record(z.string(), z.string().min(1)).describe("Optional human-readable diagnostic labels keyed by identifiers present in values. Extra keys are a conformance error. Labels are non-authoritative and MUST NOT be used to resolve or apply targeting.").optional(), "ext": z.record(z.string(), z.any()).describe("Extension object for platform-specific, vendor-namespaced parameters. Extensions are always optional and must be namespaced under a vendor/platform key (e.g., ext.gam, ext.roku). Used for custom capabilities, partner-specific configuration, and features being proposed for standardization.").optional() }).strict().and(z.union([z.any().refine((value) => !z.object({ "system": z.enum(["geonames", "google_ads", "microsoft_ads"]) }).safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.intersection(z.object({ "system": z.enum(["geonames", "google_ads", "microsoft_ads"]) }), z.object({ "values": z.any().optional() }))]).describe("Must also satisfy at least one of these alternatives.")).describe("A catalog-backed named place target. Values are stable identifiers in the declared system. Entries within geo_places form a union; different geographic inclusion dimensions intersect. value_labels are diagnostic only and MUST NOT be used to resolve targeting.")).min(1).describe("Restrict delivery to catalog-backed named places. Values MUST be stable identifiers in the declared system, not display names. Sellers must declare supported systems, countries, and place types in get_adcp_capabilities and reject unsupported entries rather than silently dropping them.").optional(), "geo_places_exclude": z.array(z.object({ "country": z.string().regex(new RegExp("^[A-Z]{2}$")).describe("ISO 3166-1 alpha-2 country code containing the place."), "system": z.union([z.enum(["geonames", "google_ads", "microsoft_ads"]), z.string().refine(adcpJsonSchemaUri, "Invalid URI").regex(new RegExp("^https://"))]).describe("Collision-safe identifier namespace for geographic places. Registered tokens have protocol-defined semantics. Unregistered systems MUST use an absolute HTTPS URI controlled by the catalog owner; consumers compare URI systems as exact opaque strings."), "system_version": z.string().min(1).describe("Optional exact catalog version from the seller's declared supported_versions. When omitted, the seller applies catalog.current_version and MUST echo that version on persisted package state.").optional(), "place_type": z.union([z.enum(["airport", "borough", "city", "city_region", "commune", "county", "district", "municipality", "neighborhood", "post_town", "prefecture", "province", "quarter", "state", "territory", "ward"]), z.string().refine(adcpJsonSchemaUri, "Invalid URI").regex(new RegExp("^https://"))]).describe("Canonical place classification. Registered tokens have protocol-defined meanings. Catalog-specific classifications without a registered mapping MUST use an absolute HTTPS URI controlled by the vocabulary owner; consumers compare URI types as exact opaque strings."), "values": z.array(z.string().min(1)).min(1).refine((arr) => arr.every((item, i) => arr.indexOf(item) == i), "All items must be unique!").describe("Stable place identifiers in the declared system. Display names are not valid targeting values."), "value_labels": z.record(z.string(), z.string().min(1)).describe("Optional human-readable diagnostic labels keyed by identifiers present in values. Extra keys are a conformance error. Labels are non-authoritative and MUST NOT be used to resolve or apply targeting.").optional(), "ext": z.record(z.string(), z.any()).describe("Extension object for platform-specific, vendor-namespaced parameters. Extensions are always optional and must be namespaced under a vendor/platform key (e.g., ext.gam, ext.roku). Used for custom capabilities, partner-specific configuration, and features being proposed for standardization.").optional() }).strict().and(z.union([z.any().refine((value) => !z.object({ "system": z.enum(["geonames", "google_ads", "microsoft_ads"]) }).safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.intersection(z.object({ "system": z.enum(["geonames", "google_ads", "microsoft_ads"]) }), z.object({ "values": z.any().optional() }))]).describe("Must also satisfy at least one of these alternatives.")).describe("A catalog-backed named place target. Values are stable identifiers in the declared system. Entries within geo_places form a union; different geographic inclusion dimensions intersect. value_labels are diagnostic only and MUST NOT be used to resolve targeting.")).min(1).describe("Exclude catalog-backed named places. Uses the same identifier-based shape as geo_places. Sellers MUST reject overlap with geo_places for the same country, system, place_type, and value.").optional(), "daypart_targets": z.array(z.object({ "days": z.array(z.enum(["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]).describe("Days of the week for daypart targeting")).min(1).describe("Days of week this window applies to. Use multiple days for compact targeting (e.g., monday-friday in one object)."), "start_hour": z.number().int().gte(0).lte(23).describe("Start hour (inclusive), 0-23 in 24-hour format. 0 = midnight, 6 = 6:00am, 18 = 6:00pm."), "end_hour": z.number().int().gte(1).lte(24).describe("End hour (exclusive), 1-24 in 24-hour format. 10 = 10:00am, 24 = midnight. Must be greater than start_hour."), "timezone": z.union([z.literal("inventory_local"), z.any().refine((value) => !z.literal("inventory_local").safeParse(value).success, "Invalid input: Should NOT be valid against schema").describe("Concrete timezone identifier in the implementation's supported IANA Time Zone Database, such as America/New_York, CET, or UTC.")]).describe("Civil-time clock used to evaluate this window. 'inventory_local' evaluates the hours in the seller-assigned local timezone of each inventory unit that can deliver the impression, such as a screen, venue, station, or publisher property; it never means the buyer, account, or server timezone. A concrete IANA timezone identifier (for example, 'America/New_York', 'CET', or 'UTC') evaluates one shared civil-time clock across the targeted inventory. Omission defaults to 'inventory_local'. Buyers that begin with a user or account preference MUST resolve it to a concrete IANA identifier before sending the daypart; 'user_timezone' and 'account_timezone' are not wire values. For each candidate delivery instant, convert the instant into this clock and compare its resulting local day and hour with the half-open window: a skipped DST hour has no matching instants, while both occurrences of a repeated hour match. This delivery clock is independent of reporting_capabilities.timezone.").default("inventory_local"), "label": z.string().describe("Optional human-readable name for this time window (e.g., 'Morning Drive', 'Prime Time')").optional() }).strict().describe("A time window for daypart targeting. Specifies days of week, an hour range, and the civil-time clock used to evaluate it. start_hour is inclusive, end_hour is exclusive (e.g., 6-10 = 6:00am to 10:00am). Follows the Google Ads AdScheduleInfo / DV360 DayPartTargeting pattern.")).min(1).describe("Restrict delivery to specific time windows. Each entry specifies days of week, an hour range, and an optional timezone that defaults to inventory_local. A concrete IANA zone uses one shared civil-time clock, while inventory_local evaluates each inventory unit in its seller-assigned local timezone. Entries are independent and MAY use different clocks.").optional(), "axe_include_segment": z.string().describe("Deprecated: Use TMP provider fields instead. AXE segment ID to include for targeting.").optional(), "axe_exclude_segment": z.string().describe("Deprecated: Use TMP provider fields instead. AXE segment ID to exclude from targeting.").optional(), "audience_include": z.array(z.string()).min(1).describe("Restrict delivery to members of these first-party CRM audiences. Only users present in the uploaded lists are eligible. References audience_id values from sync_audiences on the same seller account \u2014 audience IDs are not portable across sellers. Not for lookalike expansion \u2014 express that intent in the campaign brief. Seller must declare support in get_adcp_capabilities.").optional(), "audience_exclude": z.array(z.string()).min(1).describe("Suppress delivery to members of these first-party CRM audiences. Matched users are excluded regardless of other targeting. References audience_id values from sync_audiences on the same seller account \u2014 audience IDs are not portable across sellers. Seller must declare support in get_adcp_capabilities.").optional(), "signal_targeting_groups": z.object({ "operator": z.literal("all").describe("Groups-level operator. Required even though v1 only supports 'all': every child group must be satisfied."), "groups": z.array(z.object({ "operator": z.enum(["any", "none"]).describe("How to evaluate the signals in this group. 'any' is an OR include group. 'none' is an exclusion group equivalent to NOT (A OR B OR C)."), "signals": z.array(z.object({ "pricing_option_id": z.string().describe("Pricing option selected for this signal. Use the pricing_option_id from the product's signal_targeting_options entry when product-scoped pricing is present; otherwise use the seller get_signals pricing only when the product option does not override it. Required when the selected signal has pricing_options; omit only when the signal is bundled into the product price or has no incremental cost.").optional(), "signal_agent_segment_id": z.string().describe("Optional opaque resolved-segment or seller execution handle for this signal. Omit when signal_ref plus the value expression is sufficient for the seller to resolve the signal. Include when the product option exposes a separate runtime or activation handle, and pass it verbatim. Buyers SHOULD prefer an exposed segment handle over reconstructing condition identity from categorical values because the handle can carry provider namespace and methodology distinctions.").optional(), "activation_key": z.record(z.string(), z.any()).and(z.any().superRefine((x, ctx) => {
12297
12280
  const schemas = [z.object({ "type": z.literal("segment_id").describe("Segment ID based targeting"), "segment_id": z.string().describe("The platform-specific segment identifier to use in campaign targeting") }).catchall(z.any()), z.object({ "type": z.literal("key_value").describe("Key-value pair based targeting"), "key": z.string().describe("The targeting parameter key"), "value": z.string().describe("The targeting parameter value") }).catchall(z.any())];
@@ -15353,7 +15336,7 @@ const CanonicalProposalSchema = /* @__PURE__ */ (() => (() => {
15353
15336
  message: "Invalid input: Should pass single schema. Passed " + passed
15354
15337
  });
15355
15338
  }
15356
- })).min(1).refine((arr) => arr.every((item, i) => arr.indexOf(item) == i), "All items must be unique!").describe("Dimension constraints represented by a ForecastPoint. Use this when one product, proposal, or signal coverage forecast needs to expose availability or forecasted delivery by country, region, placement, device, audience, signal value, time window, or intersections such as placement x country without creating separate products solely for each slice. Each item declares one dimension family via `kind`; when multiple items are present, the point represents their intersection. Sellers MUST NOT emit more than one item for each `kind` in a point. Consumers MUST NOT treat repeated kinds as OR semantics; repeated peer values such as two countries are a seller conformance issue. Dimension values are descriptors of the forecast row and are independent of pricing_options.").optional(), "availability_status": z.enum(["available", "unavailable"]).describe("Bookability of the inventory a forecast row describes, as of the forecast's generated_at. A snapshot, never a hold: valid_until bounds freshness, and proposal finalization or purchase remains the commitment boundary.").optional(), "metrics": z.object({ "coverage_rate": z.intersection(z.object({ "low": z.number().gte(0).describe("Conservative (low-end) forecast value").optional(), "mid": z.number().gte(0).describe("Expected (most likely) forecast value").optional(), "high": z.number().gte(0).describe("Optimistic (high-end) forecast value").optional() }).catchall(z.any()).and(z.union([z.object({ "mid": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "low": z.any().refine((value) => value !== void 0, "Required"), "high": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("A forecast value with optional confidence bounds. Either mid (point estimate) or both low and high (range) must be provided. mid represents the most likely outcome. low and high represent conservative and optimistic estimates. All three can be provided together."), z.object({ "low": z.any().optional(), "mid": z.any().optional(), "high": z.any().optional() })).describe("A forecast range whose low, midpoint, and high values are rates in the inclusive interval from 0 to 1.").optional() }).catchall(z.object({ "low": z.number().gte(0).describe("Conservative (low-end) forecast value").optional(), "mid": z.number().gte(0).describe("Expected (most likely) forecast value").optional(), "high": z.number().gte(0).describe("Optimistic (high-end) forecast value").optional() }).catchall(z.any()).and(z.union([z.object({ "mid": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "low": z.any().refine((value) => value !== void 0, "Required"), "high": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("A forecast value with optional confidence bounds. Either mid (point estimate) or both low and high (range) must be provided. mid represents the most likely outcome. low and high represent conservative and optimistic estimates. All three can be provided together.")), "viewability": z.object({ "vendor": z.object({ "domain": z.string().regex(new RegExp("^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$")).describe("Domain that hosts /.well-known/brand.json or is registered for the brand."), "brand_id": z.string().regex(new RegExp("^[a-z0-9_]+$")).describe("Brand within a house-of-brands manifest. Omit for a single-brand domain.").optional(), "countries": z.array(z.string().regex(new RegExp("^[A-Z]{2}$"))).min(1).refine((arr) => arr.every((item, i) => arr.indexOf(item) == i), "All items must be unique!").describe("Canonical set of ISO 3166-1 alpha-2 countries for this advertiser identity. Omit when the identity is global or the house does not split the brand geographically. Array order is not meaningful; producers MUST sort codes lexicographically before computing keys or signatures. This qualifies account and proposal identity and is not delivery targeting.").optional() }).passthrough().describe("Stable brand identity used to resolve the canonical brand manifest, optionally qualified by the countries of a commercial advertiser entity. The manifest URL is derived from domain; callers do not send brand assets or per-call brand overrides. Countries do not target delivery.").optional(), "measurable_impressions": z.object({ "low": z.number().gte(0).describe("Conservative (low-end) forecast value").optional(), "mid": z.number().gte(0).describe("Expected (most likely) forecast value").optional(), "high": z.number().gte(0).describe("Optimistic (high-end) forecast value").optional() }).catchall(z.any()).and(z.union([z.object({ "mid": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "low": z.any().refine((value) => value !== void 0, "Required"), "high": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("A forecast value with optional confidence bounds. Either mid (point estimate) or both low and high (range) must be provided. mid represents the most likely outcome. low and high represent conservative and optimistic estimates. All three can be provided together.").optional(), "viewable_impressions": z.object({ "low": z.number().gte(0).describe("Conservative (low-end) forecast value").optional(), "mid": z.number().gte(0).describe("Expected (most likely) forecast value").optional(), "high": z.number().gte(0).describe("Optimistic (high-end) forecast value").optional() }).catchall(z.any()).and(z.union([z.object({ "mid": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "low": z.any().refine((value) => value !== void 0, "Required"), "high": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("A forecast value with optional confidence bounds. Either mid (point estimate) or both low and high (range) must be provided. mid represents the most likely outcome. low and high represent conservative and optimistic estimates. All three can be provided together.").optional(), "viewable_rate": z.intersection(z.object({ "low": z.number().gte(0).describe("Conservative (low-end) forecast value").optional(), "mid": z.number().gte(0).describe("Expected (most likely) forecast value").optional(), "high": z.number().gte(0).describe("Optimistic (high-end) forecast value").optional() }).catchall(z.any()).and(z.union([z.object({ "mid": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "low": z.any().refine((value) => value !== void 0, "Required"), "high": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("A forecast value with optional confidence bounds. Either mid (point estimate) or both low and high (range) must be provided. mid represents the most likely outcome. low and high represent conservative and optimistic estimates. All three can be provided together."), z.object({ "low": z.any().optional(), "mid": z.any().optional(), "high": z.any().optional() })).describe("A forecast range whose low, midpoint, and high values are rates in the inclusive interval from 0 to 1.").optional(), "viewed_seconds": z.object({ "low": z.number().gte(0).describe("Conservative (low-end) forecast value").optional(), "mid": z.number().gte(0).describe("Expected (most likely) forecast value").optional(), "high": z.number().gte(0).describe("Optimistic (high-end) forecast value").optional() }).catchall(z.any()).and(z.union([z.object({ "mid": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "low": z.any().refine((value) => value !== void 0, "Required"), "high": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("A forecast value with optional confidence bounds. Either mid (point estimate) or both low and high (range) must be provided. mid represents the most likely outcome. low and high represent conservative and optimistic estimates. All three can be provided together.").optional(), "standard": z.enum(["mrc", "groupm"]).describe("Viewability measurement standard applied to determine whether an impression qualifies as viewable. These are materially different thresholds and should not be compared across standards.").optional() }).passthrough().and(z.union([z.any().refine((value) => !z.union([z.object({ "measurable_impressions": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough(), z.object({ "viewable_impressions": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough(), z.object({ "viewable_rate": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough(), z.object({ "viewed_seconds": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough()]).safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.object({ "standard": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).optional(), "vendor_metric_values": z.array(z.object({ "vendor": z.object({ "domain": z.string().regex(new RegExp("^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$")).describe("Domain that hosts /.well-known/brand.json or is registered for the brand."), "brand_id": z.string().regex(new RegExp("^[a-z0-9_]+$")).describe("Brand within a house-of-brands manifest. Omit for a single-brand domain.").optional(), "countries": z.array(z.string().regex(new RegExp("^[A-Z]{2}$"))).min(1).refine((arr) => arr.every((item, i) => arr.indexOf(item) == i), "All items must be unique!").describe("Canonical set of ISO 3166-1 alpha-2 countries for this advertiser identity. Omit when the identity is global or the house does not split the brand geographically. Array order is not meaningful; producers MUST sort codes lexicographically before computing keys or signatures. This qualifies account and proposal identity and is not delivery targeting.").optional() }).passthrough().describe("Stable brand identity used to resolve the canonical brand manifest, optionally qualified by the countries of a commercial advertiser entity. The manifest URL is derived from domain; callers do not send brand assets or per-call brand overrides. Countries do not target delivery."), "metric_id": z.string().regex(new RegExp("^[a-z][a-z0-9_]*$")).min(1).max(64).describe("Identifier for a vendor-defined metric within the vendor's vocabulary. Stable lookup key; the vendor publishes the canonical list (with category, methodology, and standard alignment) in `brand.json` `agents[type='measurement']`. Lowercase with underscores so a future enum promotion into `available-metric.json` is a literal string lift. Identifier is namespaced by the vendor \u2014 the same `metric_id` may mean different things in different vendors' vocabularies."), "value": z.object({ "low": z.number().gte(0).describe("Conservative (low-end) forecast value").optional(), "mid": z.number().gte(0).describe("Expected (most likely) forecast value").optional(), "high": z.number().gte(0).describe("Optimistic (high-end) forecast value").optional() }).catchall(z.any()).and(z.union([z.object({ "mid": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "low": z.any().refine((value) => value !== void 0, "Required"), "high": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("A forecast value with optional confidence bounds. Either mid (point estimate) or both low and high (range) must be provided. mid represents the most likely outcome. low and high represent conservative and optimistic estimates. All three can be provided together."), "unit": z.string().optional(), "measurable_impressions": z.object({ "low": z.number().gte(0).describe("Conservative (low-end) forecast value").optional(), "mid": z.number().gte(0).describe("Expected (most likely) forecast value").optional(), "high": z.number().gte(0).describe("Optimistic (high-end) forecast value").optional() }).catchall(z.any()).and(z.union([z.object({ "mid": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "low": z.any().refine((value) => value !== void 0, "Required"), "high": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("A forecast value with optional confidence bounds. Either mid (point estimate) or both low and high (range) must be provided. mid represents the most likely outcome. low and high represent conservative and optimistic estimates. All three can be provided together.").optional(), "breakdown": z.record(z.string(), z.any()).optional() }).passthrough().describe("Compact forecasted vendor metric with a BrandKey vendor pointer and no embedded brand assets.")).optional() }).passthrough().describe("Compact forecast row with numeric ranges and identity-only measurement-vendor references.")).min(1), "forecast_range_unit": z.enum(["spend", "availability", "reach_freq", "weekly", "daily", "clicks", "conversions", "package"]).describe("Describes how to interpret the points array in a DeliveryForecast \u2014 what axis the curve represents").optional(), "method": z.enum(["estimate", "modeled", "guaranteed"]).describe("Method used to produce a delivery forecast"), "currency": z.string().regex(new RegExp("^[A-Z]{3}$")), "demographic_system": z.enum(["nielsen", "nielsen_audio", "barb", "agf", "oztam", "mediametrie", "custom"]).describe("Audience measurement systems for demographic notation in GRP forecasts and pricing, across video and audio channels. Specifies how demographics are written, not whose panel produced the numbers \u2014 provider identity is measurement_source.").optional(), "demographic": z.string().optional(), "measurement_source": z.string().regex(new RegExp("^[a-z0-9_]+$")).max(64).optional(), "reach_unit": z.enum(["individuals", "households", "devices", "accounts", "cookies", "custom"]).describe("Unit of measurement for reach and audience size metrics. Different channels and measurement providers count reach in fundamentally different units, making cross-channel comparison impossible without declaring the unit.").optional(), "generated_at": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "valid_until": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "ext": z.record(z.string(), z.any()).describe("Extension object for platform-specific, vendor-namespaced parameters. Extensions are always optional and must be namespaced under a vendor/platform key (e.g., ext.gam, ext.roku). Used for custom capabilities, partner-specific configuration, and features being proposed for standardization.").optional() }).passthrough().describe("Compact product forecast without legacy BrandRef or creative dependencies.").describe("Aggregate forecasted delivery for the proposal. For outcome_target requests, points carry the goal's metric or event key in metrics; with cost_per, that is the goal volume planned under the commercial_terms.bidding policy, and currency equals cost_per.currency.").optional() }).passthrough().describe("Compact immutable proposal for the AdCP 3.2 lifecycle. commercial_terms is the sole authoritative commercial envelope; narrative fields do not duplicate legacy allocation or creative graphs.");
15339
+ })).min(1).refine((arr) => arr.every((item, i) => arr.indexOf(item) == i), "All items must be unique!").describe("Dimension constraints represented by a ForecastPoint. Use this when one product, proposal, or signal coverage forecast needs to expose availability or forecasted delivery by country, region, placement, device, audience, signal value, time window, or intersections such as placement x country without creating separate products solely for each slice. Each item declares one dimension family via `kind`; when multiple items are present, the point represents their intersection. Sellers MUST NOT emit more than one item for each `kind` in a point. Consumers MUST NOT treat repeated kinds as OR semantics; repeated peer values such as two countries are a seller conformance issue. Dimension values are descriptors of the forecast row and are independent of pricing_options.").optional(), "availability_status": z.enum(["available", "unavailable"]).describe("Bookability of the inventory a forecast row describes, as of the forecast's generated_at. A snapshot, never a hold: valid_until bounds freshness, and proposal finalization or purchase remains the commitment boundary.").optional(), "metrics": z.object({ "coverage_rate": z.intersection(z.object({ "low": z.number().gte(0).describe("Conservative (low-end) forecast value").optional(), "mid": z.number().gte(0).describe("Expected (most likely) forecast value").optional(), "high": z.number().gte(0).describe("Optimistic (high-end) forecast value").optional() }).catchall(z.any()).and(z.union([z.object({ "mid": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "low": z.any().refine((value) => value !== void 0, "Required"), "high": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("A forecast value with optional confidence bounds. Either mid (point estimate) or both low and high (range) must be provided. mid represents the most likely outcome. low and high represent conservative and optimistic estimates. All three can be provided together."), z.object({ "low": z.any().optional(), "mid": z.any().optional(), "high": z.any().optional() })).describe("A forecast range whose low, midpoint, and high values are rates in the inclusive interval from 0 to 1.").optional() }).catchall(z.object({ "low": z.number().gte(0).describe("Conservative (low-end) forecast value").optional(), "mid": z.number().gte(0).describe("Expected (most likely) forecast value").optional(), "high": z.number().gte(0).describe("Optimistic (high-end) forecast value").optional() }).catchall(z.any()).and(z.union([z.object({ "mid": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "low": z.any().refine((value) => value !== void 0, "Required"), "high": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("A forecast value with optional confidence bounds. Either mid (point estimate) or both low and high (range) must be provided. mid represents the most likely outcome. low and high represent conservative and optimistic estimates. All three can be provided together.")), "viewability": z.object({ "vendor": z.object({ "domain": z.string().regex(new RegExp("^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$")).describe("Domain that hosts /.well-known/brand.json or is registered for the brand."), "brand_id": z.string().regex(new RegExp("^[a-z0-9_]+$")).describe("Brand within a house-of-brands manifest. Omit for a single-brand domain.").optional(), "countries": z.array(z.string().regex(new RegExp("^[A-Z]{2}$"))).min(1).refine((arr) => arr.every((item, i) => arr.indexOf(item) == i), "All items must be unique!").describe("Canonical set of ISO 3166-1 alpha-2 countries for this advertiser identity. Omit when the identity is global or the house does not split the brand geographically. Array order is not meaningful; producers MUST sort codes lexicographically before computing keys or signatures. This qualifies account and proposal identity and is not delivery targeting.").optional() }).passthrough().describe("Stable brand identity used to resolve the canonical brand manifest, optionally qualified by the countries of a commercial advertiser entity. The manifest URL is derived from domain; callers do not send brand assets or per-call brand overrides. Countries do not target delivery.").optional(), "measurable_impressions": z.object({ "low": z.number().gte(0).describe("Conservative (low-end) forecast value").optional(), "mid": z.number().gte(0).describe("Expected (most likely) forecast value").optional(), "high": z.number().gte(0).describe("Optimistic (high-end) forecast value").optional() }).catchall(z.any()).and(z.union([z.object({ "mid": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "low": z.any().refine((value) => value !== void 0, "Required"), "high": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("A forecast value with optional confidence bounds. Either mid (point estimate) or both low and high (range) must be provided. mid represents the most likely outcome. low and high represent conservative and optimistic estimates. All three can be provided together.").optional(), "viewable_impressions": z.object({ "low": z.number().gte(0).describe("Conservative (low-end) forecast value").optional(), "mid": z.number().gte(0).describe("Expected (most likely) forecast value").optional(), "high": z.number().gte(0).describe("Optimistic (high-end) forecast value").optional() }).catchall(z.any()).and(z.union([z.object({ "mid": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "low": z.any().refine((value) => value !== void 0, "Required"), "high": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("A forecast value with optional confidence bounds. Either mid (point estimate) or both low and high (range) must be provided. mid represents the most likely outcome. low and high represent conservative and optimistic estimates. All three can be provided together.").optional(), "viewable_rate": z.intersection(z.object({ "low": z.number().gte(0).describe("Conservative (low-end) forecast value").optional(), "mid": z.number().gte(0).describe("Expected (most likely) forecast value").optional(), "high": z.number().gte(0).describe("Optimistic (high-end) forecast value").optional() }).catchall(z.any()).and(z.union([z.object({ "mid": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "low": z.any().refine((value) => value !== void 0, "Required"), "high": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("A forecast value with optional confidence bounds. Either mid (point estimate) or both low and high (range) must be provided. mid represents the most likely outcome. low and high represent conservative and optimistic estimates. All three can be provided together."), z.object({ "low": z.any().optional(), "mid": z.any().optional(), "high": z.any().optional() })).describe("A forecast range whose low, midpoint, and high values are rates in the inclusive interval from 0 to 1.").optional(), "viewed_seconds": z.object({ "low": z.number().gte(0).describe("Conservative (low-end) forecast value").optional(), "mid": z.number().gte(0).describe("Expected (most likely) forecast value").optional(), "high": z.number().gte(0).describe("Optimistic (high-end) forecast value").optional() }).catchall(z.any()).and(z.union([z.object({ "mid": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "low": z.any().refine((value) => value !== void 0, "Required"), "high": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("A forecast value with optional confidence bounds. Either mid (point estimate) or both low and high (range) must be provided. mid represents the most likely outcome. low and high represent conservative and optimistic estimates. All three can be provided together.").optional(), "standard": z.enum(["mrc", "groupm"]).describe("Viewability measurement standard applied to determine whether an impression qualifies as viewable. These are materially different thresholds and should not be compared across standards.").optional() }).passthrough().and(z.union([z.any().refine((value) => !z.union([z.object({ "measurable_impressions": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough(), z.object({ "viewable_impressions": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough(), z.object({ "viewable_rate": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough(), z.object({ "viewed_seconds": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough()]).safeParse(value).success, "Invalid input: Should NOT be valid against schema"), z.object({ "standard": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).optional(), "vendor_metric_values": z.array(z.object({ "vendor": z.object({ "domain": z.string().regex(new RegExp("^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$")).describe("Domain that hosts /.well-known/brand.json or is registered for the brand."), "brand_id": z.string().regex(new RegExp("^[a-z0-9_]+$")).describe("Brand within a house-of-brands manifest. Omit for a single-brand domain.").optional(), "countries": z.array(z.string().regex(new RegExp("^[A-Z]{2}$"))).min(1).refine((arr) => arr.every((item, i) => arr.indexOf(item) == i), "All items must be unique!").describe("Canonical set of ISO 3166-1 alpha-2 countries for this advertiser identity. Omit when the identity is global or the house does not split the brand geographically. Array order is not meaningful; producers MUST sort codes lexicographically before computing keys or signatures. This qualifies account and proposal identity and is not delivery targeting.").optional() }).passthrough().describe("Stable brand identity used to resolve the canonical brand manifest, optionally qualified by the countries of a commercial advertiser entity. The manifest URL is derived from domain; callers do not send brand assets or per-call brand overrides. Countries do not target delivery."), "metric_id": z.string().regex(new RegExp("^[a-z][a-z0-9_]*$")).min(1).max(64).describe("Identifier for a vendor-defined metric within the vendor's vocabulary. Stable lookup key; the vendor publishes the canonical list (with category, methodology, and standard alignment) in `brand.json` `agents[type='measurement']`. Lowercase with underscores so a future enum promotion into `available-metric.json` is a literal string lift. Identifier is namespaced by the vendor \u2014 the same `metric_id` may mean different things in different vendors' vocabularies."), "value": z.object({ "low": z.number().gte(0).describe("Conservative (low-end) forecast value").optional(), "mid": z.number().gte(0).describe("Expected (most likely) forecast value").optional(), "high": z.number().gte(0).describe("Optimistic (high-end) forecast value").optional() }).catchall(z.any()).and(z.union([z.object({ "mid": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "low": z.any().refine((value) => value !== void 0, "Required"), "high": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("A forecast value with optional confidence bounds. Either mid (point estimate) or both low and high (range) must be provided. mid represents the most likely outcome. low and high represent conservative and optimistic estimates. All three can be provided together."), "unit": z.string().optional(), "measurable_impressions": z.object({ "low": z.number().gte(0).describe("Conservative (low-end) forecast value").optional(), "mid": z.number().gte(0).describe("Expected (most likely) forecast value").optional(), "high": z.number().gte(0).describe("Optimistic (high-end) forecast value").optional() }).catchall(z.any()).and(z.union([z.object({ "mid": z.any().refine((value) => value !== void 0, "Required") }).passthrough(), z.object({ "low": z.any().refine((value) => value !== void 0, "Required"), "high": z.any().refine((value) => value !== void 0, "Required") }).passthrough()]).describe("Must also satisfy at least one of these alternatives.")).describe("A forecast value with optional confidence bounds. Either mid (point estimate) or both low and high (range) must be provided. mid represents the most likely outcome. low and high represent conservative and optimistic estimates. All three can be provided together.").optional(), "breakdown": z.record(z.string(), z.any()).optional() }).passthrough().describe("Compact forecasted vendor metric with a BrandKey vendor pointer and no embedded brand assets.")).optional() }).passthrough().describe("Compact forecast row with numeric ranges and identity-only measurement-vendor references.")).min(1), "forecast_range_unit": z.enum(["spend", "availability", "reach_freq", "weekly", "daily", "clicks", "conversions", "package"]).describe("Describes how to interpret the points array in a DeliveryForecast \u2014 what axis the curve represents").optional(), "method": z.enum(["estimate", "modeled", "guaranteed"]).describe("Method used to produce a delivery forecast"), "currency": z.string().regex(new RegExp("^[A-Z]{3}$")), "demographic_system": z.enum(["nielsen", "nielsen_audio", "barb", "agf", "oztam", "mediametrie", "custom"]).describe("Audience measurement systems for demographic notation in GRP forecasts and pricing, across video and audio channels. Specifies how demographics are written, not whose panel produced the numbers \u2014 provider identity is measurement_source.").optional(), "demographic": z.string().optional(), "measurement_source": z.string().regex(new RegExp("^[a-z0-9_]+$")).max(64).optional(), "reach_unit": z.enum(["individuals", "households", "devices", "accounts", "cookies", "custom"]).describe("Unit of measurement for reach and audience size metrics. Different channels and measurement providers count reach in fundamentally different units, making cross-channel comparison impossible without declaring the unit.").optional(), "generated_at": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "valid_until": z.string().refine(adcpJsonSchemaDateTime, "Invalid date-time").optional(), "ext": z.record(z.string(), z.any()).describe("Extension object for platform-specific, vendor-namespaced parameters. Extensions are always optional and must be namespaced under a vendor/platform key (e.g., ext.gam, ext.roku). Used for custom capabilities, partner-specific configuration, and features being proposed for standardization.").optional() }).passthrough().describe("Compact product forecast without legacy BrandRef or creative dependencies.").describe("Aggregate forecasted delivery for the proposal. For outcome_target requests, points carry the goal's metric or event key in metrics; with cost_per, that is the goal volume planned under the commercial_terms.bidding policy, and currency equals cost_per.currency.").optional() }).catchall(z.any()).describe("Compact immutable proposal for the AdCP 3.2 lifecycle. commercial_terms is the sole authoritative commercial envelope; narrative fields do not duplicate legacy allocation or creative graphs.");
15357
15340
  const exactSchema = objectSchema.superRefine((value, ctx) => {
15358
15341
  const checked = z.intersection(z.intersection(z.union([z.any().refine((value2) => !z.object({ "proposal_kind": z.enum(["media_buy_update", "media_buy_cancellation"]) }).safeParse(value2).success, "Invalid input: Should NOT be valid against schema"), z.intersection(z.object({ "proposal_kind": z.enum(["media_buy_update", "media_buy_cancellation"]) }), z.object({ "parent_proposal_id": z.any().refine((value2) => value2 !== void 0, "Required"), "media_buy_id": z.any().refine((value2) => value2 !== void 0, "Required"), "base_media_buy_revision": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough())]), z.union([z.any().refine((value2) => !z.object({ "proposal_status": z.literal("accepted") }).safeParse(value2).success, "Invalid input: Should NOT be valid against schema"), z.intersection(z.object({ "proposal_status": z.literal("accepted") }), z.object({ "media_buy_id": z.any().refine((value2) => value2 !== void 0, "Required"), "accepted_at": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough())])), z.intersection(z.union([z.any().refine((value2) => !z.object({ "proposal_status": z.literal("committed") }).safeParse(value2).success, "Invalid input: Should NOT be valid against schema"), z.intersection(z.object({ "proposal_status": z.literal("committed") }), z.object({ "expires_at": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough())]), z.union([z.any().refine((value2) => !z.object({ "proposal_kind": z.literal("media_buy_cancellation") }).safeParse(value2).success, "Invalid input: Should NOT be valid against schema"), z.intersection(z.object({ "proposal_kind": z.literal("media_buy_cancellation") }), z.object({ "commercial_terms": z.object({ "cancellation_terms": z.any().refine((value2) => value2 !== void 0, "Required") }).passthrough().optional() }))]))).safeParse(value);
15359
15342
  if (!checked.success) {