@adcp/sdk 13.0.1 → 13.0.3

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 (1411) hide show
  1. package/ADCP_VERSION +1 -1
  2. package/bin/adcp.js +37 -2
  3. package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/index.yaml +5 -1
  4. package/compliance/cache/{3.1.15.previous/protocols → 3.1.20/domains}/media-buy/scenarios/creative_fate_after_cancellation.yaml +5 -1
  5. package/compliance/cache/{3.1.15/protocols → 3.1.20/domains}/media-buy/scenarios/dependency_impairment.yaml +14 -13
  6. package/compliance/cache/{3.1.15/protocols → 3.1.20/domains}/media-buy/scenarios/dependency_impairment_cardinality.yaml +14 -13
  7. package/compliance/cache/3.1.20/domains/media-buy/scenarios/inventory_list_no_match.yaml +229 -0
  8. package/compliance/cache/{3.1.15.previous/protocols → 3.1.20/domains}/media-buy/scenarios/inventory_list_targeting.yaml +44 -61
  9. package/compliance/cache/{3.1.15/protocols → 3.1.20/domains}/media-buy/scenarios/measurement_terms_rejected.yaml +7 -73
  10. package/compliance/cache/{3.1.15.previous → 3.1.20}/domains/media-buy/scenarios/pending_creatives_to_start.yaml +12 -7
  11. package/compliance/cache/{3.1.15.previous → 3.1.20}/domains/media-buy/scenarios/refine_products.yaml +5 -1
  12. package/compliance/cache/{3.1.15 → 3.1.20}/index.json +3 -3
  13. package/compliance/cache/{3.1.15.previous/domains → 3.1.20/protocols}/media-buy/index.yaml +5 -1
  14. package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +5 -1
  15. package/compliance/cache/{3.1.15.previous/domains → 3.1.20/protocols}/media-buy/scenarios/dependency_impairment.yaml +14 -13
  16. package/compliance/cache/{3.1.15.previous → 3.1.20}/protocols/media-buy/scenarios/dependency_impairment_cardinality.yaml +14 -13
  17. package/compliance/cache/3.1.20/protocols/media-buy/scenarios/inventory_list_no_match.yaml +229 -0
  18. package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/inventory_list_targeting.yaml +44 -61
  19. package/compliance/cache/{3.1.15.previous → 3.1.20}/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +7 -73
  20. package/compliance/cache/{3.1.15.previous → 3.1.20}/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +12 -7
  21. package/compliance/cache/{3.1.15.previous → 3.1.20}/protocols/media-buy/scenarios/refine_products.yaml +5 -1
  22. package/compliance/cache/{3.1.15.previous → 3.1.20}/specialisms/sales-broadcast-tv/index.yaml +6 -1
  23. package/compliance/cache/{3.1.15.previous → 3.1.20}/specialisms/sales-guaranteed/index.yaml +5 -1
  24. package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/sales-proposal-mode/index.yaml +5 -1
  25. package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/acme-outdoor.yaml +10 -0
  26. package/compliance/cache/{3.1.15.previous → 3.1.20}/universal/pagination-integrity-creative-formats.yaml +2 -2
  27. package/compliance/cache/{3.1.15/protocols → 3.1.20.previous/domains}/media-buy/index.yaml +5 -1
  28. package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +5 -1
  29. package/compliance/cache/{3.1.15 → 3.1.20.previous}/domains/media-buy/scenarios/dependency_impairment.yaml +14 -13
  30. package/compliance/cache/{3.1.15 → 3.1.20.previous}/domains/media-buy/scenarios/dependency_impairment_cardinality.yaml +14 -13
  31. package/compliance/cache/3.1.20.previous/domains/media-buy/scenarios/inventory_list_no_match.yaml +229 -0
  32. package/compliance/cache/{3.1.15 → 3.1.20.previous}/domains/media-buy/scenarios/inventory_list_targeting.yaml +44 -61
  33. package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/measurement_terms_rejected.yaml +7 -73
  34. package/compliance/cache/{3.1.15 → 3.1.20.previous}/domains/media-buy/scenarios/pending_creatives_to_start.yaml +12 -7
  35. package/compliance/cache/{3.1.15 → 3.1.20.previous}/domains/media-buy/scenarios/refine_products.yaml +5 -1
  36. package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/index.json +3 -3
  37. package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/index.yaml +5 -1
  38. package/compliance/cache/{3.1.15/domains → 3.1.20.previous/protocols}/media-buy/scenarios/creative_fate_after_cancellation.yaml +5 -1
  39. package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/dependency_impairment.yaml +14 -13
  40. package/compliance/cache/{3.1.15.previous/domains → 3.1.20.previous/protocols}/media-buy/scenarios/dependency_impairment_cardinality.yaml +14 -13
  41. package/compliance/cache/3.1.20.previous/protocols/media-buy/scenarios/inventory_list_no_match.yaml +229 -0
  42. package/compliance/cache/{3.1.15.previous/domains → 3.1.20.previous/protocols}/media-buy/scenarios/inventory_list_targeting.yaml +44 -61
  43. package/compliance/cache/{3.1.15/domains → 3.1.20.previous/protocols}/media-buy/scenarios/measurement_terms_rejected.yaml +7 -73
  44. package/compliance/cache/{3.1.15 → 3.1.20.previous}/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +12 -7
  45. package/compliance/cache/{3.1.15 → 3.1.20.previous}/protocols/media-buy/scenarios/refine_products.yaml +5 -1
  46. package/compliance/cache/{3.1.15 → 3.1.20.previous}/specialisms/sales-broadcast-tv/index.yaml +6 -1
  47. package/compliance/cache/{3.1.15 → 3.1.20.previous}/specialisms/sales-guaranteed/index.yaml +5 -1
  48. package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/sales-proposal-mode/index.yaml +5 -1
  49. package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/acme-outdoor.yaml +10 -0
  50. package/compliance/cache/{3.1.15 → 3.1.20.previous}/universal/pagination-integrity-creative-formats.yaml +2 -2
  51. package/dist/lib/schemas-data/3.1/a2ui/bound-value.json +1 -1
  52. package/dist/lib/schemas-data/3.1/a2ui/component.json +1 -1
  53. package/dist/lib/schemas-data/3.1/a2ui/si-catalog.json +25 -25
  54. package/dist/lib/schemas-data/3.1/a2ui/surface.json +2 -2
  55. package/dist/lib/schemas-data/3.1/a2ui/user-action.json +1 -1
  56. package/dist/lib/schemas-data/3.1/aao/agent-publishers.json +1 -1
  57. package/dist/lib/schemas-data/3.1/account/get-account-financials-request.json +6 -6
  58. package/dist/lib/schemas-data/3.1/account/get-account-financials-response.json +12 -12
  59. package/dist/lib/schemas-data/3.1/account/list-accounts-request.json +6 -6
  60. package/dist/lib/schemas-data/3.1/account/list-accounts-response.json +8 -8
  61. package/dist/lib/schemas-data/3.1/account/report-usage-request.json +6 -6
  62. package/dist/lib/schemas-data/3.1/account/report-usage-response.json +6 -6
  63. package/dist/lib/schemas-data/3.1/account/sync-accounts-request.json +12 -12
  64. package/dist/lib/schemas-data/3.1/account/sync-accounts-response.json +16 -16
  65. package/dist/lib/schemas-data/3.1/account/sync-governance-request.json +6 -6
  66. package/dist/lib/schemas-data/3.1/account/sync-governance-response.json +10 -10
  67. package/dist/lib/schemas-data/3.1/adagents.json +29 -29
  68. package/dist/lib/schemas-data/3.1/brand/acquire-rights-request.json +10 -10
  69. package/dist/lib/schemas-data/3.1/brand/acquire-rights-response.json +16 -16
  70. package/dist/lib/schemas-data/3.1/brand/creative-approval-request.json +5 -5
  71. package/dist/lib/schemas-data/3.1/brand/creative-approval-response.json +12 -12
  72. package/dist/lib/schemas-data/3.1/brand/get-brand-identity-request.json +4 -4
  73. package/dist/lib/schemas-data/3.1/brand/get-brand-identity-response.json +10 -10
  74. package/dist/lib/schemas-data/3.1/brand/get-rights-request.json +8 -8
  75. package/dist/lib/schemas-data/3.1/brand/get-rights-response.json +11 -11
  76. package/dist/lib/schemas-data/3.1/brand/revocation-notification.json +4 -4
  77. package/dist/lib/schemas-data/3.1/brand/rights-pricing-option.json +5 -5
  78. package/dist/lib/schemas-data/3.1/brand/rights-terms.json +3 -3
  79. package/dist/lib/schemas-data/3.1/brand/search-brands-request.json +6 -6
  80. package/dist/lib/schemas-data/3.1/brand/search-brands-response.json +11 -11
  81. package/dist/lib/schemas-data/3.1/brand/update-rights-request.json +6 -6
  82. package/dist/lib/schemas-data/3.1/brand/update-rights-response.json +11 -11
  83. package/dist/lib/schemas-data/3.1/brand/verification-status.json +1 -1
  84. package/dist/lib/schemas-data/3.1/brand/verify-brand-claim-request.json +2 -2
  85. package/dist/lib/schemas-data/3.1/brand/verify-brand-claim-response.json +13 -13
  86. package/dist/lib/schemas-data/3.1/brand/verify-brand-claims-request.json +2 -2
  87. package/dist/lib/schemas-data/3.1/brand/verify-brand-claims-response.json +13 -13
  88. package/dist/lib/schemas-data/3.1/brand.json +21 -21
  89. package/dist/lib/schemas-data/3.1/bundled/content-standards/calibrate-content-request.json +12 -12
  90. package/dist/lib/schemas-data/3.1/bundled/content-standards/calibrate-content-response.json +12 -12
  91. package/dist/lib/schemas-data/3.1/bundled/content-standards/create-content-standards-request.json +16 -16
  92. package/dist/lib/schemas-data/3.1/bundled/content-standards/create-content-standards-response.json +10 -10
  93. package/dist/lib/schemas-data/3.1/bundled/content-standards/get-content-standards-request.json +5 -5
  94. package/dist/lib/schemas-data/3.1/bundled/content-standards/get-content-standards-response.json +23 -23
  95. package/dist/lib/schemas-data/3.1/bundled/content-standards/get-media-buy-artifacts-request.json +16 -16
  96. package/dist/lib/schemas-data/3.1/bundled/content-standards/get-media-buy-artifacts-response.json +18 -18
  97. package/dist/lib/schemas-data/3.1/bundled/content-standards/list-content-standards-request.json +7 -7
  98. package/dist/lib/schemas-data/3.1/bundled/content-standards/list-content-standards-response.json +24 -24
  99. package/dist/lib/schemas-data/3.1/bundled/content-standards/update-content-standards-request.json +16 -16
  100. package/dist/lib/schemas-data/3.1/bundled/content-standards/update-content-standards-response.json +10 -10
  101. package/dist/lib/schemas-data/3.1/bundled/content-standards/validate-content-delivery-request.json +12 -12
  102. package/dist/lib/schemas-data/3.1/bundled/content-standards/validate-content-delivery-response.json +12 -12
  103. package/dist/lib/schemas-data/3.1/bundled/core/tasks-get-request.json +16 -16
  104. package/dist/lib/schemas-data/3.1/bundled/core/tasks-get-response.json +183 -183
  105. package/dist/lib/schemas-data/3.1/bundled/core/tasks-list-request.json +21 -21
  106. package/dist/lib/schemas-data/3.1/bundled/core/tasks-list-response.json +11 -11
  107. package/dist/lib/schemas-data/3.1/bundled/creative/get-creative-delivery-request.json +17 -17
  108. package/dist/lib/schemas-data/3.1/bundled/creative/get-creative-delivery-response.json +56 -56
  109. package/dist/lib/schemas-data/3.1/bundled/creative/get-creative-features-request.json +44 -44
  110. package/dist/lib/schemas-data/3.1/bundled/creative/get-creative-features-response.json +13 -13
  111. package/dist/lib/schemas-data/3.1/bundled/creative/list-creative-formats-request.json +16 -16
  112. package/dist/lib/schemas-data/3.1/bundled/creative/list-creative-formats-response.json +48 -48
  113. package/dist/lib/schemas-data/3.1/bundled/creative/list-creatives-request.json +17 -17
  114. package/dist/lib/schemas-data/3.1/bundled/creative/list-creatives-response.json +58 -58
  115. package/dist/lib/schemas-data/3.1/bundled/creative/list-transformers-request.json +18 -18
  116. package/dist/lib/schemas-data/3.1/bundled/creative/list-transformers-response.json +16 -16
  117. package/dist/lib/schemas-data/3.1/bundled/creative/preview-creative-request.json +44 -44
  118. package/dist/lib/schemas-data/3.1/bundled/creative/preview-creative-response.json +50 -50
  119. package/dist/lib/schemas-data/3.1/bundled/creative/sync-creatives-request.json +46 -46
  120. package/dist/lib/schemas-data/3.1/bundled/creative/sync-creatives-response.json +27 -27
  121. package/dist/lib/schemas-data/3.1/bundled/creative/validate-input-request.json +42 -42
  122. package/dist/lib/schemas-data/3.1/bundled/creative/validate-input-response.json +10 -10
  123. package/dist/lib/schemas-data/3.1/bundled/media-buy/build-creative-request.json +53 -53
  124. package/dist/lib/schemas-data/3.1/bundled/media-buy/build-creative-response.json +54 -54
  125. package/dist/lib/schemas-data/3.1/bundled/media-buy/create-media-buy-request.json +83 -83
  126. package/dist/lib/schemas-data/3.1/bundled/media-buy/create-media-buy-response.json +77 -77
  127. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-media-buy-delivery-request.json +25 -25
  128. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-media-buy-delivery-response.json +40 -40
  129. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-media-buys-request.json +18 -18
  130. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-media-buys-response.json +65 -65
  131. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-products-request.json +50 -50
  132. package/dist/lib/schemas-data/3.1/bundled/media-buy/get-products-response.json +101 -101
  133. package/dist/lib/schemas-data/3.1/bundled/media-buy/list-creative-formats-request.json +12 -12
  134. package/dist/lib/schemas-data/3.1/bundled/media-buy/list-creative-formats-response.json +48 -48
  135. package/dist/lib/schemas-data/3.1/bundled/media-buy/log-event-request.json +13 -13
  136. package/dist/lib/schemas-data/3.1/bundled/media-buy/log-event-response.json +10 -10
  137. package/dist/lib/schemas-data/3.1/bundled/media-buy/package-request.json +79 -79
  138. package/dist/lib/schemas-data/3.1/bundled/media-buy/provide-performance-feedback-request.json +8 -8
  139. package/dist/lib/schemas-data/3.1/bundled/media-buy/provide-performance-feedback-response.json +10 -10
  140. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-audiences-request.json +19 -19
  141. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-audiences-response.json +13 -13
  142. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-catalogs-request.json +26 -26
  143. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-catalogs-response.json +12 -12
  144. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-event-sources-request.json +19 -19
  145. package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-event-sources-response.json +16 -16
  146. package/dist/lib/schemas-data/3.1/bundled/media-buy/update-media-buy-request.json +79 -79
  147. package/dist/lib/schemas-data/3.1/bundled/media-buy/update-media-buy-response.json +71 -71
  148. package/dist/lib/schemas-data/3.1/bundled/property/create-property-list-request.json +18 -18
  149. package/dist/lib/schemas-data/3.1/bundled/property/create-property-list-response.json +26 -26
  150. package/dist/lib/schemas-data/3.1/bundled/property/delete-property-list-request.json +16 -16
  151. package/dist/lib/schemas-data/3.1/bundled/property/delete-property-list-response.json +10 -10
  152. package/dist/lib/schemas-data/3.1/bundled/property/get-property-list-request.json +16 -16
  153. package/dist/lib/schemas-data/3.1/bundled/property/get-property-list-response.json +27 -27
  154. package/dist/lib/schemas-data/3.1/bundled/property/list-property-lists-request.json +17 -17
  155. package/dist/lib/schemas-data/3.1/bundled/property/list-property-lists-response.json +27 -27
  156. package/dist/lib/schemas-data/3.1/bundled/property/update-property-list-request.json +18 -18
  157. package/dist/lib/schemas-data/3.1/bundled/property/update-property-list-response.json +26 -26
  158. package/dist/lib/schemas-data/3.1/bundled/property/validate-property-delivery-request.json +19 -19
  159. package/dist/lib/schemas-data/3.1/bundled/property/validate-property-delivery-response.json +15 -15
  160. package/dist/lib/schemas-data/3.1/bundled/protocol/get-adcp-capabilities-request.json +5 -5
  161. package/dist/lib/schemas-data/3.1/bundled/protocol/get-adcp-capabilities-response.json +40 -40
  162. package/dist/lib/schemas-data/3.1/bundled/protocol/get-task-status-request.json +16 -16
  163. package/dist/lib/schemas-data/3.1/bundled/protocol/get-task-status-response.json +183 -183
  164. package/dist/lib/schemas-data/3.1/bundled/protocol/list-tasks-request.json +21 -21
  165. package/dist/lib/schemas-data/3.1/bundled/protocol/list-tasks-response.json +11 -11
  166. package/dist/lib/schemas-data/3.1/bundled/signals/activate-signal-request.json +17 -17
  167. package/dist/lib/schemas-data/3.1/bundled/signals/activate-signal-response.json +12 -12
  168. package/dist/lib/schemas-data/3.1/bundled/signals/get-signals-request.json +24 -24
  169. package/dist/lib/schemas-data/3.1/bundled/signals/get-signals-response.json +53 -53
  170. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-get-offering-request.json +5 -5
  171. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-get-offering-response.json +23 -23
  172. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-initiate-session-request.json +18 -18
  173. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-initiate-session-response.json +25 -25
  174. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-send-message-request.json +16 -16
  175. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-send-message-response.json +26 -26
  176. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-terminate-session-request.json +5 -5
  177. package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-terminate-session-response.json +11 -11
  178. package/dist/lib/schemas-data/3.1/collection/base-collection-source.json +3 -3
  179. package/dist/lib/schemas-data/3.1/collection/collection-list-changed-webhook.json +2 -2
  180. package/dist/lib/schemas-data/3.1/collection/collection-list-filters.json +7 -7
  181. package/dist/lib/schemas-data/3.1/collection/collection-list.json +5 -5
  182. package/dist/lib/schemas-data/3.1/collection/create-collection-list-request.json +8 -8
  183. package/dist/lib/schemas-data/3.1/collection/create-collection-list-response.json +6 -6
  184. package/dist/lib/schemas-data/3.1/collection/delete-collection-list-request.json +5 -5
  185. package/dist/lib/schemas-data/3.1/collection/delete-collection-list-response.json +5 -5
  186. package/dist/lib/schemas-data/3.1/collection/get-collection-list-request.json +5 -5
  187. package/dist/lib/schemas-data/3.1/collection/get-collection-list-response.json +12 -12
  188. package/dist/lib/schemas-data/3.1/collection/list-collection-lists-request.json +6 -6
  189. package/dist/lib/schemas-data/3.1/collection/list-collection-lists-response.json +7 -7
  190. package/dist/lib/schemas-data/3.1/collection/update-collection-list-request.json +8 -8
  191. package/dist/lib/schemas-data/3.1/collection/update-collection-list-response.json +6 -6
  192. package/dist/lib/schemas-data/3.1/content-standards/artifact-webhook-payload.json +3 -3
  193. package/dist/lib/schemas-data/3.1/content-standards/artifact.json +7 -7
  194. package/dist/lib/schemas-data/3.1/content-standards/calibrate-content-request.json +5 -5
  195. package/dist/lib/schemas-data/3.1/content-standards/calibrate-content-response.json +10 -10
  196. package/dist/lib/schemas-data/3.1/content-standards/content-standards.json +7 -7
  197. package/dist/lib/schemas-data/3.1/content-standards/create-content-standards-request.json +8 -8
  198. package/dist/lib/schemas-data/3.1/content-standards/create-content-standards-response.json +8 -8
  199. package/dist/lib/schemas-data/3.1/content-standards/get-content-standards-request.json +4 -4
  200. package/dist/lib/schemas-data/3.1/content-standards/get-content-standards-response.json +9 -9
  201. package/dist/lib/schemas-data/3.1/content-standards/get-media-buy-artifacts-request.json +5 -5
  202. package/dist/lib/schemas-data/3.1/content-standards/get-media-buy-artifacts-response.json +10 -10
  203. package/dist/lib/schemas-data/3.1/content-standards/list-content-standards-request.json +6 -6
  204. package/dist/lib/schemas-data/3.1/content-standards/list-content-standards-response.json +10 -10
  205. package/dist/lib/schemas-data/3.1/content-standards/update-content-standards-request.json +8 -8
  206. package/dist/lib/schemas-data/3.1/content-standards/update-content-standards-response.json +8 -8
  207. package/dist/lib/schemas-data/3.1/content-standards/validate-content-delivery-request.json +5 -5
  208. package/dist/lib/schemas-data/3.1/content-standards/validate-content-delivery-response.json +10 -10
  209. package/dist/lib/schemas-data/3.1/core/account-authorization.json +1 -1
  210. package/dist/lib/schemas-data/3.1/core/account-ref.json +2 -2
  211. package/dist/lib/schemas-data/3.1/core/account-with-authorization.json +3 -3
  212. package/dist/lib/schemas-data/3.1/core/account.json +10 -10
  213. package/dist/lib/schemas-data/3.1/core/activation-key.json +1 -1
  214. package/dist/lib/schemas-data/3.1/core/ad-inventory-config.json +1 -1
  215. package/dist/lib/schemas-data/3.1/core/agent-encryption-key.json +1 -1
  216. package/dist/lib/schemas-data/3.1/core/agent-signing-key.json +1 -1
  217. package/dist/lib/schemas-data/3.1/core/app-item.json +4 -4
  218. package/dist/lib/schemas-data/3.1/core/asset-group-vocabulary.json +1 -1
  219. package/dist/lib/schemas-data/3.1/core/assets/asset-union.json +21 -21
  220. package/dist/lib/schemas-data/3.1/core/assets/audio-asset.json +3 -3
  221. package/dist/lib/schemas-data/3.1/core/assets/brief-asset.json +2 -2
  222. package/dist/lib/schemas-data/3.1/core/assets/card-asset.json +6 -6
  223. package/dist/lib/schemas-data/3.1/core/assets/catalog-asset.json +2 -2
  224. package/dist/lib/schemas-data/3.1/core/assets/css-asset.json +2 -2
  225. package/dist/lib/schemas-data/3.1/core/assets/daast-asset.json +4 -4
  226. package/dist/lib/schemas-data/3.1/core/assets/daast-tracker-asset.json +3 -3
  227. package/dist/lib/schemas-data/3.1/core/assets/html-asset.json +2 -2
  228. package/dist/lib/schemas-data/3.1/core/assets/image-asset.json +2 -2
  229. package/dist/lib/schemas-data/3.1/core/assets/javascript-asset.json +3 -3
  230. package/dist/lib/schemas-data/3.1/core/assets/markdown-asset.json +2 -2
  231. package/dist/lib/schemas-data/3.1/core/assets/pixel-tracker-asset.json +2 -2
  232. package/dist/lib/schemas-data/3.1/core/assets/published-post-asset.json +2 -2
  233. package/dist/lib/schemas-data/3.1/core/assets/text-asset.json +2 -2
  234. package/dist/lib/schemas-data/3.1/core/assets/url-asset.json +3 -3
  235. package/dist/lib/schemas-data/3.1/core/assets/vast-asset.json +4 -4
  236. package/dist/lib/schemas-data/3.1/core/assets/vast-tracker-asset.json +3 -3
  237. package/dist/lib/schemas-data/3.1/core/assets/video-asset.json +7 -7
  238. package/dist/lib/schemas-data/3.1/core/assets/webhook-asset.json +7 -7
  239. package/dist/lib/schemas-data/3.1/core/assets/zip-asset.json +2 -2
  240. package/dist/lib/schemas-data/3.1/core/async-response-data.json +29 -29
  241. package/dist/lib/schemas-data/3.1/core/async-response-refs/creative/sync-creatives-async-response-input-required.json +3 -3
  242. package/dist/lib/schemas-data/3.1/core/async-response-refs/creative/sync-creatives-async-response-submitted.json +4 -4
  243. package/dist/lib/schemas-data/3.1/core/async-response-refs/creative/sync-creatives-async-response-working.json +3 -3
  244. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/build-creative-async-response-input-required.json +4 -4
  245. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/build-creative-async-response-submitted.json +4 -4
  246. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/build-creative-async-response-working.json +3 -3
  247. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/create-media-buy-async-response-input-required.json +4 -4
  248. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/create-media-buy-async-response-submitted.json +4 -4
  249. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/create-media-buy-async-response-working.json +3 -3
  250. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/get-products-async-response-input-required.json +4 -4
  251. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/get-products-async-response-submitted.json +4 -4
  252. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/get-products-async-response-working.json +3 -3
  253. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/sync-catalogs-async-response-input-required.json +3 -3
  254. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/sync-catalogs-async-response-submitted.json +4 -4
  255. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/sync-catalogs-async-response-working.json +3 -3
  256. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/update-media-buy-async-response-input-required.json +3 -3
  257. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/update-media-buy-async-response-submitted.json +4 -4
  258. package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/update-media-buy-async-response-working.json +3 -3
  259. package/dist/lib/schemas-data/3.1/core/async-response-refs/signals/get-signals-async-response-submitted.json +4 -4
  260. package/dist/lib/schemas-data/3.1/core/async-response-refs/signals/get-signals-async-response-working.json +3 -3
  261. package/dist/lib/schemas-data/3.1/core/attribution-window.json +4 -4
  262. package/dist/lib/schemas-data/3.1/core/audience-member.json +3 -3
  263. package/dist/lib/schemas-data/3.1/core/audience-selector.json +7 -7
  264. package/dist/lib/schemas-data/3.1/core/authorized-agent-base.json +3 -3
  265. package/dist/lib/schemas-data/3.1/core/brand-id.json +1 -1
  266. package/dist/lib/schemas-data/3.1/core/brand-ref.json +3 -3
  267. package/dist/lib/schemas-data/3.1/core/business-entity.json +2 -2
  268. package/dist/lib/schemas-data/3.1/core/cancellation-policy.json +2 -2
  269. package/dist/lib/schemas-data/3.1/core/canonical-format-kind.json +1 -1
  270. package/dist/lib/schemas-data/3.1/core/canonical-projection-ref.json +3 -3
  271. package/dist/lib/schemas-data/3.1/core/canonical-projection-slot-override.json +1 -1
  272. package/dist/lib/schemas-data/3.1/core/catalog-field-mapping.json +2 -2
  273. package/dist/lib/schemas-data/3.1/core/catalog-item-delivery-metrics.json +3 -3
  274. package/dist/lib/schemas-data/3.1/core/catalog.json +7 -7
  275. package/dist/lib/schemas-data/3.1/core/catchment.json +5 -5
  276. package/dist/lib/schemas-data/3.1/core/collection-distribution.json +2 -2
  277. package/dist/lib/schemas-data/3.1/core/collection-list-ref.json +1 -1
  278. package/dist/lib/schemas-data/3.1/core/collection-selector.json +1 -1
  279. package/dist/lib/schemas-data/3.1/core/collection.json +13 -13
  280. package/dist/lib/schemas-data/3.1/core/committed-metric.json +9 -9
  281. package/dist/lib/schemas-data/3.1/core/content-rating.json +2 -2
  282. package/dist/lib/schemas-data/3.1/core/context.json +1 -1
  283. package/dist/lib/schemas-data/3.1/core/creative-asset.json +10 -10
  284. package/dist/lib/schemas-data/3.1/core/creative-assignment.json +2 -2
  285. package/dist/lib/schemas-data/3.1/core/creative-brief.json +4 -4
  286. package/dist/lib/schemas-data/3.1/core/creative-consumption.json +1 -1
  287. package/dist/lib/schemas-data/3.1/core/creative-delivery-metrics.json +2 -2
  288. package/dist/lib/schemas-data/3.1/core/creative-filters.json +5 -5
  289. package/dist/lib/schemas-data/3.1/core/creative-item.json +1 -1
  290. package/dist/lib/schemas-data/3.1/core/creative-manifest.json +11 -11
  291. package/dist/lib/schemas-data/3.1/core/creative-policy.json +3 -3
  292. package/dist/lib/schemas-data/3.1/core/creative-variable.json +1 -1
  293. package/dist/lib/schemas-data/3.1/core/creative-variant.json +5 -5
  294. package/dist/lib/schemas-data/3.1/core/data-provider-signal-selector.json +1 -1
  295. package/dist/lib/schemas-data/3.1/core/date-range.json +1 -1
  296. package/dist/lib/schemas-data/3.1/core/datetime-range.json +1 -1
  297. package/dist/lib/schemas-data/3.1/core/daypart-target.json +2 -2
  298. package/dist/lib/schemas-data/3.1/core/deadline-policy.json +1 -1
  299. package/dist/lib/schemas-data/3.1/core/delivery-forecast.json +7 -7
  300. package/dist/lib/schemas-data/3.1/core/delivery-metric-aggregate.json +9 -9
  301. package/dist/lib/schemas-data/3.1/core/delivery-metrics.json +8 -8
  302. package/dist/lib/schemas-data/3.1/core/deployment.json +3 -3
  303. package/dist/lib/schemas-data/3.1/core/destination-item.json +4 -4
  304. package/dist/lib/schemas-data/3.1/core/destination.json +1 -1
  305. package/dist/lib/schemas-data/3.1/core/diagnostic-issue.json +1 -1
  306. package/dist/lib/schemas-data/3.1/core/downstream-connection-requirement.json +1 -1
  307. package/dist/lib/schemas-data/3.1/core/duration.json +1 -1
  308. package/dist/lib/schemas-data/3.1/core/education-item.json +4 -4
  309. package/dist/lib/schemas-data/3.1/core/error.json +1 -1
  310. package/dist/lib/schemas-data/3.1/core/evaluator-spec.json +5 -5
  311. package/dist/lib/schemas-data/3.1/core/event-custom-data.json +2 -2
  312. package/dist/lib/schemas-data/3.1/core/event-source-health.json +3 -3
  313. package/dist/lib/schemas-data/3.1/core/event-surface.json +2 -2
  314. package/dist/lib/schemas-data/3.1/core/event.json +8 -8
  315. package/dist/lib/schemas-data/3.1/core/ext.json +1 -1
  316. package/dist/lib/schemas-data/3.1/core/feature-requirement.json +1 -1
  317. package/dist/lib/schemas-data/3.1/core/flight-item.json +4 -4
  318. package/dist/lib/schemas-data/3.1/core/forecast-dimension-audience.json +2 -2
  319. package/dist/lib/schemas-data/3.1/core/forecast-dimension-device-platform.json +2 -2
  320. package/dist/lib/schemas-data/3.1/core/forecast-dimension-device-type.json +2 -2
  321. package/dist/lib/schemas-data/3.1/core/forecast-dimension-geo.json +5 -5
  322. package/dist/lib/schemas-data/3.1/core/forecast-dimension-placement.json +2 -2
  323. package/dist/lib/schemas-data/3.1/core/forecast-dimension-signal.json +2 -2
  324. package/dist/lib/schemas-data/3.1/core/forecast-point-dimensions.json +7 -7
  325. package/dist/lib/schemas-data/3.1/core/forecast-point.json +27 -27
  326. package/dist/lib/schemas-data/3.1/core/forecast-range.json +1 -1
  327. package/dist/lib/schemas-data/3.1/core/forecast-vendor-metric-value.json +5 -5
  328. package/dist/lib/schemas-data/3.1/core/format-id.json +1 -1
  329. package/dist/lib/schemas-data/3.1/core/format-option-ref.json +1 -1
  330. package/dist/lib/schemas-data/3.1/core/format-shape-vocabulary.json +1 -1
  331. package/dist/lib/schemas-data/3.1/core/format.json +44 -44
  332. package/dist/lib/schemas-data/3.1/core/frequency-cap.json +4 -4
  333. package/dist/lib/schemas-data/3.1/core/generation-credential.json +3 -3
  334. package/dist/lib/schemas-data/3.1/core/geo-breakdown-support.json +3 -3
  335. package/dist/lib/schemas-data/3.1/core/geo-delivery-metrics.json +6 -6
  336. package/dist/lib/schemas-data/3.1/core/hotel-item.json +4 -4
  337. package/dist/lib/schemas-data/3.1/core/identifier.json +2 -2
  338. package/dist/lib/schemas-data/3.1/core/impairment.json +3 -3
  339. package/dist/lib/schemas-data/3.1/core/industry-identifier.json +2 -2
  340. package/dist/lib/schemas-data/3.1/core/insertion-order.json +1 -1
  341. package/dist/lib/schemas-data/3.1/core/installment-deadlines.json +2 -2
  342. package/dist/lib/schemas-data/3.1/core/installment.json +9 -9
  343. package/dist/lib/schemas-data/3.1/core/job-item.json +3 -3
  344. package/dist/lib/schemas-data/3.1/core/keyword-delivery-metrics.json +3 -3
  345. package/dist/lib/schemas-data/3.1/core/limited-series.json +1 -1
  346. package/dist/lib/schemas-data/3.1/core/material-deadline.json +1 -1
  347. package/dist/lib/schemas-data/3.1/core/mcp-webhook-payload.json +5 -5
  348. package/dist/lib/schemas-data/3.1/core/measurement-readiness.json +5 -5
  349. package/dist/lib/schemas-data/3.1/core/measurement-terms.json +3 -3
  350. package/dist/lib/schemas-data/3.1/core/measurement-window.json +1 -1
  351. package/dist/lib/schemas-data/3.1/core/media-buy-available-action.json +4 -4
  352. package/dist/lib/schemas-data/3.1/core/media-buy-features.json +2 -2
  353. package/dist/lib/schemas-data/3.1/core/media-buy.json +10 -10
  354. package/dist/lib/schemas-data/3.1/core/missing-metric.json +9 -9
  355. package/dist/lib/schemas-data/3.1/core/notification-config.json +4 -4
  356. package/dist/lib/schemas-data/3.1/core/offering-asset-group.json +16 -16
  357. package/dist/lib/schemas-data/3.1/core/offering.json +5 -5
  358. package/dist/lib/schemas-data/3.1/core/optimization-goal.json +7 -7
  359. package/dist/lib/schemas-data/3.1/core/outcome-measurement.json +2 -2
  360. package/dist/lib/schemas-data/3.1/core/overlay.json +1 -1
  361. package/dist/lib/schemas-data/3.1/core/package-signal-targeting-group.json +2 -2
  362. package/dist/lib/schemas-data/3.1/core/package-signal-targeting-groups.json +2 -2
  363. package/dist/lib/schemas-data/3.1/core/package-signal-targeting.json +3 -3
  364. package/dist/lib/schemas-data/3.1/core/package.json +17 -17
  365. package/dist/lib/schemas-data/3.1/core/pagination-request.json +1 -1
  366. package/dist/lib/schemas-data/3.1/core/pagination-response.json +1 -1
  367. package/dist/lib/schemas-data/3.1/core/performance-feedback.json +12 -12
  368. package/dist/lib/schemas-data/3.1/core/performance-standard.json +4 -4
  369. package/dist/lib/schemas-data/3.1/core/placement-definition.json +10 -10
  370. package/dist/lib/schemas-data/3.1/core/placement-ref.json +1 -1
  371. package/dist/lib/schemas-data/3.1/core/placement.json +7 -7
  372. package/dist/lib/schemas-data/3.1/core/planned-delivery.json +5 -5
  373. package/dist/lib/schemas-data/3.1/core/platform-extension-ref.json +1 -1
  374. package/dist/lib/schemas-data/3.1/core/postal-area-support.json +2 -2
  375. package/dist/lib/schemas-data/3.1/core/postal-area.json +4 -4
  376. package/dist/lib/schemas-data/3.1/core/postal-country-system.json +2 -2
  377. package/dist/lib/schemas-data/3.1/core/price.json +1 -1
  378. package/dist/lib/schemas-data/3.1/core/pricing-option.json +10 -10
  379. package/dist/lib/schemas-data/3.1/core/product-allocation.json +4 -4
  380. package/dist/lib/schemas-data/3.1/core/product-allowed-action.json +5 -5
  381. package/dist/lib/schemas-data/3.1/core/product-filters.json +27 -27
  382. package/dist/lib/schemas-data/3.1/core/product-format-declaration.json +16 -16
  383. package/dist/lib/schemas-data/3.1/core/product-signal-targeting-option.json +3 -3
  384. package/dist/lib/schemas-data/3.1/core/product.json +40 -40
  385. package/dist/lib/schemas-data/3.1/core/property-id.json +1 -1
  386. package/dist/lib/schemas-data/3.1/core/property-list-ref.json +1 -1
  387. package/dist/lib/schemas-data/3.1/core/property-tag.json +1 -1
  388. package/dist/lib/schemas-data/3.1/core/property.json +6 -6
  389. package/dist/lib/schemas-data/3.1/core/proposal.json +6 -6
  390. package/dist/lib/schemas-data/3.1/core/protocol-envelope.json +5 -5
  391. package/dist/lib/schemas-data/3.1/core/provenance.json +9 -9
  392. package/dist/lib/schemas-data/3.1/core/publisher-property-selector.json +3 -3
  393. package/dist/lib/schemas-data/3.1/core/push-notification-config.json +2 -2
  394. package/dist/lib/schemas-data/3.1/core/real-estate-item.json +4 -4
  395. package/dist/lib/schemas-data/3.1/core/reference-asset.json +1 -1
  396. package/dist/lib/schemas-data/3.1/core/registry-event.json +14 -14
  397. package/dist/lib/schemas-data/3.1/core/registry-feed-response.json +2 -2
  398. package/dist/lib/schemas-data/3.1/core/reporting-capabilities.json +8 -8
  399. package/dist/lib/schemas-data/3.1/core/reporting-webhook.json +3 -3
  400. package/dist/lib/schemas-data/3.1/core/requirements/asset-requirements.json +13 -13
  401. package/dist/lib/schemas-data/3.1/core/requirements/audio-asset-requirements.json +1 -1
  402. package/dist/lib/schemas-data/3.1/core/requirements/catalog-field-binding.json +4 -4
  403. package/dist/lib/schemas-data/3.1/core/requirements/catalog-requirements.json +5 -5
  404. package/dist/lib/schemas-data/3.1/core/requirements/css-asset-requirements.json +1 -1
  405. package/dist/lib/schemas-data/3.1/core/requirements/daast-asset-requirements.json +1 -1
  406. package/dist/lib/schemas-data/3.1/core/requirements/html-asset-requirements.json +1 -1
  407. package/dist/lib/schemas-data/3.1/core/requirements/image-asset-requirements.json +2 -2
  408. package/dist/lib/schemas-data/3.1/core/requirements/javascript-asset-requirements.json +1 -1
  409. package/dist/lib/schemas-data/3.1/core/requirements/markdown-asset-requirements.json +1 -1
  410. package/dist/lib/schemas-data/3.1/core/requirements/offering-asset-constraint.json +4 -4
  411. package/dist/lib/schemas-data/3.1/core/requirements/text-asset-requirements.json +1 -1
  412. package/dist/lib/schemas-data/3.1/core/requirements/url-asset-requirements.json +1 -1
  413. package/dist/lib/schemas-data/3.1/core/requirements/vast-asset-requirements.json +1 -1
  414. package/dist/lib/schemas-data/3.1/core/requirements/video-asset-requirements.json +6 -6
  415. package/dist/lib/schemas-data/3.1/core/requirements/webhook-asset-requirements.json +1 -1
  416. package/dist/lib/schemas-data/3.1/core/response-payload-jws-envelope.json +1 -1
  417. package/dist/lib/schemas-data/3.1/core/response.json +1 -1
  418. package/dist/lib/schemas-data/3.1/core/rights-constraint.json +4 -4
  419. package/dist/lib/schemas-data/3.1/core/seller-agent-ref.json +1 -1
  420. package/dist/lib/schemas-data/3.1/core/signal-coverage-forecast.json +5 -5
  421. package/dist/lib/schemas-data/3.1/core/signal-definition-enrichment.json +4 -4
  422. package/dist/lib/schemas-data/3.1/core/signal-definition.json +5 -5
  423. package/dist/lib/schemas-data/3.1/core/signal-filters.json +3 -3
  424. package/dist/lib/schemas-data/3.1/core/signal-id.json +1 -1
  425. package/dist/lib/schemas-data/3.1/core/signal-listing.json +4 -4
  426. package/dist/lib/schemas-data/3.1/core/signal-modeling-disclosure.json +1 -1
  427. package/dist/lib/schemas-data/3.1/core/signal-pricing-option.json +2 -2
  428. package/dist/lib/schemas-data/3.1/core/signal-pricing.json +6 -6
  429. package/dist/lib/schemas-data/3.1/core/signal-ref.json +1 -1
  430. package/dist/lib/schemas-data/3.1/core/signal-selection-group-rule.json +1 -1
  431. package/dist/lib/schemas-data/3.1/core/signal-targeting-expression.json +4 -4
  432. package/dist/lib/schemas-data/3.1/core/signal-targeting-rules.json +2 -2
  433. package/dist/lib/schemas-data/3.1/core/signal-targeting.json +7 -7
  434. package/dist/lib/schemas-data/3.1/core/sla-window.json +1 -1
  435. package/dist/lib/schemas-data/3.1/core/special.json +2 -2
  436. package/dist/lib/schemas-data/3.1/core/start-timing.json +1 -1
  437. package/dist/lib/schemas-data/3.1/core/store-item.json +3 -3
  438. package/dist/lib/schemas-data/3.1/core/talent.json +2 -2
  439. package/dist/lib/schemas-data/3.1/core/targeting.json +22 -22
  440. package/dist/lib/schemas-data/3.1/core/tasks-get-request.json +5 -5
  441. package/dist/lib/schemas-data/3.1/core/tasks-get-response.json +10 -10
  442. package/dist/lib/schemas-data/3.1/core/tasks-list-request.json +13 -13
  443. package/dist/lib/schemas-data/3.1/core/tasks-list-response.json +8 -8
  444. package/dist/lib/schemas-data/3.1/core/transformer-param.json +1 -1
  445. package/dist/lib/schemas-data/3.1/core/transformer.json +5 -5
  446. package/dist/lib/schemas-data/3.1/core/truncation-sentinel.json +1 -1
  447. package/dist/lib/schemas-data/3.1/core/user-match.json +3 -3
  448. package/dist/lib/schemas-data/3.1/core/vehicle-item.json +4 -4
  449. package/dist/lib/schemas-data/3.1/core/vendor-metric-id.json +1 -1
  450. package/dist/lib/schemas-data/3.1/core/vendor-metric-optimization-supported-metric.json +3 -3
  451. package/dist/lib/schemas-data/3.1/core/vendor-metric-optimization.json +2 -2
  452. package/dist/lib/schemas-data/3.1/core/vendor-metric-value.json +3 -3
  453. package/dist/lib/schemas-data/3.1/core/vendor-pricing-option.json +3 -3
  454. package/dist/lib/schemas-data/3.1/core/version-envelope.json +1 -1
  455. package/dist/lib/schemas-data/3.1/core/webhook-activity-record.json +3 -3
  456. package/dist/lib/schemas-data/3.1/core/webhook-challenge-response.json +1 -1
  457. package/dist/lib/schemas-data/3.1/core/webhook-challenge.json +2 -2
  458. package/dist/lib/schemas-data/3.1/core/wholesale-feed-event.json +17 -17
  459. package/dist/lib/schemas-data/3.1/core/wholesale-feed-webhook.json +3 -3
  460. package/dist/lib/schemas-data/3.1/core/x-entity-types.json +1 -1
  461. package/dist/lib/schemas-data/3.1/creative/asset-types/index.json +6 -6
  462. package/dist/lib/schemas-data/3.1/creative/audit-observation.json +2 -2
  463. package/dist/lib/schemas-data/3.1/creative/creative-feature-result.json +2 -2
  464. package/dist/lib/schemas-data/3.1/creative/creative-purged-webhook.json +3 -3
  465. package/dist/lib/schemas-data/3.1/creative/creative-status-changed-webhook.json +4 -4
  466. package/dist/lib/schemas-data/3.1/creative/get-creative-delivery-request.json +6 -6
  467. package/dist/lib/schemas-data/3.1/creative/get-creative-delivery-response.json +9 -9
  468. package/dist/lib/schemas-data/3.1/creative/get-creative-features-request.json +6 -6
  469. package/dist/lib/schemas-data/3.1/creative/get-creative-features-response.json +11 -11
  470. package/dist/lib/schemas-data/3.1/creative/list-creative-formats-request.json +13 -13
  471. package/dist/lib/schemas-data/3.1/creative/list-creative-formats-response.json +9 -9
  472. package/dist/lib/schemas-data/3.1/creative/list-creatives-request.json +9 -9
  473. package/dist/lib/schemas-data/3.1/creative/list-creatives-response.json +21 -21
  474. package/dist/lib/schemas-data/3.1/creative/list-transformers-request.json +8 -8
  475. package/dist/lib/schemas-data/3.1/creative/list-transformers-response.json +8 -8
  476. package/dist/lib/schemas-data/3.1/creative/preview-creative-request.json +12 -12
  477. package/dist/lib/schemas-data/3.1/creative/preview-creative-response.json +14 -14
  478. package/dist/lib/schemas-data/3.1/creative/preview-render.json +1 -1
  479. package/dist/lib/schemas-data/3.1/creative/sync-creatives-async-response-input-required.json +3 -3
  480. package/dist/lib/schemas-data/3.1/creative/sync-creatives-async-response-submitted.json +4 -4
  481. package/dist/lib/schemas-data/3.1/creative/sync-creatives-async-response-working.json +3 -3
  482. package/dist/lib/schemas-data/3.1/creative/sync-creatives-request.json +8 -8
  483. package/dist/lib/schemas-data/3.1/creative/sync-creatives-response.json +15 -15
  484. package/dist/lib/schemas-data/3.1/creative/validate-input-request.json +4 -4
  485. package/dist/lib/schemas-data/3.1/creative/validate-input-response.json +4 -4
  486. package/dist/lib/schemas-data/3.1/creative/validate-input-result.json +1 -1
  487. package/dist/lib/schemas-data/3.1/creative/video-brief.json +1 -1
  488. package/dist/lib/schemas-data/3.1/enums/account-scope.json +1 -1
  489. package/dist/lib/schemas-data/3.1/enums/account-status.json +1 -1
  490. package/dist/lib/schemas-data/3.1/enums/action-not-allowed-reason.json +1 -1
  491. package/dist/lib/schemas-data/3.1/enums/action-source.json +1 -1
  492. package/dist/lib/schemas-data/3.1/enums/adcp-protocol.json +1 -1
  493. package/dist/lib/schemas-data/3.1/enums/adjustment-kind.json +1 -1
  494. package/dist/lib/schemas-data/3.1/enums/advertiser-industry.json +1 -1
  495. package/dist/lib/schemas-data/3.1/enums/age-verification-method.json +1 -1
  496. package/dist/lib/schemas-data/3.1/enums/assessment-status.json +1 -1
  497. package/dist/lib/schemas-data/3.1/enums/asset-content-type.json +1 -1
  498. package/dist/lib/schemas-data/3.1/enums/attestation-claim.json +1 -1
  499. package/dist/lib/schemas-data/3.1/enums/attribution-methodology.json +1 -1
  500. package/dist/lib/schemas-data/3.1/enums/attribution-model.json +1 -1
  501. package/dist/lib/schemas-data/3.1/enums/audience-source.json +1 -1
  502. package/dist/lib/schemas-data/3.1/enums/audience-status.json +1 -1
  503. package/dist/lib/schemas-data/3.1/enums/audio-channel-layout.json +1 -1
  504. package/dist/lib/schemas-data/3.1/enums/audio-distribution-type.json +1 -1
  505. package/dist/lib/schemas-data/3.1/enums/auth-scheme.json +1 -1
  506. package/dist/lib/schemas-data/3.1/enums/available-metric.json +1 -1
  507. package/dist/lib/schemas-data/3.1/enums/billing-party.json +1 -1
  508. package/dist/lib/schemas-data/3.1/enums/binary-verdict.json +1 -1
  509. package/dist/lib/schemas-data/3.1/enums/brand-agent-type.json +1 -1
  510. package/dist/lib/schemas-data/3.1/enums/c2pa-watermark-action.json +1 -1
  511. package/dist/lib/schemas-data/3.1/enums/canceled-by.json +1 -1
  512. package/dist/lib/schemas-data/3.1/enums/catalog-action.json +1 -1
  513. package/dist/lib/schemas-data/3.1/enums/catalog-item-status.json +1 -1
  514. package/dist/lib/schemas-data/3.1/enums/catalog-type.json +1 -1
  515. package/dist/lib/schemas-data/3.1/enums/channels.json +1 -1
  516. package/dist/lib/schemas-data/3.1/enums/cloud-storage-protocol.json +1 -1
  517. package/dist/lib/schemas-data/3.1/enums/co-branding-requirement.json +1 -1
  518. package/dist/lib/schemas-data/3.1/enums/collection-cadence.json +1 -1
  519. package/dist/lib/schemas-data/3.1/enums/collection-kind.json +1 -1
  520. package/dist/lib/schemas-data/3.1/enums/collection-relationship.json +1 -1
  521. package/dist/lib/schemas-data/3.1/enums/collection-status.json +1 -1
  522. package/dist/lib/schemas-data/3.1/enums/completion-source.json +1 -1
  523. package/dist/lib/schemas-data/3.1/enums/consent-basis.json +1 -1
  524. package/dist/lib/schemas-data/3.1/enums/content-id-type.json +1 -1
  525. package/dist/lib/schemas-data/3.1/enums/content-rating-system.json +1 -1
  526. package/dist/lib/schemas-data/3.1/enums/creative-action.json +1 -1
  527. package/dist/lib/schemas-data/3.1/enums/creative-agent-capability.json +1 -1
  528. package/dist/lib/schemas-data/3.1/enums/creative-approval-status.json +1 -1
  529. package/dist/lib/schemas-data/3.1/enums/creative-event-reason-code.json +1 -1
  530. package/dist/lib/schemas-data/3.1/enums/creative-identifier-type.json +1 -1
  531. package/dist/lib/schemas-data/3.1/enums/creative-quality.json +1 -1
  532. package/dist/lib/schemas-data/3.1/enums/creative-selection-strategy.json +1 -1
  533. package/dist/lib/schemas-data/3.1/enums/creative-sort-field.json +1 -1
  534. package/dist/lib/schemas-data/3.1/enums/creative-status.json +1 -1
  535. package/dist/lib/schemas-data/3.1/enums/daast-tracking-event.json +1 -1
  536. package/dist/lib/schemas-data/3.1/enums/daast-version.json +1 -1
  537. package/dist/lib/schemas-data/3.1/enums/day-of-week.json +1 -1
  538. package/dist/lib/schemas-data/3.1/enums/delegation-authority.json +1 -1
  539. package/dist/lib/schemas-data/3.1/enums/delivery-type.json +1 -1
  540. package/dist/lib/schemas-data/3.1/enums/demographic-system.json +1 -1
  541. package/dist/lib/schemas-data/3.1/enums/derivative-type.json +1 -1
  542. package/dist/lib/schemas-data/3.1/enums/device-platform.json +1 -1
  543. package/dist/lib/schemas-data/3.1/enums/device-type.json +1 -1
  544. package/dist/lib/schemas-data/3.1/enums/digital-source-type.json +1 -1
  545. package/dist/lib/schemas-data/3.1/enums/dimension-unit.json +1 -1
  546. package/dist/lib/schemas-data/3.1/enums/disclosure-persistence.json +1 -1
  547. package/dist/lib/schemas-data/3.1/enums/disclosure-position.json +1 -1
  548. package/dist/lib/schemas-data/3.1/enums/distance-unit.json +1 -1
  549. package/dist/lib/schemas-data/3.1/enums/distribution-identifier-type.json +1 -1
  550. package/dist/lib/schemas-data/3.1/enums/embedded-provenance-method.json +1 -1
  551. package/dist/lib/schemas-data/3.1/enums/error-code.json +1 -1
  552. package/dist/lib/schemas-data/3.1/enums/error-scope.json +1 -1
  553. package/dist/lib/schemas-data/3.1/enums/escalation-severity.json +1 -1
  554. package/dist/lib/schemas-data/3.1/enums/event-type.json +1 -1
  555. package/dist/lib/schemas-data/3.1/enums/exclusivity.json +1 -1
  556. package/dist/lib/schemas-data/3.1/enums/feature-check-status.json +1 -1
  557. package/dist/lib/schemas-data/3.1/enums/feed-format.json +1 -1
  558. package/dist/lib/schemas-data/3.1/enums/feedback-source.json +1 -1
  559. package/dist/lib/schemas-data/3.1/enums/forecast-method.json +1 -1
  560. package/dist/lib/schemas-data/3.1/enums/forecast-range-unit.json +1 -1
  561. package/dist/lib/schemas-data/3.1/enums/forecastable-metric.json +1 -1
  562. package/dist/lib/schemas-data/3.1/enums/format-id-parameter.json +1 -1
  563. package/dist/lib/schemas-data/3.1/enums/frame-rate-type.json +1 -1
  564. package/dist/lib/schemas-data/3.1/enums/frequency-cap-scope.json +1 -1
  565. package/dist/lib/schemas-data/3.1/enums/genre-taxonomy.json +3 -3
  566. package/dist/lib/schemas-data/3.1/enums/geo-level.json +1 -1
  567. package/dist/lib/schemas-data/3.1/enums/gop-type.json +1 -1
  568. package/dist/lib/schemas-data/3.1/enums/governance-decision.json +1 -1
  569. package/dist/lib/schemas-data/3.1/enums/governance-domain.json +1 -1
  570. package/dist/lib/schemas-data/3.1/enums/governance-mode.json +1 -1
  571. package/dist/lib/schemas-data/3.1/enums/governance-phase.json +1 -1
  572. package/dist/lib/schemas-data/3.1/enums/history-entry-type.json +1 -1
  573. package/dist/lib/schemas-data/3.1/enums/http-method.json +1 -1
  574. package/dist/lib/schemas-data/3.1/enums/identifier-types.json +1 -1
  575. package/dist/lib/schemas-data/3.1/enums/impairment-offline-state.json +1 -1
  576. package/dist/lib/schemas-data/3.1/enums/impairment-reason-code.json +1 -1
  577. package/dist/lib/schemas-data/3.1/enums/installment-status.json +1 -1
  578. package/dist/lib/schemas-data/3.1/enums/javascript-module-type.json +1 -1
  579. package/dist/lib/schemas-data/3.1/enums/landing-page-requirement.json +1 -1
  580. package/dist/lib/schemas-data/3.1/enums/legacy-postal-system.json +1 -1
  581. package/dist/lib/schemas-data/3.1/enums/lift-dimension.json +1 -1
  582. package/dist/lib/schemas-data/3.1/enums/logo-slot.json +1 -1
  583. package/dist/lib/schemas-data/3.1/enums/makegood-remedy.json +1 -1
  584. package/dist/lib/schemas-data/3.1/enums/markdown-flavor.json +1 -1
  585. package/dist/lib/schemas-data/3.1/enums/match-id-type.json +3 -3
  586. package/dist/lib/schemas-data/3.1/enums/match-type.json +1 -1
  587. package/dist/lib/schemas-data/3.1/enums/media-buy-action-mode.json +1 -1
  588. package/dist/lib/schemas-data/3.1/enums/media-buy-health.json +1 -1
  589. package/dist/lib/schemas-data/3.1/enums/media-buy-status.json +1 -1
  590. package/dist/lib/schemas-data/3.1/enums/media-buy-valid-action.json +1 -1
  591. package/dist/lib/schemas-data/3.1/enums/metric-scope.json +1 -1
  592. package/dist/lib/schemas-data/3.1/enums/metric-type.json +1 -1
  593. package/dist/lib/schemas-data/3.1/enums/metro-system.json +1 -1
  594. package/dist/lib/schemas-data/3.1/enums/moov-atom-position.json +1 -1
  595. package/dist/lib/schemas-data/3.1/enums/notification-type.json +1 -1
  596. package/dist/lib/schemas-data/3.1/enums/offering-availability-status.json +1 -1
  597. package/dist/lib/schemas-data/3.1/enums/outcome-type.json +1 -1
  598. package/dist/lib/schemas-data/3.1/enums/pacing.json +1 -1
  599. package/dist/lib/schemas-data/3.1/enums/payment-terms.json +1 -1
  600. package/dist/lib/schemas-data/3.1/enums/performance-standard-metric.json +1 -1
  601. package/dist/lib/schemas-data/3.1/enums/policy-category.json +1 -1
  602. package/dist/lib/schemas-data/3.1/enums/policy-enforcement.json +1 -1
  603. package/dist/lib/schemas-data/3.1/enums/postal-system.json +1 -1
  604. package/dist/lib/schemas-data/3.1/enums/preview-output-format.json +1 -1
  605. package/dist/lib/schemas-data/3.1/enums/pricing-model.json +1 -1
  606. package/dist/lib/schemas-data/3.1/enums/production-quality.json +1 -1
  607. package/dist/lib/schemas-data/3.1/enums/property-type.json +1 -1
  608. package/dist/lib/schemas-data/3.1/enums/proposal-status.json +1 -1
  609. package/dist/lib/schemas-data/3.1/enums/publisher-identifier-types.json +1 -1
  610. package/dist/lib/schemas-data/3.1/enums/purchase-type.json +1 -1
  611. package/dist/lib/schemas-data/3.1/enums/reach-unit.json +1 -1
  612. package/dist/lib/schemas-data/3.1/enums/reporting-frequency.json +1 -1
  613. package/dist/lib/schemas-data/3.1/enums/response-type.json +1 -1
  614. package/dist/lib/schemas-data/3.1/enums/restricted-attribute.json +1 -1
  615. package/dist/lib/schemas-data/3.1/enums/right-type.json +1 -1
  616. package/dist/lib/schemas-data/3.1/enums/right-use.json +1 -1
  617. package/dist/lib/schemas-data/3.1/enums/rights-billing-period.json +1 -1
  618. package/dist/lib/schemas-data/3.1/enums/scan-type.json +1 -1
  619. package/dist/lib/schemas-data/3.1/enums/si-session-status.json +1 -1
  620. package/dist/lib/schemas-data/3.1/enums/signal-catalog-type.json +1 -1
  621. package/dist/lib/schemas-data/3.1/enums/signal-source.json +1 -1
  622. package/dist/lib/schemas-data/3.1/enums/signal-value-type.json +1 -1
  623. package/dist/lib/schemas-data/3.1/enums/snapshot-unavailable-reason.json +1 -1
  624. package/dist/lib/schemas-data/3.1/enums/social-placement-surface.json +1 -1
  625. package/dist/lib/schemas-data/3.1/enums/sort-direction.json +1 -1
  626. package/dist/lib/schemas-data/3.1/enums/sort-metric.json +1 -1
  627. package/dist/lib/schemas-data/3.1/enums/special-category.json +1 -1
  628. package/dist/lib/schemas-data/3.1/enums/specialism.json +1 -1
  629. package/dist/lib/schemas-data/3.1/enums/sponsored-placement-type.json +1 -1
  630. package/dist/lib/schemas-data/3.1/enums/talent-role.json +1 -1
  631. package/dist/lib/schemas-data/3.1/enums/task-status.json +1 -1
  632. package/dist/lib/schemas-data/3.1/enums/task-type.json +1 -1
  633. package/dist/lib/schemas-data/3.1/enums/transport-mode.json +1 -1
  634. package/dist/lib/schemas-data/3.1/enums/travel-time-unit.json +1 -1
  635. package/dist/lib/schemas-data/3.1/enums/uid-type.json +3 -3
  636. package/dist/lib/schemas-data/3.1/enums/universal-macro.json +1 -1
  637. package/dist/lib/schemas-data/3.1/enums/update-frequency.json +1 -1
  638. package/dist/lib/schemas-data/3.1/enums/url-asset-type.json +1 -1
  639. package/dist/lib/schemas-data/3.1/enums/validation-mode.json +1 -1
  640. package/dist/lib/schemas-data/3.1/enums/vast-tracking-event.json +1 -1
  641. package/dist/lib/schemas-data/3.1/enums/vast-version.json +1 -1
  642. package/dist/lib/schemas-data/3.1/enums/video-placement-type.json +1 -1
  643. package/dist/lib/schemas-data/3.1/enums/viewability-standard.json +1 -1
  644. package/dist/lib/schemas-data/3.1/enums/watermark-media-type.json +1 -1
  645. package/dist/lib/schemas-data/3.1/enums/wcag-level.json +1 -1
  646. package/dist/lib/schemas-data/3.1/enums/webhook-response-type.json +1 -1
  647. package/dist/lib/schemas-data/3.1/enums/webhook-security-method.json +1 -1
  648. package/dist/lib/schemas-data/3.1/error-details/account-setup-required.json +1 -1
  649. package/dist/lib/schemas-data/3.1/error-details/action-not-allowed.json +4 -4
  650. package/dist/lib/schemas-data/3.1/error-details/agent-permission-denied.json +1 -1
  651. package/dist/lib/schemas-data/3.1/error-details/audience-too-small.json +1 -1
  652. package/dist/lib/schemas-data/3.1/error-details/authorization-required.json +3 -3
  653. package/dist/lib/schemas-data/3.1/error-details/billing-not-permitted-for-agent.json +3 -3
  654. package/dist/lib/schemas-data/3.1/error-details/billing-not-supported.json +2 -2
  655. package/dist/lib/schemas-data/3.1/error-details/budget-too-low.json +1 -1
  656. package/dist/lib/schemas-data/3.1/error-details/conflict.json +1 -1
  657. package/dist/lib/schemas-data/3.1/error-details/creative-rejected.json +1 -1
  658. package/dist/lib/schemas-data/3.1/error-details/policy-violation.json +1 -1
  659. package/dist/lib/schemas-data/3.1/error-details/rate-limited.json +1 -1
  660. package/dist/lib/schemas-data/3.1/error-details/stale-response.json +1 -1
  661. package/dist/lib/schemas-data/3.1/error-details/vendor-error-codes.json +1 -1
  662. package/dist/lib/schemas-data/3.1/error-details/version-unsupported.json +2 -2
  663. package/dist/lib/schemas-data/3.1/extensions/extension-meta.json +1 -1
  664. package/dist/lib/schemas-data/3.1/extensions/index.json +2 -2
  665. package/dist/lib/schemas-data/3.1/formats/canonical/_base.json +5 -5
  666. package/dist/lib/schemas-data/3.1/formats/canonical/agent_placement.json +2 -2
  667. package/dist/lib/schemas-data/3.1/formats/canonical/audio_daast.json +2 -2
  668. package/dist/lib/schemas-data/3.1/formats/canonical/audio_hosted.json +2 -2
  669. package/dist/lib/schemas-data/3.1/formats/canonical/display_tag.json +2 -2
  670. package/dist/lib/schemas-data/3.1/formats/canonical/html5.json +2 -2
  671. package/dist/lib/schemas-data/3.1/formats/canonical/image.json +2 -2
  672. package/dist/lib/schemas-data/3.1/formats/canonical/image_carousel.json +2 -2
  673. package/dist/lib/schemas-data/3.1/formats/canonical/native_in_feed.json +2 -2
  674. package/dist/lib/schemas-data/3.1/formats/canonical/responsive_creative.json +2 -2
  675. package/dist/lib/schemas-data/3.1/formats/canonical/sponsored_placement.json +3 -3
  676. package/dist/lib/schemas-data/3.1/formats/canonical/video_hosted.json +2 -2
  677. package/dist/lib/schemas-data/3.1/formats/canonical/video_vast.json +2 -2
  678. package/dist/lib/schemas-data/3.1/governance/attribute-definition.json +1 -1
  679. package/dist/lib/schemas-data/3.1/governance/audience-constraints.json +3 -3
  680. package/dist/lib/schemas-data/3.1/governance/check-governance-request.json +8 -8
  681. package/dist/lib/schemas-data/3.1/governance/check-governance-response.json +7 -7
  682. package/dist/lib/schemas-data/3.1/governance/get-plan-audit-logs-request.json +5 -5
  683. package/dist/lib/schemas-data/3.1/governance/get-plan-audit-logs-response.json +11 -11
  684. package/dist/lib/schemas-data/3.1/governance/policy-category-definition.json +2 -2
  685. package/dist/lib/schemas-data/3.1/governance/policy-entry.json +6 -6
  686. package/dist/lib/schemas-data/3.1/governance/policy-ref.json +1 -1
  687. package/dist/lib/schemas-data/3.1/governance/report-plan-outcome-request.json +7 -7
  688. package/dist/lib/schemas-data/3.1/governance/report-plan-outcome-response.json +5 -5
  689. package/dist/lib/schemas-data/3.1/governance/sync-plans-request.json +14 -14
  690. package/dist/lib/schemas-data/3.1/governance/sync-plans-response.json +6 -6
  691. package/dist/lib/schemas-data/3.1/index.json +443 -443
  692. package/dist/lib/schemas-data/3.1/manifest.json +7 -3
  693. package/dist/lib/schemas-data/3.1/manifest.schema.json +1 -1
  694. package/dist/lib/schemas-data/3.1/media-buy/build-creative-async-response-input-required.json +4 -4
  695. package/dist/lib/schemas-data/3.1/media-buy/build-creative-async-response-submitted.json +4 -4
  696. package/dist/lib/schemas-data/3.1/media-buy/build-creative-async-response-working.json +3 -3
  697. package/dist/lib/schemas-data/3.1/media-buy/build-creative-request.json +16 -16
  698. package/dist/lib/schemas-data/3.1/media-buy/build-creative-response.json +35 -35
  699. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-async-response-input-required.json +4 -4
  700. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-async-response-submitted.json +4 -4
  701. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-async-response-working.json +3 -3
  702. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-request.json +13 -13
  703. package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-response.json +19 -19
  704. package/dist/lib/schemas-data/3.1/media-buy/get-media-buy-delivery-request.json +23 -23
  705. package/dist/lib/schemas-data/3.1/media-buy/get-media-buy-delivery-response.json +27 -27
  706. package/dist/lib/schemas-data/3.1/media-buy/get-media-buys-request.json +8 -8
  707. package/dist/lib/schemas-data/3.1/media-buy/get-media-buys-response.json +30 -30
  708. package/dist/lib/schemas-data/3.1/media-buy/get-products-async-response-input-required.json +4 -4
  709. package/dist/lib/schemas-data/3.1/media-buy/get-products-async-response-submitted.json +4 -4
  710. package/dist/lib/schemas-data/3.1/media-buy/get-products-async-response-working.json +3 -3
  711. package/dist/lib/schemas-data/3.1/media-buy/get-products-request.json +13 -13
  712. package/dist/lib/schemas-data/3.1/media-buy/get-products-response.json +10 -10
  713. package/dist/lib/schemas-data/3.1/media-buy/list-creative-formats-request.json +13 -13
  714. package/dist/lib/schemas-data/3.1/media-buy/list-creative-formats-response.json +9 -9
  715. package/dist/lib/schemas-data/3.1/media-buy/log-event-request.json +5 -5
  716. package/dist/lib/schemas-data/3.1/media-buy/log-event-response.json +8 -8
  717. package/dist/lib/schemas-data/3.1/media-buy/media-buy-delivery-webhook-result.json +9 -9
  718. package/dist/lib/schemas-data/3.1/media-buy/package-request.json +23 -23
  719. package/dist/lib/schemas-data/3.1/media-buy/package-update.json +13 -13
  720. package/dist/lib/schemas-data/3.1/media-buy/provide-performance-feedback-request.json +7 -7
  721. package/dist/lib/schemas-data/3.1/media-buy/provide-performance-feedback-response.json +8 -8
  722. package/dist/lib/schemas-data/3.1/media-buy/sync-audiences-request.json +8 -8
  723. package/dist/lib/schemas-data/3.1/media-buy/sync-audiences-response.json +14 -14
  724. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-async-response-input-required.json +3 -3
  725. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-async-response-submitted.json +4 -4
  726. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-async-response-working.json +3 -3
  727. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-request.json +8 -8
  728. package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-response.json +14 -14
  729. package/dist/lib/schemas-data/3.1/media-buy/sync-event-sources-request.json +8 -8
  730. package/dist/lib/schemas-data/3.1/media-buy/sync-event-sources-response.json +14 -14
  731. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-async-response-input-required.json +3 -3
  732. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-async-response-submitted.json +4 -4
  733. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-async-response-working.json +3 -3
  734. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-request.json +11 -11
  735. package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-response.json +17 -17
  736. package/dist/lib/schemas-data/3.1/pricing-options/cpa-option.json +4 -4
  737. package/dist/lib/schemas-data/3.1/pricing-options/cpc-option.json +4 -4
  738. package/dist/lib/schemas-data/3.1/pricing-options/cpcv-option.json +4 -4
  739. package/dist/lib/schemas-data/3.1/pricing-options/cpm-option.json +4 -4
  740. package/dist/lib/schemas-data/3.1/pricing-options/cpp-option.json +5 -5
  741. package/dist/lib/schemas-data/3.1/pricing-options/cpv-option.json +4 -4
  742. package/dist/lib/schemas-data/3.1/pricing-options/flat-rate-option.json +4 -4
  743. package/dist/lib/schemas-data/3.1/pricing-options/price-breakdown.json +2 -2
  744. package/dist/lib/schemas-data/3.1/pricing-options/price-guidance.json +1 -1
  745. package/dist/lib/schemas-data/3.1/pricing-options/time-option.json +4 -4
  746. package/dist/lib/schemas-data/3.1/pricing-options/vcpm-option.json +4 -4
  747. package/dist/lib/schemas-data/3.1/property/authorization-result.json +1 -1
  748. package/dist/lib/schemas-data/3.1/property/base-property-source.json +4 -4
  749. package/dist/lib/schemas-data/3.1/property/create-property-list-request.json +8 -8
  750. package/dist/lib/schemas-data/3.1/property/create-property-list-response.json +6 -6
  751. package/dist/lib/schemas-data/3.1/property/delete-property-list-request.json +5 -5
  752. package/dist/lib/schemas-data/3.1/property/delete-property-list-response.json +5 -5
  753. package/dist/lib/schemas-data/3.1/property/delivery-record.json +3 -3
  754. package/dist/lib/schemas-data/3.1/property/get-property-list-request.json +5 -5
  755. package/dist/lib/schemas-data/3.1/property/get-property-list-response.json +9 -9
  756. package/dist/lib/schemas-data/3.1/property/list-property-lists-request.json +6 -6
  757. package/dist/lib/schemas-data/3.1/property/list-property-lists-response.json +7 -7
  758. package/dist/lib/schemas-data/3.1/property/property-error.json +2 -2
  759. package/dist/lib/schemas-data/3.1/property/property-feature-definition.json +2 -2
  760. package/dist/lib/schemas-data/3.1/property/property-feature-result.json +4 -4
  761. package/dist/lib/schemas-data/3.1/property/property-feature-value.json +2 -2
  762. package/dist/lib/schemas-data/3.1/property/property-feature.json +1 -1
  763. package/dist/lib/schemas-data/3.1/property/property-list-changed-webhook.json +2 -2
  764. package/dist/lib/schemas-data/3.1/property/property-list-filters.json +5 -5
  765. package/dist/lib/schemas-data/3.1/property/property-list.json +6 -6
  766. package/dist/lib/schemas-data/3.1/property/update-property-list-request.json +8 -8
  767. package/dist/lib/schemas-data/3.1/property/update-property-list-response.json +6 -6
  768. package/dist/lib/schemas-data/3.1/property/validate-property-delivery-request.json +6 -6
  769. package/dist/lib/schemas-data/3.1/property/validate-property-delivery-response.json +6 -6
  770. package/dist/lib/schemas-data/3.1/property/validation-result.json +5 -5
  771. package/dist/lib/schemas-data/3.1/protocol/get-adcp-capabilities-request.json +4 -4
  772. package/dist/lib/schemas-data/3.1/protocol/get-adcp-capabilities-response.json +34 -34
  773. package/dist/lib/schemas-data/3.1/protocol/get-task-status-request.json +5 -5
  774. package/dist/lib/schemas-data/3.1/protocol/get-task-status-response.json +10 -10
  775. package/dist/lib/schemas-data/3.1/protocol/list-tasks-request.json +13 -13
  776. package/dist/lib/schemas-data/3.1/protocol/list-tasks-response.json +8 -8
  777. package/dist/lib/schemas-data/3.1/registries/v1-canonical-mapping.json +2 -2
  778. package/dist/lib/schemas-data/3.1/signals/activate-signal-request.json +6 -6
  779. package/dist/lib/schemas-data/3.1/signals/activate-signal-response.json +9 -9
  780. package/dist/lib/schemas-data/3.1/signals/get-signals-async-response-submitted.json +4 -4
  781. package/dist/lib/schemas-data/3.1/signals/get-signals-async-response-working.json +3 -3
  782. package/dist/lib/schemas-data/3.1/signals/get-signals-request.json +11 -11
  783. package/dist/lib/schemas-data/3.1/signals/get-signals-response.json +17 -17
  784. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-capabilities.json +1 -1
  785. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-context-use.json +1 -1
  786. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-get-offering-request.json +4 -4
  787. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-get-offering-response.json +9 -9
  788. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-identity.json +1 -1
  789. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-initiate-session-request.json +7 -7
  790. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-initiate-session-response.json +10 -10
  791. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-send-message-request.json +5 -5
  792. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-send-message-response.json +10 -10
  793. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-sponsored-context-receipt.json +4 -4
  794. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-sponsored-context.json +4 -4
  795. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-terminate-session-request.json +4 -4
  796. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-terminate-session-response.json +7 -7
  797. package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-ui-element.json +1 -1
  798. package/dist/lib/schemas-data/3.1/trusted-match/available-package.json +4 -4
  799. package/dist/lib/schemas-data/3.1/trusted-match/context-match-request.json +5 -5
  800. package/dist/lib/schemas-data/3.1/trusted-match/context-match-response.json +4 -4
  801. package/dist/lib/schemas-data/3.1/trusted-match/error.json +1 -1
  802. package/dist/lib/schemas-data/3.1/trusted-match/identity-match-request.json +4 -4
  803. package/dist/lib/schemas-data/3.1/trusted-match/identity-match-response.json +4 -4
  804. package/dist/lib/schemas-data/3.1/trusted-match/offer-price.json +1 -1
  805. package/dist/lib/schemas-data/3.1/trusted-match/offer.json +5 -5
  806. package/dist/lib/schemas-data/3.1/trusted-match/provider-identity-match-response.json +4 -4
  807. package/dist/lib/schemas-data/3.1/trusted-match/provider-registration.json +2 -2
  808. package/dist/lib/schemas-data/3.1/trusted-match/publisher-tmpx-config.json +1 -1
  809. package/dist/lib/schemas-data/3.1/trusted-match/tmpx-chunk.json +1 -1
  810. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  811. package/dist/lib/server/decisioning/capabilities.d.mts +5 -5
  812. package/dist/lib/server/decisioning/capabilities.d.ts +5 -5
  813. package/dist/lib/server/decisioning/capabilities.js.map +1 -1
  814. package/dist/lib/server/decisioning/capabilities.mjs.map +1 -1
  815. package/dist/lib/server/decisioning/runtime/entity-hydration.generated.js.map +1 -1
  816. package/dist/lib/server/decisioning/runtime/entity-hydration.generated.mjs.map +1 -1
  817. package/dist/lib/server/wire-spec-fields.generated.d.mts +29 -29
  818. package/dist/lib/server/wire-spec-fields.generated.d.ts +29 -29
  819. package/dist/lib/server/wire-spec-fields.generated.js +29 -29
  820. package/dist/lib/server/wire-spec-fields.generated.js.map +1 -1
  821. package/dist/lib/server/wire-spec-fields.generated.mjs +29 -29
  822. package/dist/lib/server/wire-spec-fields.generated.mjs.map +1 -1
  823. package/dist/lib/testing/client.d.ts.map +1 -1
  824. package/dist/lib/testing/client.js +6 -2
  825. package/dist/lib/testing/client.js.map +1 -1
  826. package/dist/lib/testing/client.mjs +6 -2
  827. package/dist/lib/testing/client.mjs.map +1 -1
  828. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  829. package/dist/lib/testing/storyboard/runner.js +18 -4
  830. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  831. package/dist/lib/testing/storyboard/runner.mjs +18 -4
  832. package/dist/lib/testing/storyboard/runner.mjs.map +1 -1
  833. package/dist/lib/testing/storyboard/types.d.mts +83 -29
  834. package/dist/lib/testing/storyboard/types.d.ts +83 -29
  835. package/dist/lib/testing/storyboard/types.d.ts.map +1 -1
  836. package/dist/lib/testing/storyboard/types.js.map +1 -1
  837. package/dist/lib/testing/storyboard/types.mjs.map +1 -1
  838. package/dist/lib/testing/storyboard/validations.d.mts +3 -1
  839. package/dist/lib/testing/storyboard/validations.d.ts +3 -1
  840. package/dist/lib/testing/storyboard/validations.d.ts.map +1 -1
  841. package/dist/lib/testing/storyboard/validations.js +86 -23
  842. package/dist/lib/testing/storyboard/validations.js.map +1 -1
  843. package/dist/lib/testing/storyboard/validations.mjs +86 -24
  844. package/dist/lib/testing/storyboard/validations.mjs.map +1 -1
  845. package/dist/lib/testing/types.d.mts +11 -0
  846. package/dist/lib/testing/types.d.ts +11 -0
  847. package/dist/lib/testing/types.d.ts.map +1 -1
  848. package/dist/lib/testing/types.js.map +1 -1
  849. package/dist/lib/types/comply-test-controller.d.ts +1 -1
  850. package/dist/lib/types/core.generated.d.mts +2 -2
  851. package/dist/lib/types/core.generated.d.ts +2 -2
  852. package/dist/lib/types/core.generated.js.map +1 -1
  853. package/dist/lib/types/get-adcp-capabilities.d.ts +2 -2
  854. package/dist/lib/types/get-products.d.ts +2 -2
  855. package/dist/lib/types/get-task-status.d.ts +1 -1
  856. package/dist/lib/types/log-event.d.ts +1 -1
  857. package/dist/lib/types/manifest.generated.d.mts +3 -3
  858. package/dist/lib/types/manifest.generated.d.ts +3 -3
  859. package/dist/lib/types/manifest.generated.js.map +1 -1
  860. package/dist/lib/types/manifest.generated.mjs.map +1 -1
  861. package/dist/lib/types/per-tool-index.json +1 -1
  862. package/dist/lib/types/sync-audiences.d.ts +1 -1
  863. package/dist/lib/types/tools.generated.d.mts +2 -2
  864. package/dist/lib/types/tools.generated.d.ts +2 -2
  865. package/dist/lib/types/tools.generated.js.map +1 -1
  866. package/dist/lib/validation/schema-loader.d.ts.map +1 -1
  867. package/dist/lib/validation/schema-loader.js +9 -0
  868. package/dist/lib/validation/schema-loader.js.map +1 -1
  869. package/dist/lib/validation/schema-loader.mjs +8 -0
  870. package/dist/lib/validation/schema-loader.mjs.map +1 -1
  871. package/dist/lib/version.d.mts +7 -7
  872. package/dist/lib/version.d.ts +7 -7
  873. package/dist/lib/version.d.ts.map +1 -1
  874. package/dist/lib/version.js +11 -6
  875. package/dist/lib/version.js.map +1 -1
  876. package/dist/lib/version.mjs +11 -6
  877. package/dist/lib/version.mjs.map +1 -1
  878. package/docs/llms.txt +5 -5
  879. package/package.json +2 -2
  880. package/compliance/cache/3.1.15/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
  881. package/compliance/cache/3.1.15/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
  882. package/compliance/cache/3.1.15.previous/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
  883. package/compliance/cache/3.1.15.previous/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
  884. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/brand/index.yaml +0 -0
  885. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/brand/scenarios/distributed_brand_resolution.yaml +0 -0
  886. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/brand/scenarios/single_side_trust_extension.yaml +0 -0
  887. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/creative/index.yaml +0 -0
  888. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/creative/scenarios/billing_out_of_band.yaml +0 -0
  889. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/creative/scenarios/canonical_supported_formats.yaml +0 -0
  890. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -0
  891. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/creative/scenarios/evaluator_auth.yaml +0 -0
  892. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/creative/scenarios/native_in_feed.yaml +0 -0
  893. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/governance/index.yaml +0 -0
  894. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/audience_buy_flow.yaml +0 -0
  895. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/available_actions.yaml +0 -0
  896. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/billing_finality_delivery.yaml +0 -0
  897. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/canonical_formats.yaml +0 -0
  898. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
  899. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
  900. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  901. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/creative_reception.yaml +0 -0
  902. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/delivery_reporting.yaml +0 -0
  903. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
  904. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/event_dedup_flow.yaml +0 -0
  905. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
  906. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/get_products_async.yaml +0 -0
  907. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/governance_approved.yaml +0 -0
  908. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/governance_conditions.yaml +0 -0
  909. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/governance_denied.yaml +0 -0
  910. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
  911. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -0
  912. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/invalid_transitions.yaml +0 -0
  913. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/measurement_accountability.yaml +0 -0
  914. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
  915. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
  916. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/performance_buy_flow.yaml +0 -0
  917. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
  918. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
  919. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/product_signal_targeting.yaml +0 -0
  920. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/proposal_finalize.yaml +0 -0
  921. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
  922. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
  923. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/provenance_audit_observation.yaml +0 -0
  924. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/provenance_enforcement.yaml +0 -0
  925. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -0
  926. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/reach_buy_flow.yaml +0 -0
  927. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
  928. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/vendor_metric_accountability.yaml +0 -0
  929. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
  930. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
  931. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/media-buy/state-machine.yaml +0 -0
  932. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/signals/index.yaml +0 -0
  933. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/signals/scenarios/get_signals_async.yaml +0 -0
  934. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/sponsored-intelligence/index.yaml +0 -0
  935. /package/compliance/cache/{3.1.15 → 3.1.20}/domains/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
  936. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/brand/index.yaml +0 -0
  937. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/brand/scenarios/distributed_brand_resolution.yaml +0 -0
  938. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/brand/scenarios/single_side_trust_extension.yaml +0 -0
  939. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/creative/index.yaml +0 -0
  940. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/creative/scenarios/billing_out_of_band.yaml +0 -0
  941. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/creative/scenarios/canonical_supported_formats.yaml +0 -0
  942. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -0
  943. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/creative/scenarios/evaluator_auth.yaml +0 -0
  944. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/creative/scenarios/native_in_feed.yaml +0 -0
  945. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/governance/index.yaml +0 -0
  946. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/audience_buy_flow.yaml +0 -0
  947. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/available_actions.yaml +0 -0
  948. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/billing_finality_delivery.yaml +0 -0
  949. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/canonical_formats.yaml +0 -0
  950. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
  951. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
  952. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  953. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/creative_reception.yaml +0 -0
  954. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/delivery_reporting.yaml +0 -0
  955. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
  956. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/event_dedup_flow.yaml +0 -0
  957. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
  958. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/get_products_async.yaml +0 -0
  959. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/governance_approved.yaml +0 -0
  960. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/governance_conditions.yaml +0 -0
  961. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/governance_denied.yaml +0 -0
  962. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
  963. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -0
  964. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/invalid_transitions.yaml +0 -0
  965. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/measurement_accountability.yaml +0 -0
  966. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
  967. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
  968. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/performance_buy_flow.yaml +0 -0
  969. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
  970. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
  971. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/product_signal_targeting.yaml +0 -0
  972. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -0
  973. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
  974. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
  975. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/provenance_audit_observation.yaml +0 -0
  976. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/provenance_enforcement.yaml +0 -0
  977. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -0
  978. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/reach_buy_flow.yaml +0 -0
  979. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
  980. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +0 -0
  981. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
  982. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
  983. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/media-buy/state-machine.yaml +0 -0
  984. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/signals/index.yaml +0 -0
  985. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/signals/scenarios/get_signals_async.yaml +0 -0
  986. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/sponsored-intelligence/index.yaml +0 -0
  987. /package/compliance/cache/{3.1.15 → 3.1.20}/protocols/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
  988. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/audience-sync/index.yaml +0 -0
  989. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/brand-rights/index.yaml +0 -0
  990. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -0
  991. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/collection-lists/index.yaml +0 -0
  992. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/content-standards/index.yaml +0 -0
  993. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/creative-ad-server/index.yaml +0 -0
  994. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/creative-generative/generative-seller.yaml +0 -0
  995. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/creative-generative/index.yaml +0 -0
  996. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/creative-template/index.yaml +0 -0
  997. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/creative-transformers/index.yaml +0 -0
  998. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/governance-aware-seller/index.yaml +0 -0
  999. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +0 -0
  1000. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/governance-delivery-monitor/index.yaml +0 -0
  1001. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/governance-spend-authority/denied.yaml +0 -0
  1002. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/governance-spend-authority/index.yaml +0 -0
  1003. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/property-lists/index.yaml +0 -0
  1004. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/sales-catalog-driven/index.yaml +0 -0
  1005. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/sales-non-guaranteed/index.yaml +0 -0
  1006. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/sales-social/index.yaml +0 -0
  1007. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/signal-marketplace/index.yaml +0 -0
  1008. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -0
  1009. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/signal-owned/index.yaml +0 -0
  1010. /package/compliance/cache/{3.1.15 → 3.1.20}/specialisms/sponsored-intelligence/index.yaml +0 -0
  1011. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/acme-outdoor-live.yaml +0 -0
  1012. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/billing-gate-runner.yaml +0 -0
  1013. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/bistro-oranje.yaml +0 -0
  1014. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/distributed-brand-runner.yaml +0 -0
  1015. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/nova-motors.yaml +0 -0
  1016. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/osei-natural.yaml +0 -0
  1017. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/parallel-dispatch-runner.yaml +0 -0
  1018. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/rate-limit-trip-runner.yaml +0 -0
  1019. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/signed-requests-runner.yaml +0 -0
  1020. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/single-side-trust-runner.yaml +0 -0
  1021. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/substitution-observer-runner.yaml +0 -0
  1022. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/summit-foods.yaml +0 -0
  1023. /package/compliance/cache/{3.1.15 → 3.1.20}/test-kits/webhook-receiver-runner.yaml +0 -0
  1024. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/catalog-macro-substitution.json +0 -0
  1025. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/001-minimal-plan.json +0 -0
  1026. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/002-full-plan.json +0 -0
  1027. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -0
  1028. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/004a-human-review-omitted.json +0 -0
  1029. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -0
  1030. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -0
  1031. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -0
  1032. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -0
  1033. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -0
  1034. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/007-unicode-objectives.json +0 -0
  1035. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -0
  1036. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/README.md +0 -0
  1037. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/canonicalization.json +0 -0
  1038. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/keys.json +0 -0
  1039. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/001-no-signature-header.json +0 -0
  1040. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/002-wrong-tag.json +0 -0
  1041. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/003-expired-signature.json +0 -0
  1042. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/004-window-too-long.json +0 -0
  1043. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/005-alg-not-allowed.json +0 -0
  1044. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/006-missing-covered-component.json +0 -0
  1045. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/007-missing-content-digest.json +0 -0
  1046. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/008-unknown-keyid.json +0 -0
  1047. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +0 -0
  1048. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/010-content-digest-mismatch.json +0 -0
  1049. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/011-malformed-header.json +0 -0
  1050. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/012-missing-expires-param.json +0 -0
  1051. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/013-expires-le-created.json +0 -0
  1052. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/014-missing-nonce-param.json +0 -0
  1053. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/015-signature-invalid.json +0 -0
  1054. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/016-replayed-nonce.json +0 -0
  1055. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/017-key-revoked.json +0 -0
  1056. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +0 -0
  1057. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/019-signature-without-signature-input.json +0 -0
  1058. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/020-rate-abuse.json +0 -0
  1059. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +0 -0
  1060. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/022-multi-valued-content-type.json +0 -0
  1061. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +0 -0
  1062. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/024-unquoted-string-param.json +0 -0
  1063. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +0 -0
  1064. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/026-non-ascii-host.json +0 -0
  1065. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +0 -0
  1066. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +0 -0
  1067. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/001-basic-post.json +0 -0
  1068. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -0
  1069. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/003-es256-post.json +0 -0
  1070. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/004-multiple-signature-labels.json +0 -0
  1071. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/005-default-port-stripped.json +0 -0
  1072. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/006-dot-segment-path.json +0 -0
  1073. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -0
  1074. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -0
  1075. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +0 -0
  1076. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +0 -0
  1077. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/011-ipv6-authority.json +0 -0
  1078. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +0 -0
  1079. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-receiver-envelope.json +0 -0
  1080. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/README.md +0 -0
  1081. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/keys.json +0 -0
  1082. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -0
  1083. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -0
  1084. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -0
  1085. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -0
  1086. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -0
  1087. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -0
  1088. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -0
  1089. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -0
  1090. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -0
  1091. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -0
  1092. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -0
  1093. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -0
  1094. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -0
  1095. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -0
  1096. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -0
  1097. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -0
  1098. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -0
  1099. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -0
  1100. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -0
  1101. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -0
  1102. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -0
  1103. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/positive/001-basic-post.json +0 -0
  1104. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/positive/002-es256-post.json +0 -0
  1105. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -0
  1106. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -0
  1107. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -0
  1108. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -0
  1109. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -0
  1110. /package/compliance/cache/{3.1.15 → 3.1.20}/test-vectors/webhook-signing/positive/008-request-signing-key-reuse.json +0 -0
  1111. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/billing-gate-dispatch.yaml +0 -0
  1112. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/canonical-format-validate-input.yaml +0 -0
  1113. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/capability-discovery.yaml +0 -0
  1114. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/collection-lists-pagination-integrity.yaml +0 -0
  1115. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/comply-controller-mode-gate.yaml +0 -0
  1116. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/content-standards-pagination-integrity.yaml +0 -0
  1117. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/deterministic-testing.yaml +0 -0
  1118. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/error-compliance-signals.yaml +0 -0
  1119. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/error-compliance.yaml +0 -0
  1120. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/fictional-entities.yaml +0 -0
  1121. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/get-media-buys-pagination-integrity.yaml +0 -0
  1122. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/get-products-pagination-integrity.yaml +0 -0
  1123. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/get-signals-pagination-integrity.yaml +0 -0
  1124. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/idempotency.yaml +0 -0
  1125. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/notification-config-event-scope.yaml +0 -0
  1126. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/notification-config-lifecycle.yaml +0 -0
  1127. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/notification-config-rejections.yaml +0 -0
  1128. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/pagination-integrity-list-accounts.yaml +0 -0
  1129. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/pagination-integrity.yaml +0 -0
  1130. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/property-lists-pagination-integrity.yaml +0 -0
  1131. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/read-tool-idempotency.yaml +0 -0
  1132. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/runner-output-contract.yaml +0 -0
  1133. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/schema-validation-signals.yaml +0 -0
  1134. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/schema-validation.yaml +0 -0
  1135. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/security.yaml +0 -0
  1136. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/signed-requests.yaml +0 -0
  1137. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/stale-response-advisory.yaml +0 -0
  1138. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/storyboard-schema.yaml +0 -0
  1139. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/v3-envelope-integrity.yaml +0 -0
  1140. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/version-negotiation.yaml +0 -0
  1141. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/webhook-emission.yaml +0 -0
  1142. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/webhook-receiver-envelope.yaml +0 -0
  1143. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/wholesale-feed-bulk-webhooks.yaml +0 -0
  1144. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/wholesale-feed-product-webhooks.yaml +0 -0
  1145. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/wholesale-feed-products.yaml +0 -0
  1146. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/wholesale-feed-signal-webhooks.yaml +0 -0
  1147. /package/compliance/cache/{3.1.15 → 3.1.20}/universal/wholesale-feed-signals.yaml +0 -0
  1148. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/brand/index.yaml +0 -0
  1149. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/brand/scenarios/distributed_brand_resolution.yaml +0 -0
  1150. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/brand/scenarios/single_side_trust_extension.yaml +0 -0
  1151. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/creative/index.yaml +0 -0
  1152. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/creative/scenarios/billing_out_of_band.yaml +0 -0
  1153. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/creative/scenarios/canonical_supported_formats.yaml +0 -0
  1154. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -0
  1155. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/creative/scenarios/evaluator_auth.yaml +0 -0
  1156. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/creative/scenarios/native_in_feed.yaml +0 -0
  1157. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/governance/index.yaml +0 -0
  1158. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/audience_buy_flow.yaml +0 -0
  1159. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/available_actions.yaml +0 -0
  1160. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/billing_finality_delivery.yaml +0 -0
  1161. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/canonical_formats.yaml +0 -0
  1162. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
  1163. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
  1164. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  1165. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/creative_reception.yaml +0 -0
  1166. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/delivery_reporting.yaml +0 -0
  1167. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
  1168. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/event_dedup_flow.yaml +0 -0
  1169. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
  1170. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/get_products_async.yaml +0 -0
  1171. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/governance_approved.yaml +0 -0
  1172. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/governance_conditions.yaml +0 -0
  1173. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/governance_denied.yaml +0 -0
  1174. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
  1175. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -0
  1176. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/invalid_transitions.yaml +0 -0
  1177. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/measurement_accountability.yaml +0 -0
  1178. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
  1179. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
  1180. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/performance_buy_flow.yaml +0 -0
  1181. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
  1182. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
  1183. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/product_signal_targeting.yaml +0 -0
  1184. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/proposal_finalize.yaml +0 -0
  1185. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
  1186. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
  1187. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/provenance_audit_observation.yaml +0 -0
  1188. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/provenance_enforcement.yaml +0 -0
  1189. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -0
  1190. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/reach_buy_flow.yaml +0 -0
  1191. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
  1192. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/vendor_metric_accountability.yaml +0 -0
  1193. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
  1194. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
  1195. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/media-buy/state-machine.yaml +0 -0
  1196. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/signals/index.yaml +0 -0
  1197. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/signals/scenarios/get_signals_async.yaml +0 -0
  1198. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/sponsored-intelligence/index.yaml +0 -0
  1199. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/domains/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
  1200. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/brand/index.yaml +0 -0
  1201. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/brand/scenarios/distributed_brand_resolution.yaml +0 -0
  1202. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/brand/scenarios/single_side_trust_extension.yaml +0 -0
  1203. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/creative/index.yaml +0 -0
  1204. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/creative/scenarios/billing_out_of_band.yaml +0 -0
  1205. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/creative/scenarios/canonical_supported_formats.yaml +0 -0
  1206. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -0
  1207. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/creative/scenarios/evaluator_auth.yaml +0 -0
  1208. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/creative/scenarios/native_in_feed.yaml +0 -0
  1209. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/governance/index.yaml +0 -0
  1210. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/audience_buy_flow.yaml +0 -0
  1211. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/available_actions.yaml +0 -0
  1212. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/billing_finality_delivery.yaml +0 -0
  1213. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/canonical_formats.yaml +0 -0
  1214. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
  1215. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
  1216. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -0
  1217. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/creative_reception.yaml +0 -0
  1218. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/delivery_reporting.yaml +0 -0
  1219. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
  1220. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/event_dedup_flow.yaml +0 -0
  1221. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
  1222. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/get_products_async.yaml +0 -0
  1223. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/governance_approved.yaml +0 -0
  1224. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/governance_conditions.yaml +0 -0
  1225. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/governance_denied.yaml +0 -0
  1226. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
  1227. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -0
  1228. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/invalid_transitions.yaml +0 -0
  1229. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/measurement_accountability.yaml +0 -0
  1230. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
  1231. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
  1232. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/performance_buy_flow.yaml +0 -0
  1233. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
  1234. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
  1235. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/product_signal_targeting.yaml +0 -0
  1236. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -0
  1237. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
  1238. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
  1239. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/provenance_audit_observation.yaml +0 -0
  1240. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/provenance_enforcement.yaml +0 -0
  1241. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -0
  1242. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/reach_buy_flow.yaml +0 -0
  1243. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
  1244. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +0 -0
  1245. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
  1246. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
  1247. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/media-buy/state-machine.yaml +0 -0
  1248. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/signals/index.yaml +0 -0
  1249. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/signals/scenarios/get_signals_async.yaml +0 -0
  1250. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/sponsored-intelligence/index.yaml +0 -0
  1251. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/protocols/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
  1252. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/audience-sync/index.yaml +0 -0
  1253. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/brand-rights/index.yaml +0 -0
  1254. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -0
  1255. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/collection-lists/index.yaml +0 -0
  1256. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/content-standards/index.yaml +0 -0
  1257. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/creative-ad-server/index.yaml +0 -0
  1258. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/creative-generative/generative-seller.yaml +0 -0
  1259. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/creative-generative/index.yaml +0 -0
  1260. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/creative-template/index.yaml +0 -0
  1261. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/creative-transformers/index.yaml +0 -0
  1262. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/governance-aware-seller/index.yaml +0 -0
  1263. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +0 -0
  1264. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/governance-delivery-monitor/index.yaml +0 -0
  1265. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/governance-spend-authority/denied.yaml +0 -0
  1266. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/governance-spend-authority/index.yaml +0 -0
  1267. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/property-lists/index.yaml +0 -0
  1268. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/sales-catalog-driven/index.yaml +0 -0
  1269. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/sales-non-guaranteed/index.yaml +0 -0
  1270. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/sales-social/index.yaml +0 -0
  1271. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/signal-marketplace/index.yaml +0 -0
  1272. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -0
  1273. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/signal-owned/index.yaml +0 -0
  1274. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/specialisms/sponsored-intelligence/index.yaml +0 -0
  1275. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/acme-outdoor-live.yaml +0 -0
  1276. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/billing-gate-runner.yaml +0 -0
  1277. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/bistro-oranje.yaml +0 -0
  1278. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/distributed-brand-runner.yaml +0 -0
  1279. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/nova-motors.yaml +0 -0
  1280. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/osei-natural.yaml +0 -0
  1281. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/parallel-dispatch-runner.yaml +0 -0
  1282. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/rate-limit-trip-runner.yaml +0 -0
  1283. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/signed-requests-runner.yaml +0 -0
  1284. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/single-side-trust-runner.yaml +0 -0
  1285. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/substitution-observer-runner.yaml +0 -0
  1286. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/summit-foods.yaml +0 -0
  1287. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-kits/webhook-receiver-runner.yaml +0 -0
  1288. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/catalog-macro-substitution.json +0 -0
  1289. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/001-minimal-plan.json +0 -0
  1290. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/002-full-plan.json +0 -0
  1291. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -0
  1292. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/004a-human-review-omitted.json +0 -0
  1293. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -0
  1294. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -0
  1295. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -0
  1296. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -0
  1297. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -0
  1298. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/007-unicode-objectives.json +0 -0
  1299. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -0
  1300. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/README.md +0 -0
  1301. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/canonicalization.json +0 -0
  1302. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/keys.json +0 -0
  1303. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/001-no-signature-header.json +0 -0
  1304. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/002-wrong-tag.json +0 -0
  1305. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/003-expired-signature.json +0 -0
  1306. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/004-window-too-long.json +0 -0
  1307. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/005-alg-not-allowed.json +0 -0
  1308. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/006-missing-covered-component.json +0 -0
  1309. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/007-missing-content-digest.json +0 -0
  1310. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/008-unknown-keyid.json +0 -0
  1311. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +0 -0
  1312. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/010-content-digest-mismatch.json +0 -0
  1313. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/011-malformed-header.json +0 -0
  1314. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/012-missing-expires-param.json +0 -0
  1315. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/013-expires-le-created.json +0 -0
  1316. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/014-missing-nonce-param.json +0 -0
  1317. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/015-signature-invalid.json +0 -0
  1318. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/016-replayed-nonce.json +0 -0
  1319. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/017-key-revoked.json +0 -0
  1320. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +0 -0
  1321. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/019-signature-without-signature-input.json +0 -0
  1322. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/020-rate-abuse.json +0 -0
  1323. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +0 -0
  1324. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/022-multi-valued-content-type.json +0 -0
  1325. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +0 -0
  1326. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/024-unquoted-string-param.json +0 -0
  1327. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +0 -0
  1328. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/026-non-ascii-host.json +0 -0
  1329. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +0 -0
  1330. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +0 -0
  1331. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/001-basic-post.json +0 -0
  1332. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -0
  1333. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/003-es256-post.json +0 -0
  1334. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/004-multiple-signature-labels.json +0 -0
  1335. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/005-default-port-stripped.json +0 -0
  1336. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/006-dot-segment-path.json +0 -0
  1337. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -0
  1338. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -0
  1339. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +0 -0
  1340. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +0 -0
  1341. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/011-ipv6-authority.json +0 -0
  1342. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +0 -0
  1343. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-receiver-envelope.json +0 -0
  1344. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/README.md +0 -0
  1345. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/keys.json +0 -0
  1346. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -0
  1347. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -0
  1348. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -0
  1349. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -0
  1350. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -0
  1351. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -0
  1352. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -0
  1353. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -0
  1354. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -0
  1355. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -0
  1356. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -0
  1357. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -0
  1358. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -0
  1359. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -0
  1360. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -0
  1361. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -0
  1362. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -0
  1363. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -0
  1364. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -0
  1365. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -0
  1366. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -0
  1367. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/positive/001-basic-post.json +0 -0
  1368. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/positive/002-es256-post.json +0 -0
  1369. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -0
  1370. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -0
  1371. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -0
  1372. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -0
  1373. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -0
  1374. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/test-vectors/webhook-signing/positive/008-request-signing-key-reuse.json +0 -0
  1375. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/billing-gate-dispatch.yaml +0 -0
  1376. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/canonical-format-validate-input.yaml +0 -0
  1377. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/capability-discovery.yaml +0 -0
  1378. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/collection-lists-pagination-integrity.yaml +0 -0
  1379. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/comply-controller-mode-gate.yaml +0 -0
  1380. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/content-standards-pagination-integrity.yaml +0 -0
  1381. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/deterministic-testing.yaml +0 -0
  1382. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/error-compliance-signals.yaml +0 -0
  1383. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/error-compliance.yaml +0 -0
  1384. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/fictional-entities.yaml +0 -0
  1385. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/get-media-buys-pagination-integrity.yaml +0 -0
  1386. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/get-products-pagination-integrity.yaml +0 -0
  1387. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/get-signals-pagination-integrity.yaml +0 -0
  1388. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/idempotency.yaml +0 -0
  1389. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/notification-config-event-scope.yaml +0 -0
  1390. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/notification-config-lifecycle.yaml +0 -0
  1391. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/notification-config-rejections.yaml +0 -0
  1392. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/pagination-integrity-list-accounts.yaml +0 -0
  1393. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/pagination-integrity.yaml +0 -0
  1394. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/property-lists-pagination-integrity.yaml +0 -0
  1395. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/read-tool-idempotency.yaml +0 -0
  1396. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/runner-output-contract.yaml +0 -0
  1397. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/schema-validation-signals.yaml +0 -0
  1398. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/schema-validation.yaml +0 -0
  1399. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/security.yaml +0 -0
  1400. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/signed-requests.yaml +0 -0
  1401. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/stale-response-advisory.yaml +0 -0
  1402. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/storyboard-schema.yaml +0 -0
  1403. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/v3-envelope-integrity.yaml +0 -0
  1404. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/version-negotiation.yaml +0 -0
  1405. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/webhook-emission.yaml +0 -0
  1406. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/webhook-receiver-envelope.yaml +0 -0
  1407. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/wholesale-feed-bulk-webhooks.yaml +0 -0
  1408. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/wholesale-feed-product-webhooks.yaml +0 -0
  1409. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/wholesale-feed-products.yaml +0 -0
  1410. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/wholesale-feed-signal-webhooks.yaml +0 -0
  1411. /package/compliance/cache/{3.1.15.previous → 3.1.20.previous}/universal/wholesale-feed-signals.yaml +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "/schemas/3.1.15/trusted-match/offer-price.json",
3
+ "$id": "/schemas/3.1.20/trusted-match/offer-price.json",
4
4
  "title": "Offer Price",
5
5
  "description": "Lightweight price for a TMP offer. Used when the product supports variable pricing and the buyer specifies a price at match time.",
6
6
  "x-status": "experimental",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "/schemas/3.1.15/trusted-match/offer.json",
3
+ "$id": "/schemas/3.1.20/trusted-match/offer.json",
4
4
  "title": "Offer",
5
5
  "description": "A buyer's response to a context match request. Generalizes package activation — a simple activation is an offer with just package_id. A rich response includes brand, price, summary, and optionally an inline creative manifest.",
6
6
  "x-status": "experimental",
@@ -11,15 +11,15 @@
11
11
  "description": "Package identifier from the media buy."
12
12
  },
13
13
  "seller_agent": {
14
- "$ref": "/schemas/3.1.15/core/seller-agent-ref.json",
14
+ "$ref": "/schemas/3.1.20/core/seller-agent-ref.json",
15
15
  "description": "Optional echo of the package's seller agent from sync-time metadata. Provided for publisher-side observability so log pipelines can attribute offers to sellers without round-tripping to the media-buy store. Non-authoritative: the binding on the cached AvailablePackage is source of truth. When omitted, the router MAY stamp this field from its cached package→seller map."
16
16
  },
17
17
  "brand": {
18
- "$ref": "/schemas/3.1.15/core/brand-ref.json",
18
+ "$ref": "/schemas/3.1.20/core/brand-ref.json",
19
19
  "description": "Brand for this offer. Required when the product allows dynamic brands (brand selected at match time rather than fixed on the package). For single-brand packages, the brand is already known from the media buy."
20
20
  },
21
21
  "price": {
22
- "$ref": "/schemas/3.1.15/trusted-match/offer-price.json",
22
+ "$ref": "/schemas/3.1.20/trusted-match/offer-price.json",
23
23
  "description": "Price for this offer. Only present when the product supports variable pricing. For fixed-price packages, price is already set on the media buy."
24
24
  },
25
25
  "summary": {
@@ -27,7 +27,7 @@
27
27
  "description": "Buyer-generated description of the offer, for the publisher to judge relevance. E.g., '50% off Goldenfield mayo — recipe integration'. The publisher (or their AI assistant) uses this to decide whether the offer fits the context."
28
28
  },
29
29
  "creative_manifest": {
30
- "$ref": "/schemas/3.1.15/core/creative-manifest.json",
30
+ "$ref": "/schemas/3.1.20/core/creative-manifest.json",
31
31
  "description": "Full creative details, inline. When present, the publisher has everything needed to render. Inline for small creatives (markdown, product card). For large creatives (VAST, video), the manifest references external assets via URLs."
32
32
  },
33
33
  "macros": {
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "/schemas/3.1.15/trusted-match/provider-identity-match-response.json",
3
+ "$id": "/schemas/3.1.20/trusted-match/provider-identity-match-response.json",
4
4
  "title": "Identity Match Response (Provider → Router)",
5
5
  "description": "Provider-to-router shape of the Identity Match response. An identity agent returns eligibility, the per-package serve-window throttle, and — when it mints one — an ordered list of TMPX chunks. Each chunk pairs a provider-local `slot_id` (declared at registration in `tmpx_slots`) with an opaque URL-safe `value`. Publisher-local destination names (ad-server macros, GAM key-values, VAST URL macros, DOOH play-log fields) MUST NOT appear on this hop; the router keys chunks under the emitting `provider_id` and the publisher's deployment configuration resolves `(provider_id, slot_id)` to the local destination (see publisher-tmpx-config.json). Router-hop fields (`tmpx_providers`, `tmpx`) MUST NOT appear on this shape — a router receiving them from a provider MUST reject the response. Envelope extension fields (`context`, `ext`) are intentionally omitted to prevent data leakage across the identity privacy boundary; they are forbidden by this schema.",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
9
- "$ref": "/schemas/3.1.15/core/version-envelope.json"
9
+ "$ref": "/schemas/3.1.20/core/version-envelope.json"
10
10
  },
11
11
  {
12
- "$ref": "/schemas/3.1.15/core/protocol-envelope.json"
12
+ "$ref": "/schemas/3.1.20/core/protocol-envelope.json"
13
13
  }
14
14
  ],
15
15
  "x-status": "experimental",
@@ -40,7 +40,7 @@
40
40
  "type": "array",
41
41
  "description": "Ordered TMPX chunk/value pairs this identity agent mints. Each entry names the provider-local `slot_id` the value fills (from the provider's registered `tmpx_slots` in provider-registration.json). Ordered-prefix invariant: a response that carries fewer chunks than the provider registered MUST emit an ordered prefix of the registered `tmpx_slots` — routers MUST NOT reorder or fill gaps. The router MUST validate this contract before forwarding: if the provider has no `tmpx_slots` registration, or if the chunk `slot_id` sequence is not an exact non-empty ordered prefix of the registered list (duplicate, reordered, sparse, or unregistered slot IDs), the router MUST drop that provider's chunks atomically and MUST NOT forward them into `tmpx_providers`. Cap of 2 chunks in v1 aligned with the GAM macro-slot budget; the cap MAY rise without a shape change. Omitted when this provider mints no TMPX (e.g. no eligible packages).",
42
42
  "items": {
43
- "$ref": "/schemas/3.1.15/trusted-match/tmpx-chunk.json"
43
+ "$ref": "/schemas/3.1.20/trusted-match/tmpx-chunk.json"
44
44
  },
45
45
  "minItems": 1,
46
46
  "maxItems": 2
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "/schemas/3.1.15/trusted-match/provider-registration.json",
3
+ "$id": "/schemas/3.1.20/trusted-match/provider-registration.json",
4
4
  "title": "TMP Provider Registration",
5
5
  "description": "Declares a TMP provider's endpoint, capabilities, and operational parameters. Used in router configuration (static YAML or dynamic API) and referenced by product-level provider entries. The publisher controls which providers participate in their ad decisioning. Endpoint URLs MUST be validated against SSRF, and dynamic registration endpoints MUST authenticate callers — see docs/trusted-match/specification#provider-registration-security.",
6
6
  "x-status": "experimental",
@@ -39,7 +39,7 @@
39
39
  "type": "array",
40
40
  "description": "Identity types this provider can resolve. The router selects Identity Match providers whose uid_types overlaps with any uid_type in the request's identities array. MUST be present and non-empty when identity_match is true.",
41
41
  "items": {
42
- "$ref": "/schemas/3.1.15/enums/uid-type.json"
42
+ "$ref": "/schemas/3.1.20/enums/uid-type.json"
43
43
  },
44
44
  "minItems": 1
45
45
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "/schemas/3.1.15/trusted-match/publisher-tmpx-config.json",
3
+ "$id": "/schemas/3.1.20/trusted-match/publisher-tmpx-config.json",
4
4
  "title": "Publisher TMPX Macro Mapping",
5
5
  "description": "Publisher-owned deployment configuration that maps each identity provider's TMPX slots to the ad-server macro names (or targeting keys, VAST substitutions, DOOH play-log fields) the publisher wants those chunks fired into on this surface. Mapping is authored by the publisher — the same operator who trafficks the corresponding ad-server line items — and never travels on the wire between identity provider and router. This keeps macro naming a deployment concern rather than a protocol identifier: providers emit chunks as `{slot_id, value}` pairs (see provider-identity-match-response.json), the router preserves ordering and slot IDs under the emitting `provider_id` (see identity-match-response.json), and this configuration resolves each `(provider_id, slot_id)` to a local destination on the way to the ad server. A publisher may map the same provider to different destinations across surfaces (GAM key-values vs. VAST macros vs. DOOH play-log fields) by carrying one instance of this configuration per surface.",
6
6
  "x-status": "experimental",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "/schemas/3.1.15/trusted-match/tmpx-chunk.json",
3
+ "$id": "/schemas/3.1.20/trusted-match/tmpx-chunk.json",
4
4
  "title": "TMPX Chunk",
5
5
  "description": "A single provider TMPX chunk — the provider-local `slot_id` (declared at registration in `tmpx_slots`) and its opaque URL-safe `value`. Same shape on both hops of the Identity Match response: providers emit `tmpx_chunks[]` on the provider→router shape, the router forwards them under `tmpx_providers[provider_id].chunks[]` on the router→publisher shape. Publisher-local destination names never appear here — the publisher's deployment configuration resolves `(provider_id, slot_id)` → local destination via publisher-tmpx-config.json.",
6
6
  "x-status": "experimental",
@@ -4,5 +4,5 @@
4
4
  "source_sha": "4e553ad955f83b49c7d221ab5c3ff78237ad02e3",
5
5
  "source_tarball_sha256": "580656d6466ef9f0d1119985e6726c2efea718dc671e2ad30957fcb2fd54af0f",
6
6
  "upstream_adcp_version": "2.5.3",
7
- "synced_at": "2026-09-02T12:36:49.079Z"
7
+ "synced_at": "2026-09-09T01:32:34.326Z"
8
8
  }
@@ -454,11 +454,11 @@ export type BrandCapabilities = NonNullable<NonNullable<GetAdCPCapabilitiesRespo
454
454
  */
455
455
  export interface ComplianceTestingCapabilities {
456
456
  /**
457
- * Scenarios this agent advertises support for. Wire enum is the
458
- * canonical scenario enum, excluding `list_scenarios` because that
459
- * is a discovery operation rather than a test capability. Framework
460
- * defaults this from the adopter-supplied `complyTest` adapter set
461
- * when omitted.
457
+ * Scenarios this agent advertises support for. The wire field is open to
458
+ * implementation-specific string values; canonical controller scenarios
459
+ * are recommendations, not an enum constraint. `list_scenarios` remains a
460
+ * discovery operation rather than a test capability. Framework defaults
461
+ * this from the adopter-supplied `complyTest` adapter set when omitted.
462
462
  */
463
463
  scenarios?: ReadonlyArray<_ComplianceTestingScenario>;
464
464
  }
@@ -454,11 +454,11 @@ export type BrandCapabilities = NonNullable<NonNullable<GetAdCPCapabilitiesRespo
454
454
  */
455
455
  export interface ComplianceTestingCapabilities {
456
456
  /**
457
- * Scenarios this agent advertises support for. Wire enum is the
458
- * canonical scenario enum, excluding `list_scenarios` because that
459
- * is a discovery operation rather than a test capability. Framework
460
- * defaults this from the adopter-supplied `complyTest` adapter set
461
- * when omitted.
457
+ * Scenarios this agent advertises support for. The wire field is open to
458
+ * implementation-specific string values; canonical controller scenarios
459
+ * are recommendations, not an enum constraint. `list_scenarios` remains a
460
+ * discovery operation rather than a test capability. Framework defaults
461
+ * this from the adopter-supplied `complyTest` adapter set when omitted.
462
462
  */
463
463
  scenarios?: ReadonlyArray<_ComplianceTestingScenario>;
464
464
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/server/decisioning/capabilities.ts"],"sourcesContent":["/**\n * DecisioningCapabilities — single source of truth for `get_adcp_capabilities`\n * response and any admin UI surface a host wants to render.\n *\n * Adopters declare once. Framework wires the wire-protocol response;\n * adopters' admin tools (or the SDK CLI's `validate_platform_config`) consume\n * the same dataclass so there's no drift between \"what the agent says it\n * supports\" and \"what it actually does.\"\n *\n * Status: Preview / 6.0.\n *\n * @public\n */\n\nimport type { ZodSchema } from 'zod';\nimport type {\n AdCPSpecialism,\n MediaChannel,\n PaymentTerms,\n PricingModel,\n GetAdCPCapabilitiesResponse,\n PostalAreaSupport,\n} from '../../types/tools.generated';\nimport type { ProductMetricOptimizationLike } from '../../utils/capability-rollups';\nimport type { MediaBuyFeatures, AccountCapabilities, CreativeCapabilities } from '../../utils/capabilities';\nimport type { AdcpCapabilitiesOverrides } from '../create-adcp-server';\n\n/**\n * Pre-resolved alias for the wire `media_buy` block. Used as the projection\n * source for the five `media_buy.*` capability fields below so each typed\n * field references a single resolved shape instead of re-walking the\n * `GetAdCPCapabilitiesResponse` type graph independently. Without the\n * alias, `strict + skipLibCheck:false` adopters hit the TS instantiation\n * budget on the published `.d.ts` and tsc OOMs.\n */\ntype _MediaBuyCapabilities = NonNullable<GetAdCPCapabilitiesResponse['media_buy']>;\ntype _MediaBuyTargetingCapabilities = NonNullable<NonNullable<_MediaBuyCapabilities['execution']>['targeting']>;\ntype _ComplianceTestingScenario = NonNullable<\n NonNullable<GetAdCPCapabilitiesResponse['compliance_testing']>['scenarios']\n>[number];\n\nexport interface DecisioningCapabilities<TConfig = unknown> {\n /**\n * Specialisms claimed; framework type-checks these against implemented platform\n * interfaces. Arrays are `readonly` so adopters can declare with `as const`\n * (load-bearing for the `RequiredPlatformsFor<S>` compile-time gate).\n */\n specialisms: readonly AdCPSpecialism[];\n\n /**\n * Creative agents this seller composes with. Framework fetches format catalogs\n * from each (1h cache) and unions them on `list_creative_formats`. Self-hosting\n * sellers point at their own `agent_url`; framework calls into their\n * `CreativePlatform.listFormats()` locally instead of HTTP-fetching.\n *\n * `format_ids` filter (optional) subsets a single creative agent's catalog.\n * Useful when a creative agent hosts 50 formats but this seller only accepts\n * 10 of them. Filter scope is per-creative-agent: `[{ agent_url: A, format_ids: ['x'] }, { agent_url: B }]`\n * means \"from A only format x; from B all formats.\"\n *\n * Omit for signals-only platforms (`signal-marketplace`, `signal-owned`) — they\n * sell audience data access, not media inventory, and don't compose with creative agents.\n */\n creative_agents?: readonly CreativeAgentRef[];\n\n /**\n * Channels this platform sells.\n *\n * Omit for non-media-buy platforms — they don't sell ad inventory and have no\n * channels to declare. Applies to signals (`signal-marketplace`, `signal-owned`),\n * governance (`governance-spend-authority`, `governance-delivery-monitor`,\n * `property-lists`, `collection-lists`, `content-standards`), creative-only\n * (`creative-ad-server`, `creative-template`, `creative-generative`), and\n * brand (`brand-rights`) platforms.\n *\n * **Required at runtime for media-buy platforms.** `validatePlatform` (called\n * by `createAdcpServerFromPlatform`) throws `PlatformConfigError` when any\n * `sales-*` specialism is claimed and this field is absent.\n */\n channels?: readonly MediaChannel[];\n\n /**\n * Pricing models this platform supports.\n *\n * Omit for non-media-buy platforms — they don't sell ad inventory and have no\n * channel-level pricing to declare. For signals platforms specifically, pricing\n * is declared per-signal in the signal descriptor's `pricing_options[]` instead.\n * Same non-media-buy specialism set as `channels` above.\n *\n * **Required at runtime for media-buy platforms.** `validatePlatform` (called\n * by `createAdcpServerFromPlatform`) throws `PlatformConfigError` when any\n * `sales-*` specialism is claimed and this field is absent.\n */\n pricingModels?: readonly PricingModel[];\n\n /** Targeting capabilities. Optional — framework infers reasonable defaults if omitted. */\n targeting?: TargetingCapabilities;\n\n /** Reporting capabilities. Optional — framework infers reasonable defaults if omitted. */\n reporting?: ReportingCapabilities;\n\n /**\n * Audience-matching capabilities — projected onto\n * `get_adcp_capabilities.media_buy.audience_targeting`. Required for\n * audience-sync adopters (CRM-list adopters that accept hashed\n * identifiers + UID types) so buyers know which identifier shapes\n * the platform will match against and what minimum audience size /\n * matching latency to expect. Omit when the platform doesn't accept\n * external audience uploads.\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.audience_targeting`.\n */\n audience_targeting?: NonNullable<_MediaBuyCapabilities['audience_targeting']>;\n\n /**\n * Conversion-tracking capabilities — projected onto\n * `get_adcp_capabilities.media_buy.conversion_tracking`. Required for\n * adopters that accept conversion events via `sync_event_sources` /\n * `log_event` so buyers know which event types, action sources,\n * attribution windows, and identifier shapes the platform supports.\n * Omit when the platform doesn't track conversions.\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.conversion_tracking`.\n */\n conversion_tracking?: NonNullable<_MediaBuyCapabilities['conversion_tracking']>;\n\n /**\n * Content-standards capabilities — projected onto\n * `get_adcp_capabilities.media_buy.content_standards`. Required for\n * adopters claiming the `content-standards` specialism so buyers know\n * whether the platform runs local evaluation, which channels it\n * covers, and whether it supports webhook artifact delivery. Omit\n * when the platform doesn't ship content-standards artifacts.\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.content_standards`.\n */\n content_standards?: NonNullable<_MediaBuyCapabilities['content_standards']>;\n\n /**\n * Seller-level rollup of optimization metrics — projected onto\n * `get_adcp_capabilities.media_buy.supported_optimization_metrics`.\n * Added in AdCP 3.1 (adcp#4669). The array union of every product's\n * `metric_optimization.supported_metrics`. Storyboard runners gate\n * `metric_optimization`-using scenarios on this field; declaring it\n * gives buyers an upfront signal of which optimization metrics the\n * seller can compute against (clicks, views, completed_views, etc.).\n *\n * Adopters can compute the rollup from their catalog using the\n * exported {@link rollupOptimizationMetricsFromProducts} helper —\n * keeps the declaration in sync with what products actually offer.\n * Empty arrays are normalized away and the wire field is omitted; use\n * omission to mean \"no seller-level metric rollup advertised\".\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.supported_optimization_metrics`.\n */\n supported_optimization_metrics?: NonNullable<_MediaBuyCapabilities['supported_optimization_metrics']>;\n\n /**\n * Static product-metric summary used for capability rollups.\n *\n * When this is present and `supported_optimization_metrics` is omitted,\n * the framework derives `media_buy.supported_optimization_metrics` as the\n * sorted union of every product summary's\n * `metric_optimization.supported_metrics`. Full AdCP `Product` objects work,\n * but this field is not a general product-discovery surface; a lightweight\n * startup summary with just the `metric_optimization` block is enough.\n * Dynamic per-account catalogs should continue to pass an explicit\n * `supported_optimization_metrics` override. If the derived union is empty,\n * the framework omits `supported_optimization_metrics` from the wire\n * capabilities response.\n */\n productCatalog?: ReadonlyArray<ProductMetricOptimizationLike>;\n\n /**\n * Frequency-cap support declaration — projected onto\n * `get_adcp_capabilities.media_buy.frequency_capping`. Added in AdCP\n * 3.1 (adcp#4670). Presence-only object with `supported_per_units` /\n * `supported_window_units` sub-fields declaring which frequency-cap\n * shapes the platform honors. Omit when the platform doesn't accept\n * frequency caps at all; buyers will avoid the field on `pacing.*`.\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.frequency_capping`.\n */\n frequency_capping?: NonNullable<_MediaBuyCapabilities['frequency_capping']>;\n\n /**\n * Whether this seller commits to the proposal lifecycle on get_products.\n * Projected onto `get_adcp_capabilities.media_buy.supports_proposals`.\n * Direct-buy sellers should declare `false` so proposal-only compliance\n * storyboards are skipped; sellers with a ProposalManager are auto-derived\n * as `true` unless they override this explicitly.\n */\n supportsProposals?: boolean;\n\n /**\n * Brand-protocol capabilities. Projected onto the wire `brand` block of\n * `get_adcp_capabilities` (`brand: { rights, right_types, available_uses,\n * generation_providers, description }`). The framework auto-derives\n * `rights: true` when `BrandRightsPlatform` is supplied; adopters\n * declare the rest (right_types they license, RightUses they support,\n * generation providers they issue credentials for).\n *\n * REQUIRED when claiming the `'brand-rights'` specialism — enforced at\n * compile-time via `RequiredCapabilitiesFor<S>`.\n */\n brand?: BrandCapabilities;\n\n /**\n * Compliance-testing capabilities. The presence of this block declares\n * the deployment supports deterministic state-machine testing via the\n * `comply_test_controller` wire tool. Keep this block declared when using\n * `createAdcpServerFromPlatform(..., { complyTest })`; the framework makes\n * live principals byte-identical to a production seller that never wired the\n * controller by hiding this block, filtering `tools/list`, and returning MCP\n * method-not-found for direct live calls.\n *\n * When this block is present, `createAdcpServerFromPlatform` REQUIRES\n * `opts.complyTest` (the `ComplyControllerConfig` adapter set) to be\n * supplied — claiming the capability without implementing the\n * controller is a `PlatformConfigError` at construction.\n *\n * Inversely, supplying `opts.complyTest` without declaring this\n * capability is also caught — the framework derives `scenarios` from\n * the declared force/simulate/seed adapters and emits the discovery\n * field on `get_adcp_capabilities` automatically for sandbox/mock\n * principals. Live principals do not see the block.\n */\n compliance_testing?: ComplianceTestingCapabilities;\n\n /**\n * Billing parties this platform supports. `'operator'` = retail-media model\n * (Criteo, Amazon — operator pays the publisher and bills the brand).\n * `'agent'` = pass-through model (buyer's agent settles directly with the\n * platform). `'advertiser'` = seller invoices the advertiser directly,\n * bypassing operator settlement (advertiser-direct sell-side platforms where\n * the brand is the direct contractual counterparty). Defaults to `['agent']`\n * when omitted. To express advertiser-direct billing per account, set\n * `billing.invoicedTo` to a `BrandReference` (the framework maps any\n * `BrandReference` to `'advertiser'` on the wire).\n */\n supportedBillings?: ReadonlyArray<'operator' | 'agent' | 'advertiser'>;\n\n /**\n * Payment terms this platform accepts on `sync_accounts.payment_terms`.\n * Omit to leave terms validation to `accounts.upsert` (or to accept any\n * schema-valid value). When present, the framework rejects unsupported\n * requested terms with `PAYMENT_TERMS_NOT_SUPPORTED` before dispatching\n * the account entry to the adopter.\n */\n supportedPaymentTerms?: ReadonlyArray<PaymentTerms>;\n\n /**\n * If true, this platform refuses transactions without an authenticated\n * operator principal (operator-billed retail-media). Framework emits\n * `AUTH_REQUIRED` envelope before dispatching to the platform.\n */\n requireOperatorAuth?: boolean;\n\n /**\n * Media-buy feature flags forwarded into `get_adcp_capabilities.media_buy.features`.\n * Adopter values serve as the base; auto-derived `audience_targeting`,\n * `conversion_tracking`, and `content_standards` booleans take precedence\n * for those three keys (overlaid by the framework via the per-domain\n * `media_buy` override on the inner createAdcpServer call). Use this to\n * declare `inlineCreativeManagement` and `propertyListFiltering` directly\n * from `definePlatform`; declare not-supported feature blocks (e.g.\n * `inlineCreativeManagement: false`) so the conformance runner grades\n * them `not_applicable` instead of `fail`.\n *\n * Resolves the `definePlatform` passthrough gap noted in adcp-client#2199.\n */\n features?: Partial<MediaBuyFeatures>;\n\n /**\n * Creative-protocol capabilities forwarded into `get_adcp_capabilities.creative`.\n * Use to declare `supportsCompliance`, `hasCreativeLibrary`,\n * `supportsGeneration`, and `supportsTransformation` from `definePlatform`.\n * Adopters that don't run a provenance-verification pipeline should\n * declare the relevant fields as `false` so creative storyboards gate\n * cleanly.\n *\n * Resolves the `definePlatform` passthrough gap noted in adcp-client#2199.\n */\n creative?: Partial<CreativeCapabilities>;\n\n /**\n * Account capabilities forwarded into `get_adcp_capabilities.account` as a\n * base layer. The framework's existing `requireOperatorAuth` and\n * `supportedBillings` projections overlay on top via the per-domain\n * `account` override, so explicit projections win on those keys.\n * `authorizationEndpoint`, `defaultBilling`, `requiredForProducts`, and\n * `sandbox` are pure adopter-driven additions exposed through this slot.\n *\n * Resolves the `definePlatform` passthrough gap noted in adcp-client#2199.\n */\n account?: Partial<AccountCapabilities>;\n\n /**\n * Deep-merge overrides applied to the wire `get_adcp_capabilities`\n * response. Use this for fields that the top-level `DecisioningCapabilities`\n * shape doesn't model — `media_buy.propagation_surfaces`,\n * `media_buy.measurement_terms`, `signals.discovery_modes`, etc. The\n * framework's per-domain projections (auto-derived `media_buy`, `brand`,\n * `account`, `compliance_testing` blocks) are merged AFTER adopter\n * overrides, so framework-derived values remain authoritative on the keys\n * the projection engine handles.\n *\n * Mirrors `AdcpCapabilitiesConfig.overrides` on the lower-level\n * `createAdcpServer` API. Resolves the `definePlatform` passthrough gap\n * noted in adcp-client#2199.\n */\n overrides?: AdcpCapabilitiesOverrides;\n\n /**\n * Release-precision AdCP versions this platform supports (e.g. `[\"3.0\", \"3.1\"]`).\n * Forwarded into `get_adcp_capabilities.adcp.supported_versions`. 3.1+\n * sellers should declare here the same release-precision strings they\n * emit in `adcp_version` on responses; 3.0-pinned sellers can omit.\n *\n * Resolves the same gap previously noted for `supported_versions` —\n * was unreachable through `definePlatform` because\n * `CreateAdcpServerFromPlatformOptions` omits `'capabilities'` from\n * `AdcpServerConfig`. See adcp-client#2199.\n */\n supported_versions?: string[];\n\n /**\n * Platform-specific config. Strongly typed when the adopter uses the generic.\n * Example: `class GAM extends DecisioningPlatform<{ networkId: string }>`.\n */\n config: TConfig;\n\n /**\n * Optional Zod schema for runtime validation of `config`. When provided,\n * framework validates at platform construction time; missing or wrong-shaped\n * config rejects the agent at boot rather than at first request.\n */\n configSchema?: ZodSchema<TConfig>;\n}\n\nexport interface CreativeAgentRef {\n agent_url: string;\n /** Human-readable label for this creative agent. */\n name?: string;\n /** Optional allowlist of `format_id.id` values from THIS agent's catalog. Omit to include all. */\n format_ids?: string[];\n}\n\n/**\n * Targeting capabilities the platform supports in `create_media_buy`. Maps\n * to AdCP `GetAdcpCapabilitiesResponse.media_buy.execution.targeting`.\n *\n * Shape converged across two independently-evolved peer codebases (Scope3\n * `agentic-adapters`, Prebid `salesagent`). Per-geo-system flags rather than\n * coarse enums because the two implementations agreed: real platforms support\n * specific geo identifier formats (Nielsen DMA, Eurostat NUTS2, US ZIP+4), not\n * abstract \"metro\" / \"postal\" categories.\n */\nexport interface TargetingCapabilities {\n geo_countries?: boolean;\n geo_regions?: boolean;\n\n /** Metro / DMA identifier systems. */\n geo_metros?: {\n nielsen_dma?: boolean;\n uk_itl1?: boolean;\n uk_itl2?: boolean;\n eurostat_nuts2?: boolean;\n };\n\n /**\n * Postal-code identifier systems.\n *\n * AdCP 3.1.0-rc.10 prefers country-keyed arrays, e.g.\n * `{ US: ['zip'], GB: ['outward'] }`. Deprecated country-fused booleans\n * such as `{ us_zip: true }` remain accepted for 3.x adopters; the\n * framework projects both forms with `normalizePostalAreaSupport()` so old\n * and new buyers can read the capability safely during the migration.\n */\n geo_postal_areas?: TargetingPostalAreaSupport;\n\n /** Geographic-proximity targeting (radius / drive-time / arbitrary geometry). */\n geo_proximity?: {\n radius?: boolean;\n travel_time?: boolean;\n geometry?: boolean;\n transport_modes?: ReadonlyArray<'walking' | 'cycling' | 'driving' | 'public_transport'>;\n };\n\n /** Age-restriction targeting; `verification_methods` enumerates the assurance levels accepted. */\n age_restriction?: {\n supported?: boolean;\n verification_methods?: ReadonlyArray<\n 'facial_age_estimation' | 'id_document' | 'digital_id' | 'credit_card' | 'world_id'\n >;\n };\n\n device_platform?: boolean;\n device_type?: boolean;\n language?: boolean;\n audience_include?: boolean;\n audience_exclude?: boolean;\n\n /** Keyword-targeting match types accepted on positive-match terms. */\n keyword_targets?: {\n supported_match_types: ReadonlyArray<'broad' | 'phrase' | 'exact'>;\n };\n\n /** Negative-keyword match types accepted. */\n negative_keywords?: {\n supported_match_types: ReadonlyArray<'broad' | 'phrase' | 'exact'>;\n };\n}\n\nexport type TargetingPostalAreaSupport = {\n US?: readonly ('zip' | 'zip_plus_four')[];\n GB?: readonly ('outward' | 'full')[];\n CA?: readonly ('fsa' | 'full')[];\n DE?: readonly 'plz'[];\n CH?: readonly 'plz'[];\n AT?: readonly 'plz'[];\n FR?: readonly 'code_postal'[];\n AU?: readonly 'postcode'[];\n BR?: readonly 'cep'[];\n IN?: readonly 'pin'[];\n ZA?: readonly 'postal_code'[];\n /** @deprecated Use `US: ['zip']`. */\n us_zip?: boolean;\n /** @deprecated Use `US: ['zip_plus_four']`. */\n us_zip_plus_four?: boolean;\n /** @deprecated Use `GB: ['outward']`. */\n gb_outward?: boolean;\n /** @deprecated Use `GB: ['full']`. */\n gb_full?: boolean;\n /** @deprecated Use `CA: ['fsa']`. */\n ca_fsa?: boolean;\n /** @deprecated Use `CA: ['full']`. */\n ca_full?: boolean;\n /** @deprecated Use `DE: ['plz']`. */\n de_plz?: boolean;\n /** @deprecated Use `FR: ['code_postal']`. */\n fr_code_postal?: boolean;\n /** @deprecated Use `AU: ['postcode']`. */\n au_postcode?: boolean;\n /** @deprecated Use `CH: ['plz']`. */\n ch_plz?: boolean;\n /** @deprecated Use `AT: ['plz']`. */\n at_plz?: boolean;\n [country: `${Uppercase<string>}`]:\n | readonly (\n | 'zip'\n | 'zip_plus_four'\n | 'outward'\n | 'full'\n | 'fsa'\n | 'plz'\n | 'code_postal'\n | 'postcode'\n | 'cep'\n | 'pin'\n | 'postal_code'\n | 'custom'\n )[]\n | undefined;\n};\n\nconst LEGACY_POSTAL_SYSTEMS = {\n us_zip: { country: 'US', system: 'zip' },\n us_zip_plus_four: { country: 'US', system: 'zip_plus_four' },\n gb_outward: { country: 'GB', system: 'outward' },\n gb_full: { country: 'GB', system: 'full' },\n ca_fsa: { country: 'CA', system: 'fsa' },\n ca_full: { country: 'CA', system: 'full' },\n de_plz: { country: 'DE', system: 'plz' },\n fr_code_postal: { country: 'FR', system: 'code_postal' },\n au_postcode: { country: 'AU', system: 'postcode' },\n ch_plz: { country: 'CH', system: 'plz' },\n at_plz: { country: 'AT', system: 'plz' },\n} as const;\n\nconst LEGACY_POSTAL_BY_COUNTRY_SYSTEM = new Map(\n Object.entries(LEGACY_POSTAL_SYSTEMS).map(([legacy, { country, system }]) => [`${country}:${system}`, legacy])\n);\n\nconst POSTAL_SYSTEMS_BY_COUNTRY: Record<string, readonly string[]> = {\n US: ['zip', 'zip_plus_four'],\n GB: ['outward', 'full'],\n CA: ['fsa', 'full'],\n DE: ['plz'],\n CH: ['plz'],\n AT: ['plz'],\n FR: ['code_postal'],\n AU: ['postcode'],\n BR: ['cep'],\n IN: ['pin'],\n ZA: ['postal_code'],\n};\n\nconst GENERIC_POSTAL_SYSTEMS = ['postal_code', 'custom'] as const;\nconst POSTAL_COUNTRY_KEY_PATTERN = /^[A-Z]{2}$/;\n\nfunction appendUnique(target: string[], value: string): void {\n if (!target.includes(value)) target.push(value);\n}\n\nfunction assertSupportedPostalSystems(country: string, systems: readonly string[]): void {\n const allowed = POSTAL_SYSTEMS_BY_COUNTRY[country] ?? GENERIC_POSTAL_SYSTEMS;\n const invalid = systems.filter(system => !allowed.includes(system));\n if (invalid.length > 0) {\n throw new Error(\n `Invalid geo_postal_areas support for ${country}: ${invalid.join(', ')}. ` +\n `Supported systems are: ${allowed.join(', ')}.`\n );\n }\n}\n\n/**\n * Normalize postal-area capabilities across the AdCP 3.1.0-rc.10 migration.\n *\n * The wire schema now prefers `{ US: ['zip'] }` style country-local systems,\n * while the old `{ us_zip: true }` booleans stay deprecated but accepted\n * through 3.x. This helper is deliberately bidirectional:\n *\n * - legacy booleans add their country-keyed system;\n * - country-keyed systems backfill the matching legacy boolean when one exists;\n * - explicit unsupported legacy booleans are omitted unless the system is\n * otherwise advertised.\n */\nexport function normalizePostalAreaSupport(input: TargetingPostalAreaSupport): PostalAreaSupport {\n const normalized: Record<string, string[] | boolean> = {};\n\n for (const [key, value] of Object.entries(input)) {\n if (Array.isArray(value)) {\n if (!POSTAL_COUNTRY_KEY_PATTERN.test(key)) {\n throw new Error(\n `Invalid geo_postal_areas key \"${key}\". Use an ISO 3166-1 alpha-2 country code or a deprecated legacy boolean alias.`\n );\n }\n assertSupportedPostalSystems(key, value);\n const systems = (normalized[key] = Array.isArray(normalized[key]) ? (normalized[key] as string[]) : []);\n for (const system of value) appendUnique(systems, system);\n continue;\n }\n if (value === true && key in LEGACY_POSTAL_SYSTEMS) {\n const { country, system } = LEGACY_POSTAL_SYSTEMS[key as keyof typeof LEGACY_POSTAL_SYSTEMS];\n const systems = (normalized[country] = Array.isArray(normalized[country])\n ? (normalized[country] as string[])\n : []);\n appendUnique(systems, system);\n continue;\n }\n if (value === true) {\n throw new Error(\n `Invalid geo_postal_areas legacy alias \"${key}\". Use an ISO 3166-1 alpha-2 country key with supported postal systems.`\n );\n }\n }\n\n for (const [country, value] of Object.entries(normalized)) {\n if (!Array.isArray(value)) continue;\n for (const system of value) {\n const legacy = LEGACY_POSTAL_BY_COUNTRY_SYSTEM.get(`${country}:${system}`);\n if (legacy) normalized[legacy] = true;\n }\n }\n\n return normalized as PostalAreaSupport;\n}\n\nexport function normalizeTargetingCapabilities(input: TargetingCapabilities): _MediaBuyTargetingCapabilities {\n return {\n ...input,\n ...(input.geo_postal_areas && { geo_postal_areas: normalizePostalAreaSupport(input.geo_postal_areas) }),\n } as _MediaBuyTargetingCapabilities;\n}\n\n/**\n * Reporting capabilities the platform supports in `get_media_buy_delivery`.\n *\n * `availableDimensions` is the breakdown axes the platform can group\n * delivery rows by. Vocabulary converged across Scope3 and Prebid.\n */\nexport interface ReportingCapabilities {\n frequencies: ReadonlyArray<'hourly' | 'daily' | 'weekly'>;\n expected_delay_minutes: number;\n timezone: string;\n metrics: string[];\n date_range_support: 'date_range' | 'fixed_only';\n supports_webhooks: boolean;\n availableDimensions?: ReadonlyArray<\n 'geo' | 'device_type' | 'device_platform' | 'audience' | 'placement' | 'creative' | 'keyword' | 'catalog_item'\n >;\n}\n\n/**\n * Brand-protocol capabilities — projected onto the wire `brand` block of\n * `get_adcp_capabilities` via the framework's `overrides.brand` deep-merge\n * seam. Adopters who also implement `BrandRightsPlatform` get\n * `rights: true` auto-derived; the other four fields (`right_types`,\n * `available_uses`, `generation_providers`, `description`) are\n * adopter-declared.\n *\n * Wire spec: `protocol/get-adcp-capabilities-response.json#brand`.\n */\nexport type BrandCapabilities = NonNullable<NonNullable<GetAdCPCapabilitiesResponse['brand']>>;\n\n/**\n * Compliance-testing capabilities — projected onto the wire-side\n * `compliance_testing` block of `get_adcp_capabilities` so buyers and\n * conformance harnesses can discover which `comply_test_controller`\n * scenarios the agent supports.\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#compliance_testing`.\n *\n * The `scenarios` array MUST be non-empty when this block is declared\n * (per the spec). `'list_scenarios'` is implicit — adopters don't need\n * to enumerate it.\n */\nexport interface ComplianceTestingCapabilities {\n /**\n * Scenarios this agent advertises support for. Wire enum is the\n * canonical scenario enum, excluding `list_scenarios` because that\n * is a discovery operation rather than a test capability. Framework\n * defaults this from the adopter-supplied `complyTest` adapter set\n * when omitted.\n */\n scenarios?: ReadonlyArray<_ComplianceTestingScenario>;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/lib/server/decisioning/capabilities.ts"],"sourcesContent":["/**\n * DecisioningCapabilities — single source of truth for `get_adcp_capabilities`\n * response and any admin UI surface a host wants to render.\n *\n * Adopters declare once. Framework wires the wire-protocol response;\n * adopters' admin tools (or the SDK CLI's `validate_platform_config`) consume\n * the same dataclass so there's no drift between \"what the agent says it\n * supports\" and \"what it actually does.\"\n *\n * Status: Preview / 6.0.\n *\n * @public\n */\n\nimport type { ZodSchema } from 'zod';\nimport type {\n AdCPSpecialism,\n MediaChannel,\n PaymentTerms,\n PricingModel,\n GetAdCPCapabilitiesResponse,\n PostalAreaSupport,\n} from '../../types/tools.generated';\nimport type { ProductMetricOptimizationLike } from '../../utils/capability-rollups';\nimport type { MediaBuyFeatures, AccountCapabilities, CreativeCapabilities } from '../../utils/capabilities';\nimport type { AdcpCapabilitiesOverrides } from '../create-adcp-server';\n\n/**\n * Pre-resolved alias for the wire `media_buy` block. Used as the projection\n * source for the five `media_buy.*` capability fields below so each typed\n * field references a single resolved shape instead of re-walking the\n * `GetAdCPCapabilitiesResponse` type graph independently. Without the\n * alias, `strict + skipLibCheck:false` adopters hit the TS instantiation\n * budget on the published `.d.ts` and tsc OOMs.\n */\ntype _MediaBuyCapabilities = NonNullable<GetAdCPCapabilitiesResponse['media_buy']>;\ntype _MediaBuyTargetingCapabilities = NonNullable<NonNullable<_MediaBuyCapabilities['execution']>['targeting']>;\ntype _ComplianceTestingScenario = NonNullable<\n NonNullable<GetAdCPCapabilitiesResponse['compliance_testing']>['scenarios']\n>[number];\n\nexport interface DecisioningCapabilities<TConfig = unknown> {\n /**\n * Specialisms claimed; framework type-checks these against implemented platform\n * interfaces. Arrays are `readonly` so adopters can declare with `as const`\n * (load-bearing for the `RequiredPlatformsFor<S>` compile-time gate).\n */\n specialisms: readonly AdCPSpecialism[];\n\n /**\n * Creative agents this seller composes with. Framework fetches format catalogs\n * from each (1h cache) and unions them on `list_creative_formats`. Self-hosting\n * sellers point at their own `agent_url`; framework calls into their\n * `CreativePlatform.listFormats()` locally instead of HTTP-fetching.\n *\n * `format_ids` filter (optional) subsets a single creative agent's catalog.\n * Useful when a creative agent hosts 50 formats but this seller only accepts\n * 10 of them. Filter scope is per-creative-agent: `[{ agent_url: A, format_ids: ['x'] }, { agent_url: B }]`\n * means \"from A only format x; from B all formats.\"\n *\n * Omit for signals-only platforms (`signal-marketplace`, `signal-owned`) — they\n * sell audience data access, not media inventory, and don't compose with creative agents.\n */\n creative_agents?: readonly CreativeAgentRef[];\n\n /**\n * Channels this platform sells.\n *\n * Omit for non-media-buy platforms — they don't sell ad inventory and have no\n * channels to declare. Applies to signals (`signal-marketplace`, `signal-owned`),\n * governance (`governance-spend-authority`, `governance-delivery-monitor`,\n * `property-lists`, `collection-lists`, `content-standards`), creative-only\n * (`creative-ad-server`, `creative-template`, `creative-generative`), and\n * brand (`brand-rights`) platforms.\n *\n * **Required at runtime for media-buy platforms.** `validatePlatform` (called\n * by `createAdcpServerFromPlatform`) throws `PlatformConfigError` when any\n * `sales-*` specialism is claimed and this field is absent.\n */\n channels?: readonly MediaChannel[];\n\n /**\n * Pricing models this platform supports.\n *\n * Omit for non-media-buy platforms — they don't sell ad inventory and have no\n * channel-level pricing to declare. For signals platforms specifically, pricing\n * is declared per-signal in the signal descriptor's `pricing_options[]` instead.\n * Same non-media-buy specialism set as `channels` above.\n *\n * **Required at runtime for media-buy platforms.** `validatePlatform` (called\n * by `createAdcpServerFromPlatform`) throws `PlatformConfigError` when any\n * `sales-*` specialism is claimed and this field is absent.\n */\n pricingModels?: readonly PricingModel[];\n\n /** Targeting capabilities. Optional — framework infers reasonable defaults if omitted. */\n targeting?: TargetingCapabilities;\n\n /** Reporting capabilities. Optional — framework infers reasonable defaults if omitted. */\n reporting?: ReportingCapabilities;\n\n /**\n * Audience-matching capabilities — projected onto\n * `get_adcp_capabilities.media_buy.audience_targeting`. Required for\n * audience-sync adopters (CRM-list adopters that accept hashed\n * identifiers + UID types) so buyers know which identifier shapes\n * the platform will match against and what minimum audience size /\n * matching latency to expect. Omit when the platform doesn't accept\n * external audience uploads.\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.audience_targeting`.\n */\n audience_targeting?: NonNullable<_MediaBuyCapabilities['audience_targeting']>;\n\n /**\n * Conversion-tracking capabilities — projected onto\n * `get_adcp_capabilities.media_buy.conversion_tracking`. Required for\n * adopters that accept conversion events via `sync_event_sources` /\n * `log_event` so buyers know which event types, action sources,\n * attribution windows, and identifier shapes the platform supports.\n * Omit when the platform doesn't track conversions.\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.conversion_tracking`.\n */\n conversion_tracking?: NonNullable<_MediaBuyCapabilities['conversion_tracking']>;\n\n /**\n * Content-standards capabilities — projected onto\n * `get_adcp_capabilities.media_buy.content_standards`. Required for\n * adopters claiming the `content-standards` specialism so buyers know\n * whether the platform runs local evaluation, which channels it\n * covers, and whether it supports webhook artifact delivery. Omit\n * when the platform doesn't ship content-standards artifacts.\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.content_standards`.\n */\n content_standards?: NonNullable<_MediaBuyCapabilities['content_standards']>;\n\n /**\n * Seller-level rollup of optimization metrics — projected onto\n * `get_adcp_capabilities.media_buy.supported_optimization_metrics`.\n * Added in AdCP 3.1 (adcp#4669). The array union of every product's\n * `metric_optimization.supported_metrics`. Storyboard runners gate\n * `metric_optimization`-using scenarios on this field; declaring it\n * gives buyers an upfront signal of which optimization metrics the\n * seller can compute against (clicks, views, completed_views, etc.).\n *\n * Adopters can compute the rollup from their catalog using the\n * exported {@link rollupOptimizationMetricsFromProducts} helper —\n * keeps the declaration in sync with what products actually offer.\n * Empty arrays are normalized away and the wire field is omitted; use\n * omission to mean \"no seller-level metric rollup advertised\".\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.supported_optimization_metrics`.\n */\n supported_optimization_metrics?: NonNullable<_MediaBuyCapabilities['supported_optimization_metrics']>;\n\n /**\n * Static product-metric summary used for capability rollups.\n *\n * When this is present and `supported_optimization_metrics` is omitted,\n * the framework derives `media_buy.supported_optimization_metrics` as the\n * sorted union of every product summary's\n * `metric_optimization.supported_metrics`. Full AdCP `Product` objects work,\n * but this field is not a general product-discovery surface; a lightweight\n * startup summary with just the `metric_optimization` block is enough.\n * Dynamic per-account catalogs should continue to pass an explicit\n * `supported_optimization_metrics` override. If the derived union is empty,\n * the framework omits `supported_optimization_metrics` from the wire\n * capabilities response.\n */\n productCatalog?: ReadonlyArray<ProductMetricOptimizationLike>;\n\n /**\n * Frequency-cap support declaration — projected onto\n * `get_adcp_capabilities.media_buy.frequency_capping`. Added in AdCP\n * 3.1 (adcp#4670). Presence-only object with `supported_per_units` /\n * `supported_window_units` sub-fields declaring which frequency-cap\n * shapes the platform honors. Omit when the platform doesn't accept\n * frequency caps at all; buyers will avoid the field on `pacing.*`.\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.frequency_capping`.\n */\n frequency_capping?: NonNullable<_MediaBuyCapabilities['frequency_capping']>;\n\n /**\n * Whether this seller commits to the proposal lifecycle on get_products.\n * Projected onto `get_adcp_capabilities.media_buy.supports_proposals`.\n * Direct-buy sellers should declare `false` so proposal-only compliance\n * storyboards are skipped; sellers with a ProposalManager are auto-derived\n * as `true` unless they override this explicitly.\n */\n supportsProposals?: boolean;\n\n /**\n * Brand-protocol capabilities. Projected onto the wire `brand` block of\n * `get_adcp_capabilities` (`brand: { rights, right_types, available_uses,\n * generation_providers, description }`). The framework auto-derives\n * `rights: true` when `BrandRightsPlatform` is supplied; adopters\n * declare the rest (right_types they license, RightUses they support,\n * generation providers they issue credentials for).\n *\n * REQUIRED when claiming the `'brand-rights'` specialism — enforced at\n * compile-time via `RequiredCapabilitiesFor<S>`.\n */\n brand?: BrandCapabilities;\n\n /**\n * Compliance-testing capabilities. The presence of this block declares\n * the deployment supports deterministic state-machine testing via the\n * `comply_test_controller` wire tool. Keep this block declared when using\n * `createAdcpServerFromPlatform(..., { complyTest })`; the framework makes\n * live principals byte-identical to a production seller that never wired the\n * controller by hiding this block, filtering `tools/list`, and returning MCP\n * method-not-found for direct live calls.\n *\n * When this block is present, `createAdcpServerFromPlatform` REQUIRES\n * `opts.complyTest` (the `ComplyControllerConfig` adapter set) to be\n * supplied — claiming the capability without implementing the\n * controller is a `PlatformConfigError` at construction.\n *\n * Inversely, supplying `opts.complyTest` without declaring this\n * capability is also caught — the framework derives `scenarios` from\n * the declared force/simulate/seed adapters and emits the discovery\n * field on `get_adcp_capabilities` automatically for sandbox/mock\n * principals. Live principals do not see the block.\n */\n compliance_testing?: ComplianceTestingCapabilities;\n\n /**\n * Billing parties this platform supports. `'operator'` = retail-media model\n * (Criteo, Amazon — operator pays the publisher and bills the brand).\n * `'agent'` = pass-through model (buyer's agent settles directly with the\n * platform). `'advertiser'` = seller invoices the advertiser directly,\n * bypassing operator settlement (advertiser-direct sell-side platforms where\n * the brand is the direct contractual counterparty). Defaults to `['agent']`\n * when omitted. To express advertiser-direct billing per account, set\n * `billing.invoicedTo` to a `BrandReference` (the framework maps any\n * `BrandReference` to `'advertiser'` on the wire).\n */\n supportedBillings?: ReadonlyArray<'operator' | 'agent' | 'advertiser'>;\n\n /**\n * Payment terms this platform accepts on `sync_accounts.payment_terms`.\n * Omit to leave terms validation to `accounts.upsert` (or to accept any\n * schema-valid value). When present, the framework rejects unsupported\n * requested terms with `PAYMENT_TERMS_NOT_SUPPORTED` before dispatching\n * the account entry to the adopter.\n */\n supportedPaymentTerms?: ReadonlyArray<PaymentTerms>;\n\n /**\n * If true, this platform refuses transactions without an authenticated\n * operator principal (operator-billed retail-media). Framework emits\n * `AUTH_REQUIRED` envelope before dispatching to the platform.\n */\n requireOperatorAuth?: boolean;\n\n /**\n * Media-buy feature flags forwarded into `get_adcp_capabilities.media_buy.features`.\n * Adopter values serve as the base; auto-derived `audience_targeting`,\n * `conversion_tracking`, and `content_standards` booleans take precedence\n * for those three keys (overlaid by the framework via the per-domain\n * `media_buy` override on the inner createAdcpServer call). Use this to\n * declare `inlineCreativeManagement` and `propertyListFiltering` directly\n * from `definePlatform`; declare not-supported feature blocks (e.g.\n * `inlineCreativeManagement: false`) so the conformance runner grades\n * them `not_applicable` instead of `fail`.\n *\n * Resolves the `definePlatform` passthrough gap noted in adcp-client#2199.\n */\n features?: Partial<MediaBuyFeatures>;\n\n /**\n * Creative-protocol capabilities forwarded into `get_adcp_capabilities.creative`.\n * Use to declare `supportsCompliance`, `hasCreativeLibrary`,\n * `supportsGeneration`, and `supportsTransformation` from `definePlatform`.\n * Adopters that don't run a provenance-verification pipeline should\n * declare the relevant fields as `false` so creative storyboards gate\n * cleanly.\n *\n * Resolves the `definePlatform` passthrough gap noted in adcp-client#2199.\n */\n creative?: Partial<CreativeCapabilities>;\n\n /**\n * Account capabilities forwarded into `get_adcp_capabilities.account` as a\n * base layer. The framework's existing `requireOperatorAuth` and\n * `supportedBillings` projections overlay on top via the per-domain\n * `account` override, so explicit projections win on those keys.\n * `authorizationEndpoint`, `defaultBilling`, `requiredForProducts`, and\n * `sandbox` are pure adopter-driven additions exposed through this slot.\n *\n * Resolves the `definePlatform` passthrough gap noted in adcp-client#2199.\n */\n account?: Partial<AccountCapabilities>;\n\n /**\n * Deep-merge overrides applied to the wire `get_adcp_capabilities`\n * response. Use this for fields that the top-level `DecisioningCapabilities`\n * shape doesn't model — `media_buy.propagation_surfaces`,\n * `media_buy.measurement_terms`, `signals.discovery_modes`, etc. The\n * framework's per-domain projections (auto-derived `media_buy`, `brand`,\n * `account`, `compliance_testing` blocks) are merged AFTER adopter\n * overrides, so framework-derived values remain authoritative on the keys\n * the projection engine handles.\n *\n * Mirrors `AdcpCapabilitiesConfig.overrides` on the lower-level\n * `createAdcpServer` API. Resolves the `definePlatform` passthrough gap\n * noted in adcp-client#2199.\n */\n overrides?: AdcpCapabilitiesOverrides;\n\n /**\n * Release-precision AdCP versions this platform supports (e.g. `[\"3.0\", \"3.1\"]`).\n * Forwarded into `get_adcp_capabilities.adcp.supported_versions`. 3.1+\n * sellers should declare here the same release-precision strings they\n * emit in `adcp_version` on responses; 3.0-pinned sellers can omit.\n *\n * Resolves the same gap previously noted for `supported_versions` —\n * was unreachable through `definePlatform` because\n * `CreateAdcpServerFromPlatformOptions` omits `'capabilities'` from\n * `AdcpServerConfig`. See adcp-client#2199.\n */\n supported_versions?: string[];\n\n /**\n * Platform-specific config. Strongly typed when the adopter uses the generic.\n * Example: `class GAM extends DecisioningPlatform<{ networkId: string }>`.\n */\n config: TConfig;\n\n /**\n * Optional Zod schema for runtime validation of `config`. When provided,\n * framework validates at platform construction time; missing or wrong-shaped\n * config rejects the agent at boot rather than at first request.\n */\n configSchema?: ZodSchema<TConfig>;\n}\n\nexport interface CreativeAgentRef {\n agent_url: string;\n /** Human-readable label for this creative agent. */\n name?: string;\n /** Optional allowlist of `format_id.id` values from THIS agent's catalog. Omit to include all. */\n format_ids?: string[];\n}\n\n/**\n * Targeting capabilities the platform supports in `create_media_buy`. Maps\n * to AdCP `GetAdcpCapabilitiesResponse.media_buy.execution.targeting`.\n *\n * Shape converged across two independently-evolved peer codebases (Scope3\n * `agentic-adapters`, Prebid `salesagent`). Per-geo-system flags rather than\n * coarse enums because the two implementations agreed: real platforms support\n * specific geo identifier formats (Nielsen DMA, Eurostat NUTS2, US ZIP+4), not\n * abstract \"metro\" / \"postal\" categories.\n */\nexport interface TargetingCapabilities {\n geo_countries?: boolean;\n geo_regions?: boolean;\n\n /** Metro / DMA identifier systems. */\n geo_metros?: {\n nielsen_dma?: boolean;\n uk_itl1?: boolean;\n uk_itl2?: boolean;\n eurostat_nuts2?: boolean;\n };\n\n /**\n * Postal-code identifier systems.\n *\n * AdCP 3.1.0-rc.10 prefers country-keyed arrays, e.g.\n * `{ US: ['zip'], GB: ['outward'] }`. Deprecated country-fused booleans\n * such as `{ us_zip: true }` remain accepted for 3.x adopters; the\n * framework projects both forms with `normalizePostalAreaSupport()` so old\n * and new buyers can read the capability safely during the migration.\n */\n geo_postal_areas?: TargetingPostalAreaSupport;\n\n /** Geographic-proximity targeting (radius / drive-time / arbitrary geometry). */\n geo_proximity?: {\n radius?: boolean;\n travel_time?: boolean;\n geometry?: boolean;\n transport_modes?: ReadonlyArray<'walking' | 'cycling' | 'driving' | 'public_transport'>;\n };\n\n /** Age-restriction targeting; `verification_methods` enumerates the assurance levels accepted. */\n age_restriction?: {\n supported?: boolean;\n verification_methods?: ReadonlyArray<\n 'facial_age_estimation' | 'id_document' | 'digital_id' | 'credit_card' | 'world_id'\n >;\n };\n\n device_platform?: boolean;\n device_type?: boolean;\n language?: boolean;\n audience_include?: boolean;\n audience_exclude?: boolean;\n\n /** Keyword-targeting match types accepted on positive-match terms. */\n keyword_targets?: {\n supported_match_types: ReadonlyArray<'broad' | 'phrase' | 'exact'>;\n };\n\n /** Negative-keyword match types accepted. */\n negative_keywords?: {\n supported_match_types: ReadonlyArray<'broad' | 'phrase' | 'exact'>;\n };\n}\n\nexport type TargetingPostalAreaSupport = {\n US?: readonly ('zip' | 'zip_plus_four')[];\n GB?: readonly ('outward' | 'full')[];\n CA?: readonly ('fsa' | 'full')[];\n DE?: readonly 'plz'[];\n CH?: readonly 'plz'[];\n AT?: readonly 'plz'[];\n FR?: readonly 'code_postal'[];\n AU?: readonly 'postcode'[];\n BR?: readonly 'cep'[];\n IN?: readonly 'pin'[];\n ZA?: readonly 'postal_code'[];\n /** @deprecated Use `US: ['zip']`. */\n us_zip?: boolean;\n /** @deprecated Use `US: ['zip_plus_four']`. */\n us_zip_plus_four?: boolean;\n /** @deprecated Use `GB: ['outward']`. */\n gb_outward?: boolean;\n /** @deprecated Use `GB: ['full']`. */\n gb_full?: boolean;\n /** @deprecated Use `CA: ['fsa']`. */\n ca_fsa?: boolean;\n /** @deprecated Use `CA: ['full']`. */\n ca_full?: boolean;\n /** @deprecated Use `DE: ['plz']`. */\n de_plz?: boolean;\n /** @deprecated Use `FR: ['code_postal']`. */\n fr_code_postal?: boolean;\n /** @deprecated Use `AU: ['postcode']`. */\n au_postcode?: boolean;\n /** @deprecated Use `CH: ['plz']`. */\n ch_plz?: boolean;\n /** @deprecated Use `AT: ['plz']`. */\n at_plz?: boolean;\n [country: `${Uppercase<string>}`]:\n | readonly (\n | 'zip'\n | 'zip_plus_four'\n | 'outward'\n | 'full'\n | 'fsa'\n | 'plz'\n | 'code_postal'\n | 'postcode'\n | 'cep'\n | 'pin'\n | 'postal_code'\n | 'custom'\n )[]\n | undefined;\n};\n\nconst LEGACY_POSTAL_SYSTEMS = {\n us_zip: { country: 'US', system: 'zip' },\n us_zip_plus_four: { country: 'US', system: 'zip_plus_four' },\n gb_outward: { country: 'GB', system: 'outward' },\n gb_full: { country: 'GB', system: 'full' },\n ca_fsa: { country: 'CA', system: 'fsa' },\n ca_full: { country: 'CA', system: 'full' },\n de_plz: { country: 'DE', system: 'plz' },\n fr_code_postal: { country: 'FR', system: 'code_postal' },\n au_postcode: { country: 'AU', system: 'postcode' },\n ch_plz: { country: 'CH', system: 'plz' },\n at_plz: { country: 'AT', system: 'plz' },\n} as const;\n\nconst LEGACY_POSTAL_BY_COUNTRY_SYSTEM = new Map(\n Object.entries(LEGACY_POSTAL_SYSTEMS).map(([legacy, { country, system }]) => [`${country}:${system}`, legacy])\n);\n\nconst POSTAL_SYSTEMS_BY_COUNTRY: Record<string, readonly string[]> = {\n US: ['zip', 'zip_plus_four'],\n GB: ['outward', 'full'],\n CA: ['fsa', 'full'],\n DE: ['plz'],\n CH: ['plz'],\n AT: ['plz'],\n FR: ['code_postal'],\n AU: ['postcode'],\n BR: ['cep'],\n IN: ['pin'],\n ZA: ['postal_code'],\n};\n\nconst GENERIC_POSTAL_SYSTEMS = ['postal_code', 'custom'] as const;\nconst POSTAL_COUNTRY_KEY_PATTERN = /^[A-Z]{2}$/;\n\nfunction appendUnique(target: string[], value: string): void {\n if (!target.includes(value)) target.push(value);\n}\n\nfunction assertSupportedPostalSystems(country: string, systems: readonly string[]): void {\n const allowed = POSTAL_SYSTEMS_BY_COUNTRY[country] ?? GENERIC_POSTAL_SYSTEMS;\n const invalid = systems.filter(system => !allowed.includes(system));\n if (invalid.length > 0) {\n throw new Error(\n `Invalid geo_postal_areas support for ${country}: ${invalid.join(', ')}. ` +\n `Supported systems are: ${allowed.join(', ')}.`\n );\n }\n}\n\n/**\n * Normalize postal-area capabilities across the AdCP 3.1.0-rc.10 migration.\n *\n * The wire schema now prefers `{ US: ['zip'] }` style country-local systems,\n * while the old `{ us_zip: true }` booleans stay deprecated but accepted\n * through 3.x. This helper is deliberately bidirectional:\n *\n * - legacy booleans add their country-keyed system;\n * - country-keyed systems backfill the matching legacy boolean when one exists;\n * - explicit unsupported legacy booleans are omitted unless the system is\n * otherwise advertised.\n */\nexport function normalizePostalAreaSupport(input: TargetingPostalAreaSupport): PostalAreaSupport {\n const normalized: Record<string, string[] | boolean> = {};\n\n for (const [key, value] of Object.entries(input)) {\n if (Array.isArray(value)) {\n if (!POSTAL_COUNTRY_KEY_PATTERN.test(key)) {\n throw new Error(\n `Invalid geo_postal_areas key \"${key}\". Use an ISO 3166-1 alpha-2 country code or a deprecated legacy boolean alias.`\n );\n }\n assertSupportedPostalSystems(key, value);\n const systems = (normalized[key] = Array.isArray(normalized[key]) ? (normalized[key] as string[]) : []);\n for (const system of value) appendUnique(systems, system);\n continue;\n }\n if (value === true && key in LEGACY_POSTAL_SYSTEMS) {\n const { country, system } = LEGACY_POSTAL_SYSTEMS[key as keyof typeof LEGACY_POSTAL_SYSTEMS];\n const systems = (normalized[country] = Array.isArray(normalized[country])\n ? (normalized[country] as string[])\n : []);\n appendUnique(systems, system);\n continue;\n }\n if (value === true) {\n throw new Error(\n `Invalid geo_postal_areas legacy alias \"${key}\". Use an ISO 3166-1 alpha-2 country key with supported postal systems.`\n );\n }\n }\n\n for (const [country, value] of Object.entries(normalized)) {\n if (!Array.isArray(value)) continue;\n for (const system of value) {\n const legacy = LEGACY_POSTAL_BY_COUNTRY_SYSTEM.get(`${country}:${system}`);\n if (legacy) normalized[legacy] = true;\n }\n }\n\n return normalized as PostalAreaSupport;\n}\n\nexport function normalizeTargetingCapabilities(input: TargetingCapabilities): _MediaBuyTargetingCapabilities {\n return {\n ...input,\n ...(input.geo_postal_areas && { geo_postal_areas: normalizePostalAreaSupport(input.geo_postal_areas) }),\n } as _MediaBuyTargetingCapabilities;\n}\n\n/**\n * Reporting capabilities the platform supports in `get_media_buy_delivery`.\n *\n * `availableDimensions` is the breakdown axes the platform can group\n * delivery rows by. Vocabulary converged across Scope3 and Prebid.\n */\nexport interface ReportingCapabilities {\n frequencies: ReadonlyArray<'hourly' | 'daily' | 'weekly'>;\n expected_delay_minutes: number;\n timezone: string;\n metrics: string[];\n date_range_support: 'date_range' | 'fixed_only';\n supports_webhooks: boolean;\n availableDimensions?: ReadonlyArray<\n 'geo' | 'device_type' | 'device_platform' | 'audience' | 'placement' | 'creative' | 'keyword' | 'catalog_item'\n >;\n}\n\n/**\n * Brand-protocol capabilities — projected onto the wire `brand` block of\n * `get_adcp_capabilities` via the framework's `overrides.brand` deep-merge\n * seam. Adopters who also implement `BrandRightsPlatform` get\n * `rights: true` auto-derived; the other four fields (`right_types`,\n * `available_uses`, `generation_providers`, `description`) are\n * adopter-declared.\n *\n * Wire spec: `protocol/get-adcp-capabilities-response.json#brand`.\n */\nexport type BrandCapabilities = NonNullable<NonNullable<GetAdCPCapabilitiesResponse['brand']>>;\n\n/**\n * Compliance-testing capabilities — projected onto the wire-side\n * `compliance_testing` block of `get_adcp_capabilities` so buyers and\n * conformance harnesses can discover which `comply_test_controller`\n * scenarios the agent supports.\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#compliance_testing`.\n *\n * The `scenarios` array MUST be non-empty when this block is declared\n * (per the spec). `'list_scenarios'` is implicit — adopters don't need\n * to enumerate it.\n */\nexport interface ComplianceTestingCapabilities {\n /**\n * Scenarios this agent advertises support for. The wire field is open to\n * implementation-specific string values; canonical controller scenarios\n * are recommendations, not an enum constraint. `list_scenarios` remains a\n * discovery operation rather than a test capability. Framework defaults\n * this from the adopter-supplied `complyTest` adapter set when omitted.\n */\n scenarios?: ReadonlyArray<_ComplianceTestingScenario>;\n}\n"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/server/decisioning/capabilities.ts"],"sourcesContent":["/**\n * DecisioningCapabilities — single source of truth for `get_adcp_capabilities`\n * response and any admin UI surface a host wants to render.\n *\n * Adopters declare once. Framework wires the wire-protocol response;\n * adopters' admin tools (or the SDK CLI's `validate_platform_config`) consume\n * the same dataclass so there's no drift between \"what the agent says it\n * supports\" and \"what it actually does.\"\n *\n * Status: Preview / 6.0.\n *\n * @public\n */\n\nimport type { ZodSchema } from 'zod';\nimport type {\n AdCPSpecialism,\n MediaChannel,\n PaymentTerms,\n PricingModel,\n GetAdCPCapabilitiesResponse,\n PostalAreaSupport,\n} from '../../types/tools.generated';\nimport type { ProductMetricOptimizationLike } from '../../utils/capability-rollups';\nimport type { MediaBuyFeatures, AccountCapabilities, CreativeCapabilities } from '../../utils/capabilities';\nimport type { AdcpCapabilitiesOverrides } from '../create-adcp-server';\n\n/**\n * Pre-resolved alias for the wire `media_buy` block. Used as the projection\n * source for the five `media_buy.*` capability fields below so each typed\n * field references a single resolved shape instead of re-walking the\n * `GetAdCPCapabilitiesResponse` type graph independently. Without the\n * alias, `strict + skipLibCheck:false` adopters hit the TS instantiation\n * budget on the published `.d.ts` and tsc OOMs.\n */\ntype _MediaBuyCapabilities = NonNullable<GetAdCPCapabilitiesResponse['media_buy']>;\ntype _MediaBuyTargetingCapabilities = NonNullable<NonNullable<_MediaBuyCapabilities['execution']>['targeting']>;\ntype _ComplianceTestingScenario = NonNullable<\n NonNullable<GetAdCPCapabilitiesResponse['compliance_testing']>['scenarios']\n>[number];\n\nexport interface DecisioningCapabilities<TConfig = unknown> {\n /**\n * Specialisms claimed; framework type-checks these against implemented platform\n * interfaces. Arrays are `readonly` so adopters can declare with `as const`\n * (load-bearing for the `RequiredPlatformsFor<S>` compile-time gate).\n */\n specialisms: readonly AdCPSpecialism[];\n\n /**\n * Creative agents this seller composes with. Framework fetches format catalogs\n * from each (1h cache) and unions them on `list_creative_formats`. Self-hosting\n * sellers point at their own `agent_url`; framework calls into their\n * `CreativePlatform.listFormats()` locally instead of HTTP-fetching.\n *\n * `format_ids` filter (optional) subsets a single creative agent's catalog.\n * Useful when a creative agent hosts 50 formats but this seller only accepts\n * 10 of them. Filter scope is per-creative-agent: `[{ agent_url: A, format_ids: ['x'] }, { agent_url: B }]`\n * means \"from A only format x; from B all formats.\"\n *\n * Omit for signals-only platforms (`signal-marketplace`, `signal-owned`) — they\n * sell audience data access, not media inventory, and don't compose with creative agents.\n */\n creative_agents?: readonly CreativeAgentRef[];\n\n /**\n * Channels this platform sells.\n *\n * Omit for non-media-buy platforms — they don't sell ad inventory and have no\n * channels to declare. Applies to signals (`signal-marketplace`, `signal-owned`),\n * governance (`governance-spend-authority`, `governance-delivery-monitor`,\n * `property-lists`, `collection-lists`, `content-standards`), creative-only\n * (`creative-ad-server`, `creative-template`, `creative-generative`), and\n * brand (`brand-rights`) platforms.\n *\n * **Required at runtime for media-buy platforms.** `validatePlatform` (called\n * by `createAdcpServerFromPlatform`) throws `PlatformConfigError` when any\n * `sales-*` specialism is claimed and this field is absent.\n */\n channels?: readonly MediaChannel[];\n\n /**\n * Pricing models this platform supports.\n *\n * Omit for non-media-buy platforms — they don't sell ad inventory and have no\n * channel-level pricing to declare. For signals platforms specifically, pricing\n * is declared per-signal in the signal descriptor's `pricing_options[]` instead.\n * Same non-media-buy specialism set as `channels` above.\n *\n * **Required at runtime for media-buy platforms.** `validatePlatform` (called\n * by `createAdcpServerFromPlatform`) throws `PlatformConfigError` when any\n * `sales-*` specialism is claimed and this field is absent.\n */\n pricingModels?: readonly PricingModel[];\n\n /** Targeting capabilities. Optional — framework infers reasonable defaults if omitted. */\n targeting?: TargetingCapabilities;\n\n /** Reporting capabilities. Optional — framework infers reasonable defaults if omitted. */\n reporting?: ReportingCapabilities;\n\n /**\n * Audience-matching capabilities — projected onto\n * `get_adcp_capabilities.media_buy.audience_targeting`. Required for\n * audience-sync adopters (CRM-list adopters that accept hashed\n * identifiers + UID types) so buyers know which identifier shapes\n * the platform will match against and what minimum audience size /\n * matching latency to expect. Omit when the platform doesn't accept\n * external audience uploads.\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.audience_targeting`.\n */\n audience_targeting?: NonNullable<_MediaBuyCapabilities['audience_targeting']>;\n\n /**\n * Conversion-tracking capabilities — projected onto\n * `get_adcp_capabilities.media_buy.conversion_tracking`. Required for\n * adopters that accept conversion events via `sync_event_sources` /\n * `log_event` so buyers know which event types, action sources,\n * attribution windows, and identifier shapes the platform supports.\n * Omit when the platform doesn't track conversions.\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.conversion_tracking`.\n */\n conversion_tracking?: NonNullable<_MediaBuyCapabilities['conversion_tracking']>;\n\n /**\n * Content-standards capabilities — projected onto\n * `get_adcp_capabilities.media_buy.content_standards`. Required for\n * adopters claiming the `content-standards` specialism so buyers know\n * whether the platform runs local evaluation, which channels it\n * covers, and whether it supports webhook artifact delivery. Omit\n * when the platform doesn't ship content-standards artifacts.\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.content_standards`.\n */\n content_standards?: NonNullable<_MediaBuyCapabilities['content_standards']>;\n\n /**\n * Seller-level rollup of optimization metrics — projected onto\n * `get_adcp_capabilities.media_buy.supported_optimization_metrics`.\n * Added in AdCP 3.1 (adcp#4669). The array union of every product's\n * `metric_optimization.supported_metrics`. Storyboard runners gate\n * `metric_optimization`-using scenarios on this field; declaring it\n * gives buyers an upfront signal of which optimization metrics the\n * seller can compute against (clicks, views, completed_views, etc.).\n *\n * Adopters can compute the rollup from their catalog using the\n * exported {@link rollupOptimizationMetricsFromProducts} helper —\n * keeps the declaration in sync with what products actually offer.\n * Empty arrays are normalized away and the wire field is omitted; use\n * omission to mean \"no seller-level metric rollup advertised\".\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.supported_optimization_metrics`.\n */\n supported_optimization_metrics?: NonNullable<_MediaBuyCapabilities['supported_optimization_metrics']>;\n\n /**\n * Static product-metric summary used for capability rollups.\n *\n * When this is present and `supported_optimization_metrics` is omitted,\n * the framework derives `media_buy.supported_optimization_metrics` as the\n * sorted union of every product summary's\n * `metric_optimization.supported_metrics`. Full AdCP `Product` objects work,\n * but this field is not a general product-discovery surface; a lightweight\n * startup summary with just the `metric_optimization` block is enough.\n * Dynamic per-account catalogs should continue to pass an explicit\n * `supported_optimization_metrics` override. If the derived union is empty,\n * the framework omits `supported_optimization_metrics` from the wire\n * capabilities response.\n */\n productCatalog?: ReadonlyArray<ProductMetricOptimizationLike>;\n\n /**\n * Frequency-cap support declaration — projected onto\n * `get_adcp_capabilities.media_buy.frequency_capping`. Added in AdCP\n * 3.1 (adcp#4670). Presence-only object with `supported_per_units` /\n * `supported_window_units` sub-fields declaring which frequency-cap\n * shapes the platform honors. Omit when the platform doesn't accept\n * frequency caps at all; buyers will avoid the field on `pacing.*`.\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.frequency_capping`.\n */\n frequency_capping?: NonNullable<_MediaBuyCapabilities['frequency_capping']>;\n\n /**\n * Whether this seller commits to the proposal lifecycle on get_products.\n * Projected onto `get_adcp_capabilities.media_buy.supports_proposals`.\n * Direct-buy sellers should declare `false` so proposal-only compliance\n * storyboards are skipped; sellers with a ProposalManager are auto-derived\n * as `true` unless they override this explicitly.\n */\n supportsProposals?: boolean;\n\n /**\n * Brand-protocol capabilities. Projected onto the wire `brand` block of\n * `get_adcp_capabilities` (`brand: { rights, right_types, available_uses,\n * generation_providers, description }`). The framework auto-derives\n * `rights: true` when `BrandRightsPlatform` is supplied; adopters\n * declare the rest (right_types they license, RightUses they support,\n * generation providers they issue credentials for).\n *\n * REQUIRED when claiming the `'brand-rights'` specialism — enforced at\n * compile-time via `RequiredCapabilitiesFor<S>`.\n */\n brand?: BrandCapabilities;\n\n /**\n * Compliance-testing capabilities. The presence of this block declares\n * the deployment supports deterministic state-machine testing via the\n * `comply_test_controller` wire tool. Keep this block declared when using\n * `createAdcpServerFromPlatform(..., { complyTest })`; the framework makes\n * live principals byte-identical to a production seller that never wired the\n * controller by hiding this block, filtering `tools/list`, and returning MCP\n * method-not-found for direct live calls.\n *\n * When this block is present, `createAdcpServerFromPlatform` REQUIRES\n * `opts.complyTest` (the `ComplyControllerConfig` adapter set) to be\n * supplied — claiming the capability without implementing the\n * controller is a `PlatformConfigError` at construction.\n *\n * Inversely, supplying `opts.complyTest` without declaring this\n * capability is also caught — the framework derives `scenarios` from\n * the declared force/simulate/seed adapters and emits the discovery\n * field on `get_adcp_capabilities` automatically for sandbox/mock\n * principals. Live principals do not see the block.\n */\n compliance_testing?: ComplianceTestingCapabilities;\n\n /**\n * Billing parties this platform supports. `'operator'` = retail-media model\n * (Criteo, Amazon — operator pays the publisher and bills the brand).\n * `'agent'` = pass-through model (buyer's agent settles directly with the\n * platform). `'advertiser'` = seller invoices the advertiser directly,\n * bypassing operator settlement (advertiser-direct sell-side platforms where\n * the brand is the direct contractual counterparty). Defaults to `['agent']`\n * when omitted. To express advertiser-direct billing per account, set\n * `billing.invoicedTo` to a `BrandReference` (the framework maps any\n * `BrandReference` to `'advertiser'` on the wire).\n */\n supportedBillings?: ReadonlyArray<'operator' | 'agent' | 'advertiser'>;\n\n /**\n * Payment terms this platform accepts on `sync_accounts.payment_terms`.\n * Omit to leave terms validation to `accounts.upsert` (or to accept any\n * schema-valid value). When present, the framework rejects unsupported\n * requested terms with `PAYMENT_TERMS_NOT_SUPPORTED` before dispatching\n * the account entry to the adopter.\n */\n supportedPaymentTerms?: ReadonlyArray<PaymentTerms>;\n\n /**\n * If true, this platform refuses transactions without an authenticated\n * operator principal (operator-billed retail-media). Framework emits\n * `AUTH_REQUIRED` envelope before dispatching to the platform.\n */\n requireOperatorAuth?: boolean;\n\n /**\n * Media-buy feature flags forwarded into `get_adcp_capabilities.media_buy.features`.\n * Adopter values serve as the base; auto-derived `audience_targeting`,\n * `conversion_tracking`, and `content_standards` booleans take precedence\n * for those three keys (overlaid by the framework via the per-domain\n * `media_buy` override on the inner createAdcpServer call). Use this to\n * declare `inlineCreativeManagement` and `propertyListFiltering` directly\n * from `definePlatform`; declare not-supported feature blocks (e.g.\n * `inlineCreativeManagement: false`) so the conformance runner grades\n * them `not_applicable` instead of `fail`.\n *\n * Resolves the `definePlatform` passthrough gap noted in adcp-client#2199.\n */\n features?: Partial<MediaBuyFeatures>;\n\n /**\n * Creative-protocol capabilities forwarded into `get_adcp_capabilities.creative`.\n * Use to declare `supportsCompliance`, `hasCreativeLibrary`,\n * `supportsGeneration`, and `supportsTransformation` from `definePlatform`.\n * Adopters that don't run a provenance-verification pipeline should\n * declare the relevant fields as `false` so creative storyboards gate\n * cleanly.\n *\n * Resolves the `definePlatform` passthrough gap noted in adcp-client#2199.\n */\n creative?: Partial<CreativeCapabilities>;\n\n /**\n * Account capabilities forwarded into `get_adcp_capabilities.account` as a\n * base layer. The framework's existing `requireOperatorAuth` and\n * `supportedBillings` projections overlay on top via the per-domain\n * `account` override, so explicit projections win on those keys.\n * `authorizationEndpoint`, `defaultBilling`, `requiredForProducts`, and\n * `sandbox` are pure adopter-driven additions exposed through this slot.\n *\n * Resolves the `definePlatform` passthrough gap noted in adcp-client#2199.\n */\n account?: Partial<AccountCapabilities>;\n\n /**\n * Deep-merge overrides applied to the wire `get_adcp_capabilities`\n * response. Use this for fields that the top-level `DecisioningCapabilities`\n * shape doesn't model — `media_buy.propagation_surfaces`,\n * `media_buy.measurement_terms`, `signals.discovery_modes`, etc. The\n * framework's per-domain projections (auto-derived `media_buy`, `brand`,\n * `account`, `compliance_testing` blocks) are merged AFTER adopter\n * overrides, so framework-derived values remain authoritative on the keys\n * the projection engine handles.\n *\n * Mirrors `AdcpCapabilitiesConfig.overrides` on the lower-level\n * `createAdcpServer` API. Resolves the `definePlatform` passthrough gap\n * noted in adcp-client#2199.\n */\n overrides?: AdcpCapabilitiesOverrides;\n\n /**\n * Release-precision AdCP versions this platform supports (e.g. `[\"3.0\", \"3.1\"]`).\n * Forwarded into `get_adcp_capabilities.adcp.supported_versions`. 3.1+\n * sellers should declare here the same release-precision strings they\n * emit in `adcp_version` on responses; 3.0-pinned sellers can omit.\n *\n * Resolves the same gap previously noted for `supported_versions` —\n * was unreachable through `definePlatform` because\n * `CreateAdcpServerFromPlatformOptions` omits `'capabilities'` from\n * `AdcpServerConfig`. See adcp-client#2199.\n */\n supported_versions?: string[];\n\n /**\n * Platform-specific config. Strongly typed when the adopter uses the generic.\n * Example: `class GAM extends DecisioningPlatform<{ networkId: string }>`.\n */\n config: TConfig;\n\n /**\n * Optional Zod schema for runtime validation of `config`. When provided,\n * framework validates at platform construction time; missing or wrong-shaped\n * config rejects the agent at boot rather than at first request.\n */\n configSchema?: ZodSchema<TConfig>;\n}\n\nexport interface CreativeAgentRef {\n agent_url: string;\n /** Human-readable label for this creative agent. */\n name?: string;\n /** Optional allowlist of `format_id.id` values from THIS agent's catalog. Omit to include all. */\n format_ids?: string[];\n}\n\n/**\n * Targeting capabilities the platform supports in `create_media_buy`. Maps\n * to AdCP `GetAdcpCapabilitiesResponse.media_buy.execution.targeting`.\n *\n * Shape converged across two independently-evolved peer codebases (Scope3\n * `agentic-adapters`, Prebid `salesagent`). Per-geo-system flags rather than\n * coarse enums because the two implementations agreed: real platforms support\n * specific geo identifier formats (Nielsen DMA, Eurostat NUTS2, US ZIP+4), not\n * abstract \"metro\" / \"postal\" categories.\n */\nexport interface TargetingCapabilities {\n geo_countries?: boolean;\n geo_regions?: boolean;\n\n /** Metro / DMA identifier systems. */\n geo_metros?: {\n nielsen_dma?: boolean;\n uk_itl1?: boolean;\n uk_itl2?: boolean;\n eurostat_nuts2?: boolean;\n };\n\n /**\n * Postal-code identifier systems.\n *\n * AdCP 3.1.0-rc.10 prefers country-keyed arrays, e.g.\n * `{ US: ['zip'], GB: ['outward'] }`. Deprecated country-fused booleans\n * such as `{ us_zip: true }` remain accepted for 3.x adopters; the\n * framework projects both forms with `normalizePostalAreaSupport()` so old\n * and new buyers can read the capability safely during the migration.\n */\n geo_postal_areas?: TargetingPostalAreaSupport;\n\n /** Geographic-proximity targeting (radius / drive-time / arbitrary geometry). */\n geo_proximity?: {\n radius?: boolean;\n travel_time?: boolean;\n geometry?: boolean;\n transport_modes?: ReadonlyArray<'walking' | 'cycling' | 'driving' | 'public_transport'>;\n };\n\n /** Age-restriction targeting; `verification_methods` enumerates the assurance levels accepted. */\n age_restriction?: {\n supported?: boolean;\n verification_methods?: ReadonlyArray<\n 'facial_age_estimation' | 'id_document' | 'digital_id' | 'credit_card' | 'world_id'\n >;\n };\n\n device_platform?: boolean;\n device_type?: boolean;\n language?: boolean;\n audience_include?: boolean;\n audience_exclude?: boolean;\n\n /** Keyword-targeting match types accepted on positive-match terms. */\n keyword_targets?: {\n supported_match_types: ReadonlyArray<'broad' | 'phrase' | 'exact'>;\n };\n\n /** Negative-keyword match types accepted. */\n negative_keywords?: {\n supported_match_types: ReadonlyArray<'broad' | 'phrase' | 'exact'>;\n };\n}\n\nexport type TargetingPostalAreaSupport = {\n US?: readonly ('zip' | 'zip_plus_four')[];\n GB?: readonly ('outward' | 'full')[];\n CA?: readonly ('fsa' | 'full')[];\n DE?: readonly 'plz'[];\n CH?: readonly 'plz'[];\n AT?: readonly 'plz'[];\n FR?: readonly 'code_postal'[];\n AU?: readonly 'postcode'[];\n BR?: readonly 'cep'[];\n IN?: readonly 'pin'[];\n ZA?: readonly 'postal_code'[];\n /** @deprecated Use `US: ['zip']`. */\n us_zip?: boolean;\n /** @deprecated Use `US: ['zip_plus_four']`. */\n us_zip_plus_four?: boolean;\n /** @deprecated Use `GB: ['outward']`. */\n gb_outward?: boolean;\n /** @deprecated Use `GB: ['full']`. */\n gb_full?: boolean;\n /** @deprecated Use `CA: ['fsa']`. */\n ca_fsa?: boolean;\n /** @deprecated Use `CA: ['full']`. */\n ca_full?: boolean;\n /** @deprecated Use `DE: ['plz']`. */\n de_plz?: boolean;\n /** @deprecated Use `FR: ['code_postal']`. */\n fr_code_postal?: boolean;\n /** @deprecated Use `AU: ['postcode']`. */\n au_postcode?: boolean;\n /** @deprecated Use `CH: ['plz']`. */\n ch_plz?: boolean;\n /** @deprecated Use `AT: ['plz']`. */\n at_plz?: boolean;\n [country: `${Uppercase<string>}`]:\n | readonly (\n | 'zip'\n | 'zip_plus_four'\n | 'outward'\n | 'full'\n | 'fsa'\n | 'plz'\n | 'code_postal'\n | 'postcode'\n | 'cep'\n | 'pin'\n | 'postal_code'\n | 'custom'\n )[]\n | undefined;\n};\n\nconst LEGACY_POSTAL_SYSTEMS = {\n us_zip: { country: 'US', system: 'zip' },\n us_zip_plus_four: { country: 'US', system: 'zip_plus_four' },\n gb_outward: { country: 'GB', system: 'outward' },\n gb_full: { country: 'GB', system: 'full' },\n ca_fsa: { country: 'CA', system: 'fsa' },\n ca_full: { country: 'CA', system: 'full' },\n de_plz: { country: 'DE', system: 'plz' },\n fr_code_postal: { country: 'FR', system: 'code_postal' },\n au_postcode: { country: 'AU', system: 'postcode' },\n ch_plz: { country: 'CH', system: 'plz' },\n at_plz: { country: 'AT', system: 'plz' },\n} as const;\n\nconst LEGACY_POSTAL_BY_COUNTRY_SYSTEM = new Map(\n Object.entries(LEGACY_POSTAL_SYSTEMS).map(([legacy, { country, system }]) => [`${country}:${system}`, legacy])\n);\n\nconst POSTAL_SYSTEMS_BY_COUNTRY: Record<string, readonly string[]> = {\n US: ['zip', 'zip_plus_four'],\n GB: ['outward', 'full'],\n CA: ['fsa', 'full'],\n DE: ['plz'],\n CH: ['plz'],\n AT: ['plz'],\n FR: ['code_postal'],\n AU: ['postcode'],\n BR: ['cep'],\n IN: ['pin'],\n ZA: ['postal_code'],\n};\n\nconst GENERIC_POSTAL_SYSTEMS = ['postal_code', 'custom'] as const;\nconst POSTAL_COUNTRY_KEY_PATTERN = /^[A-Z]{2}$/;\n\nfunction appendUnique(target: string[], value: string): void {\n if (!target.includes(value)) target.push(value);\n}\n\nfunction assertSupportedPostalSystems(country: string, systems: readonly string[]): void {\n const allowed = POSTAL_SYSTEMS_BY_COUNTRY[country] ?? GENERIC_POSTAL_SYSTEMS;\n const invalid = systems.filter(system => !allowed.includes(system));\n if (invalid.length > 0) {\n throw new Error(\n `Invalid geo_postal_areas support for ${country}: ${invalid.join(', ')}. ` +\n `Supported systems are: ${allowed.join(', ')}.`\n );\n }\n}\n\n/**\n * Normalize postal-area capabilities across the AdCP 3.1.0-rc.10 migration.\n *\n * The wire schema now prefers `{ US: ['zip'] }` style country-local systems,\n * while the old `{ us_zip: true }` booleans stay deprecated but accepted\n * through 3.x. This helper is deliberately bidirectional:\n *\n * - legacy booleans add their country-keyed system;\n * - country-keyed systems backfill the matching legacy boolean when one exists;\n * - explicit unsupported legacy booleans are omitted unless the system is\n * otherwise advertised.\n */\nexport function normalizePostalAreaSupport(input: TargetingPostalAreaSupport): PostalAreaSupport {\n const normalized: Record<string, string[] | boolean> = {};\n\n for (const [key, value] of Object.entries(input)) {\n if (Array.isArray(value)) {\n if (!POSTAL_COUNTRY_KEY_PATTERN.test(key)) {\n throw new Error(\n `Invalid geo_postal_areas key \"${key}\". Use an ISO 3166-1 alpha-2 country code or a deprecated legacy boolean alias.`\n );\n }\n assertSupportedPostalSystems(key, value);\n const systems = (normalized[key] = Array.isArray(normalized[key]) ? (normalized[key] as string[]) : []);\n for (const system of value) appendUnique(systems, system);\n continue;\n }\n if (value === true && key in LEGACY_POSTAL_SYSTEMS) {\n const { country, system } = LEGACY_POSTAL_SYSTEMS[key as keyof typeof LEGACY_POSTAL_SYSTEMS];\n const systems = (normalized[country] = Array.isArray(normalized[country])\n ? (normalized[country] as string[])\n : []);\n appendUnique(systems, system);\n continue;\n }\n if (value === true) {\n throw new Error(\n `Invalid geo_postal_areas legacy alias \"${key}\". Use an ISO 3166-1 alpha-2 country key with supported postal systems.`\n );\n }\n }\n\n for (const [country, value] of Object.entries(normalized)) {\n if (!Array.isArray(value)) continue;\n for (const system of value) {\n const legacy = LEGACY_POSTAL_BY_COUNTRY_SYSTEM.get(`${country}:${system}`);\n if (legacy) normalized[legacy] = true;\n }\n }\n\n return normalized as PostalAreaSupport;\n}\n\nexport function normalizeTargetingCapabilities(input: TargetingCapabilities): _MediaBuyTargetingCapabilities {\n return {\n ...input,\n ...(input.geo_postal_areas && { geo_postal_areas: normalizePostalAreaSupport(input.geo_postal_areas) }),\n } as _MediaBuyTargetingCapabilities;\n}\n\n/**\n * Reporting capabilities the platform supports in `get_media_buy_delivery`.\n *\n * `availableDimensions` is the breakdown axes the platform can group\n * delivery rows by. Vocabulary converged across Scope3 and Prebid.\n */\nexport interface ReportingCapabilities {\n frequencies: ReadonlyArray<'hourly' | 'daily' | 'weekly'>;\n expected_delay_minutes: number;\n timezone: string;\n metrics: string[];\n date_range_support: 'date_range' | 'fixed_only';\n supports_webhooks: boolean;\n availableDimensions?: ReadonlyArray<\n 'geo' | 'device_type' | 'device_platform' | 'audience' | 'placement' | 'creative' | 'keyword' | 'catalog_item'\n >;\n}\n\n/**\n * Brand-protocol capabilities — projected onto the wire `brand` block of\n * `get_adcp_capabilities` via the framework's `overrides.brand` deep-merge\n * seam. Adopters who also implement `BrandRightsPlatform` get\n * `rights: true` auto-derived; the other four fields (`right_types`,\n * `available_uses`, `generation_providers`, `description`) are\n * adopter-declared.\n *\n * Wire spec: `protocol/get-adcp-capabilities-response.json#brand`.\n */\nexport type BrandCapabilities = NonNullable<NonNullable<GetAdCPCapabilitiesResponse['brand']>>;\n\n/**\n * Compliance-testing capabilities — projected onto the wire-side\n * `compliance_testing` block of `get_adcp_capabilities` so buyers and\n * conformance harnesses can discover which `comply_test_controller`\n * scenarios the agent supports.\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#compliance_testing`.\n *\n * The `scenarios` array MUST be non-empty when this block is declared\n * (per the spec). `'list_scenarios'` is implicit — adopters don't need\n * to enumerate it.\n */\nexport interface ComplianceTestingCapabilities {\n /**\n * Scenarios this agent advertises support for. Wire enum is the\n * canonical scenario enum, excluding `list_scenarios` because that\n * is a discovery operation rather than a test capability. Framework\n * defaults this from the adopter-supplied `complyTest` adapter set\n * when omitted.\n */\n scenarios?: ReadonlyArray<_ComplianceTestingScenario>;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/lib/server/decisioning/capabilities.ts"],"sourcesContent":["/**\n * DecisioningCapabilities — single source of truth for `get_adcp_capabilities`\n * response and any admin UI surface a host wants to render.\n *\n * Adopters declare once. Framework wires the wire-protocol response;\n * adopters' admin tools (or the SDK CLI's `validate_platform_config`) consume\n * the same dataclass so there's no drift between \"what the agent says it\n * supports\" and \"what it actually does.\"\n *\n * Status: Preview / 6.0.\n *\n * @public\n */\n\nimport type { ZodSchema } from 'zod';\nimport type {\n AdCPSpecialism,\n MediaChannel,\n PaymentTerms,\n PricingModel,\n GetAdCPCapabilitiesResponse,\n PostalAreaSupport,\n} from '../../types/tools.generated';\nimport type { ProductMetricOptimizationLike } from '../../utils/capability-rollups';\nimport type { MediaBuyFeatures, AccountCapabilities, CreativeCapabilities } from '../../utils/capabilities';\nimport type { AdcpCapabilitiesOverrides } from '../create-adcp-server';\n\n/**\n * Pre-resolved alias for the wire `media_buy` block. Used as the projection\n * source for the five `media_buy.*` capability fields below so each typed\n * field references a single resolved shape instead of re-walking the\n * `GetAdCPCapabilitiesResponse` type graph independently. Without the\n * alias, `strict + skipLibCheck:false` adopters hit the TS instantiation\n * budget on the published `.d.ts` and tsc OOMs.\n */\ntype _MediaBuyCapabilities = NonNullable<GetAdCPCapabilitiesResponse['media_buy']>;\ntype _MediaBuyTargetingCapabilities = NonNullable<NonNullable<_MediaBuyCapabilities['execution']>['targeting']>;\ntype _ComplianceTestingScenario = NonNullable<\n NonNullable<GetAdCPCapabilitiesResponse['compliance_testing']>['scenarios']\n>[number];\n\nexport interface DecisioningCapabilities<TConfig = unknown> {\n /**\n * Specialisms claimed; framework type-checks these against implemented platform\n * interfaces. Arrays are `readonly` so adopters can declare with `as const`\n * (load-bearing for the `RequiredPlatformsFor<S>` compile-time gate).\n */\n specialisms: readonly AdCPSpecialism[];\n\n /**\n * Creative agents this seller composes with. Framework fetches format catalogs\n * from each (1h cache) and unions them on `list_creative_formats`. Self-hosting\n * sellers point at their own `agent_url`; framework calls into their\n * `CreativePlatform.listFormats()` locally instead of HTTP-fetching.\n *\n * `format_ids` filter (optional) subsets a single creative agent's catalog.\n * Useful when a creative agent hosts 50 formats but this seller only accepts\n * 10 of them. Filter scope is per-creative-agent: `[{ agent_url: A, format_ids: ['x'] }, { agent_url: B }]`\n * means \"from A only format x; from B all formats.\"\n *\n * Omit for signals-only platforms (`signal-marketplace`, `signal-owned`) — they\n * sell audience data access, not media inventory, and don't compose with creative agents.\n */\n creative_agents?: readonly CreativeAgentRef[];\n\n /**\n * Channels this platform sells.\n *\n * Omit for non-media-buy platforms — they don't sell ad inventory and have no\n * channels to declare. Applies to signals (`signal-marketplace`, `signal-owned`),\n * governance (`governance-spend-authority`, `governance-delivery-monitor`,\n * `property-lists`, `collection-lists`, `content-standards`), creative-only\n * (`creative-ad-server`, `creative-template`, `creative-generative`), and\n * brand (`brand-rights`) platforms.\n *\n * **Required at runtime for media-buy platforms.** `validatePlatform` (called\n * by `createAdcpServerFromPlatform`) throws `PlatformConfigError` when any\n * `sales-*` specialism is claimed and this field is absent.\n */\n channels?: readonly MediaChannel[];\n\n /**\n * Pricing models this platform supports.\n *\n * Omit for non-media-buy platforms — they don't sell ad inventory and have no\n * channel-level pricing to declare. For signals platforms specifically, pricing\n * is declared per-signal in the signal descriptor's `pricing_options[]` instead.\n * Same non-media-buy specialism set as `channels` above.\n *\n * **Required at runtime for media-buy platforms.** `validatePlatform` (called\n * by `createAdcpServerFromPlatform`) throws `PlatformConfigError` when any\n * `sales-*` specialism is claimed and this field is absent.\n */\n pricingModels?: readonly PricingModel[];\n\n /** Targeting capabilities. Optional — framework infers reasonable defaults if omitted. */\n targeting?: TargetingCapabilities;\n\n /** Reporting capabilities. Optional — framework infers reasonable defaults if omitted. */\n reporting?: ReportingCapabilities;\n\n /**\n * Audience-matching capabilities — projected onto\n * `get_adcp_capabilities.media_buy.audience_targeting`. Required for\n * audience-sync adopters (CRM-list adopters that accept hashed\n * identifiers + UID types) so buyers know which identifier shapes\n * the platform will match against and what minimum audience size /\n * matching latency to expect. Omit when the platform doesn't accept\n * external audience uploads.\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.audience_targeting`.\n */\n audience_targeting?: NonNullable<_MediaBuyCapabilities['audience_targeting']>;\n\n /**\n * Conversion-tracking capabilities — projected onto\n * `get_adcp_capabilities.media_buy.conversion_tracking`. Required for\n * adopters that accept conversion events via `sync_event_sources` /\n * `log_event` so buyers know which event types, action sources,\n * attribution windows, and identifier shapes the platform supports.\n * Omit when the platform doesn't track conversions.\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.conversion_tracking`.\n */\n conversion_tracking?: NonNullable<_MediaBuyCapabilities['conversion_tracking']>;\n\n /**\n * Content-standards capabilities — projected onto\n * `get_adcp_capabilities.media_buy.content_standards`. Required for\n * adopters claiming the `content-standards` specialism so buyers know\n * whether the platform runs local evaluation, which channels it\n * covers, and whether it supports webhook artifact delivery. Omit\n * when the platform doesn't ship content-standards artifacts.\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.content_standards`.\n */\n content_standards?: NonNullable<_MediaBuyCapabilities['content_standards']>;\n\n /**\n * Seller-level rollup of optimization metrics — projected onto\n * `get_adcp_capabilities.media_buy.supported_optimization_metrics`.\n * Added in AdCP 3.1 (adcp#4669). The array union of every product's\n * `metric_optimization.supported_metrics`. Storyboard runners gate\n * `metric_optimization`-using scenarios on this field; declaring it\n * gives buyers an upfront signal of which optimization metrics the\n * seller can compute against (clicks, views, completed_views, etc.).\n *\n * Adopters can compute the rollup from their catalog using the\n * exported {@link rollupOptimizationMetricsFromProducts} helper —\n * keeps the declaration in sync with what products actually offer.\n * Empty arrays are normalized away and the wire field is omitted; use\n * omission to mean \"no seller-level metric rollup advertised\".\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.supported_optimization_metrics`.\n */\n supported_optimization_metrics?: NonNullable<_MediaBuyCapabilities['supported_optimization_metrics']>;\n\n /**\n * Static product-metric summary used for capability rollups.\n *\n * When this is present and `supported_optimization_metrics` is omitted,\n * the framework derives `media_buy.supported_optimization_metrics` as the\n * sorted union of every product summary's\n * `metric_optimization.supported_metrics`. Full AdCP `Product` objects work,\n * but this field is not a general product-discovery surface; a lightweight\n * startup summary with just the `metric_optimization` block is enough.\n * Dynamic per-account catalogs should continue to pass an explicit\n * `supported_optimization_metrics` override. If the derived union is empty,\n * the framework omits `supported_optimization_metrics` from the wire\n * capabilities response.\n */\n productCatalog?: ReadonlyArray<ProductMetricOptimizationLike>;\n\n /**\n * Frequency-cap support declaration — projected onto\n * `get_adcp_capabilities.media_buy.frequency_capping`. Added in AdCP\n * 3.1 (adcp#4670). Presence-only object with `supported_per_units` /\n * `supported_window_units` sub-fields declaring which frequency-cap\n * shapes the platform honors. Omit when the platform doesn't accept\n * frequency caps at all; buyers will avoid the field on `pacing.*`.\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#media_buy.frequency_capping`.\n */\n frequency_capping?: NonNullable<_MediaBuyCapabilities['frequency_capping']>;\n\n /**\n * Whether this seller commits to the proposal lifecycle on get_products.\n * Projected onto `get_adcp_capabilities.media_buy.supports_proposals`.\n * Direct-buy sellers should declare `false` so proposal-only compliance\n * storyboards are skipped; sellers with a ProposalManager are auto-derived\n * as `true` unless they override this explicitly.\n */\n supportsProposals?: boolean;\n\n /**\n * Brand-protocol capabilities. Projected onto the wire `brand` block of\n * `get_adcp_capabilities` (`brand: { rights, right_types, available_uses,\n * generation_providers, description }`). The framework auto-derives\n * `rights: true` when `BrandRightsPlatform` is supplied; adopters\n * declare the rest (right_types they license, RightUses they support,\n * generation providers they issue credentials for).\n *\n * REQUIRED when claiming the `'brand-rights'` specialism — enforced at\n * compile-time via `RequiredCapabilitiesFor<S>`.\n */\n brand?: BrandCapabilities;\n\n /**\n * Compliance-testing capabilities. The presence of this block declares\n * the deployment supports deterministic state-machine testing via the\n * `comply_test_controller` wire tool. Keep this block declared when using\n * `createAdcpServerFromPlatform(..., { complyTest })`; the framework makes\n * live principals byte-identical to a production seller that never wired the\n * controller by hiding this block, filtering `tools/list`, and returning MCP\n * method-not-found for direct live calls.\n *\n * When this block is present, `createAdcpServerFromPlatform` REQUIRES\n * `opts.complyTest` (the `ComplyControllerConfig` adapter set) to be\n * supplied — claiming the capability without implementing the\n * controller is a `PlatformConfigError` at construction.\n *\n * Inversely, supplying `opts.complyTest` without declaring this\n * capability is also caught — the framework derives `scenarios` from\n * the declared force/simulate/seed adapters and emits the discovery\n * field on `get_adcp_capabilities` automatically for sandbox/mock\n * principals. Live principals do not see the block.\n */\n compliance_testing?: ComplianceTestingCapabilities;\n\n /**\n * Billing parties this platform supports. `'operator'` = retail-media model\n * (Criteo, Amazon — operator pays the publisher and bills the brand).\n * `'agent'` = pass-through model (buyer's agent settles directly with the\n * platform). `'advertiser'` = seller invoices the advertiser directly,\n * bypassing operator settlement (advertiser-direct sell-side platforms where\n * the brand is the direct contractual counterparty). Defaults to `['agent']`\n * when omitted. To express advertiser-direct billing per account, set\n * `billing.invoicedTo` to a `BrandReference` (the framework maps any\n * `BrandReference` to `'advertiser'` on the wire).\n */\n supportedBillings?: ReadonlyArray<'operator' | 'agent' | 'advertiser'>;\n\n /**\n * Payment terms this platform accepts on `sync_accounts.payment_terms`.\n * Omit to leave terms validation to `accounts.upsert` (or to accept any\n * schema-valid value). When present, the framework rejects unsupported\n * requested terms with `PAYMENT_TERMS_NOT_SUPPORTED` before dispatching\n * the account entry to the adopter.\n */\n supportedPaymentTerms?: ReadonlyArray<PaymentTerms>;\n\n /**\n * If true, this platform refuses transactions without an authenticated\n * operator principal (operator-billed retail-media). Framework emits\n * `AUTH_REQUIRED` envelope before dispatching to the platform.\n */\n requireOperatorAuth?: boolean;\n\n /**\n * Media-buy feature flags forwarded into `get_adcp_capabilities.media_buy.features`.\n * Adopter values serve as the base; auto-derived `audience_targeting`,\n * `conversion_tracking`, and `content_standards` booleans take precedence\n * for those three keys (overlaid by the framework via the per-domain\n * `media_buy` override on the inner createAdcpServer call). Use this to\n * declare `inlineCreativeManagement` and `propertyListFiltering` directly\n * from `definePlatform`; declare not-supported feature blocks (e.g.\n * `inlineCreativeManagement: false`) so the conformance runner grades\n * them `not_applicable` instead of `fail`.\n *\n * Resolves the `definePlatform` passthrough gap noted in adcp-client#2199.\n */\n features?: Partial<MediaBuyFeatures>;\n\n /**\n * Creative-protocol capabilities forwarded into `get_adcp_capabilities.creative`.\n * Use to declare `supportsCompliance`, `hasCreativeLibrary`,\n * `supportsGeneration`, and `supportsTransformation` from `definePlatform`.\n * Adopters that don't run a provenance-verification pipeline should\n * declare the relevant fields as `false` so creative storyboards gate\n * cleanly.\n *\n * Resolves the `definePlatform` passthrough gap noted in adcp-client#2199.\n */\n creative?: Partial<CreativeCapabilities>;\n\n /**\n * Account capabilities forwarded into `get_adcp_capabilities.account` as a\n * base layer. The framework's existing `requireOperatorAuth` and\n * `supportedBillings` projections overlay on top via the per-domain\n * `account` override, so explicit projections win on those keys.\n * `authorizationEndpoint`, `defaultBilling`, `requiredForProducts`, and\n * `sandbox` are pure adopter-driven additions exposed through this slot.\n *\n * Resolves the `definePlatform` passthrough gap noted in adcp-client#2199.\n */\n account?: Partial<AccountCapabilities>;\n\n /**\n * Deep-merge overrides applied to the wire `get_adcp_capabilities`\n * response. Use this for fields that the top-level `DecisioningCapabilities`\n * shape doesn't model — `media_buy.propagation_surfaces`,\n * `media_buy.measurement_terms`, `signals.discovery_modes`, etc. The\n * framework's per-domain projections (auto-derived `media_buy`, `brand`,\n * `account`, `compliance_testing` blocks) are merged AFTER adopter\n * overrides, so framework-derived values remain authoritative on the keys\n * the projection engine handles.\n *\n * Mirrors `AdcpCapabilitiesConfig.overrides` on the lower-level\n * `createAdcpServer` API. Resolves the `definePlatform` passthrough gap\n * noted in adcp-client#2199.\n */\n overrides?: AdcpCapabilitiesOverrides;\n\n /**\n * Release-precision AdCP versions this platform supports (e.g. `[\"3.0\", \"3.1\"]`).\n * Forwarded into `get_adcp_capabilities.adcp.supported_versions`. 3.1+\n * sellers should declare here the same release-precision strings they\n * emit in `adcp_version` on responses; 3.0-pinned sellers can omit.\n *\n * Resolves the same gap previously noted for `supported_versions` —\n * was unreachable through `definePlatform` because\n * `CreateAdcpServerFromPlatformOptions` omits `'capabilities'` from\n * `AdcpServerConfig`. See adcp-client#2199.\n */\n supported_versions?: string[];\n\n /**\n * Platform-specific config. Strongly typed when the adopter uses the generic.\n * Example: `class GAM extends DecisioningPlatform<{ networkId: string }>`.\n */\n config: TConfig;\n\n /**\n * Optional Zod schema for runtime validation of `config`. When provided,\n * framework validates at platform construction time; missing or wrong-shaped\n * config rejects the agent at boot rather than at first request.\n */\n configSchema?: ZodSchema<TConfig>;\n}\n\nexport interface CreativeAgentRef {\n agent_url: string;\n /** Human-readable label for this creative agent. */\n name?: string;\n /** Optional allowlist of `format_id.id` values from THIS agent's catalog. Omit to include all. */\n format_ids?: string[];\n}\n\n/**\n * Targeting capabilities the platform supports in `create_media_buy`. Maps\n * to AdCP `GetAdcpCapabilitiesResponse.media_buy.execution.targeting`.\n *\n * Shape converged across two independently-evolved peer codebases (Scope3\n * `agentic-adapters`, Prebid `salesagent`). Per-geo-system flags rather than\n * coarse enums because the two implementations agreed: real platforms support\n * specific geo identifier formats (Nielsen DMA, Eurostat NUTS2, US ZIP+4), not\n * abstract \"metro\" / \"postal\" categories.\n */\nexport interface TargetingCapabilities {\n geo_countries?: boolean;\n geo_regions?: boolean;\n\n /** Metro / DMA identifier systems. */\n geo_metros?: {\n nielsen_dma?: boolean;\n uk_itl1?: boolean;\n uk_itl2?: boolean;\n eurostat_nuts2?: boolean;\n };\n\n /**\n * Postal-code identifier systems.\n *\n * AdCP 3.1.0-rc.10 prefers country-keyed arrays, e.g.\n * `{ US: ['zip'], GB: ['outward'] }`. Deprecated country-fused booleans\n * such as `{ us_zip: true }` remain accepted for 3.x adopters; the\n * framework projects both forms with `normalizePostalAreaSupport()` so old\n * and new buyers can read the capability safely during the migration.\n */\n geo_postal_areas?: TargetingPostalAreaSupport;\n\n /** Geographic-proximity targeting (radius / drive-time / arbitrary geometry). */\n geo_proximity?: {\n radius?: boolean;\n travel_time?: boolean;\n geometry?: boolean;\n transport_modes?: ReadonlyArray<'walking' | 'cycling' | 'driving' | 'public_transport'>;\n };\n\n /** Age-restriction targeting; `verification_methods` enumerates the assurance levels accepted. */\n age_restriction?: {\n supported?: boolean;\n verification_methods?: ReadonlyArray<\n 'facial_age_estimation' | 'id_document' | 'digital_id' | 'credit_card' | 'world_id'\n >;\n };\n\n device_platform?: boolean;\n device_type?: boolean;\n language?: boolean;\n audience_include?: boolean;\n audience_exclude?: boolean;\n\n /** Keyword-targeting match types accepted on positive-match terms. */\n keyword_targets?: {\n supported_match_types: ReadonlyArray<'broad' | 'phrase' | 'exact'>;\n };\n\n /** Negative-keyword match types accepted. */\n negative_keywords?: {\n supported_match_types: ReadonlyArray<'broad' | 'phrase' | 'exact'>;\n };\n}\n\nexport type TargetingPostalAreaSupport = {\n US?: readonly ('zip' | 'zip_plus_four')[];\n GB?: readonly ('outward' | 'full')[];\n CA?: readonly ('fsa' | 'full')[];\n DE?: readonly 'plz'[];\n CH?: readonly 'plz'[];\n AT?: readonly 'plz'[];\n FR?: readonly 'code_postal'[];\n AU?: readonly 'postcode'[];\n BR?: readonly 'cep'[];\n IN?: readonly 'pin'[];\n ZA?: readonly 'postal_code'[];\n /** @deprecated Use `US: ['zip']`. */\n us_zip?: boolean;\n /** @deprecated Use `US: ['zip_plus_four']`. */\n us_zip_plus_four?: boolean;\n /** @deprecated Use `GB: ['outward']`. */\n gb_outward?: boolean;\n /** @deprecated Use `GB: ['full']`. */\n gb_full?: boolean;\n /** @deprecated Use `CA: ['fsa']`. */\n ca_fsa?: boolean;\n /** @deprecated Use `CA: ['full']`. */\n ca_full?: boolean;\n /** @deprecated Use `DE: ['plz']`. */\n de_plz?: boolean;\n /** @deprecated Use `FR: ['code_postal']`. */\n fr_code_postal?: boolean;\n /** @deprecated Use `AU: ['postcode']`. */\n au_postcode?: boolean;\n /** @deprecated Use `CH: ['plz']`. */\n ch_plz?: boolean;\n /** @deprecated Use `AT: ['plz']`. */\n at_plz?: boolean;\n [country: `${Uppercase<string>}`]:\n | readonly (\n | 'zip'\n | 'zip_plus_four'\n | 'outward'\n | 'full'\n | 'fsa'\n | 'plz'\n | 'code_postal'\n | 'postcode'\n | 'cep'\n | 'pin'\n | 'postal_code'\n | 'custom'\n )[]\n | undefined;\n};\n\nconst LEGACY_POSTAL_SYSTEMS = {\n us_zip: { country: 'US', system: 'zip' },\n us_zip_plus_four: { country: 'US', system: 'zip_plus_four' },\n gb_outward: { country: 'GB', system: 'outward' },\n gb_full: { country: 'GB', system: 'full' },\n ca_fsa: { country: 'CA', system: 'fsa' },\n ca_full: { country: 'CA', system: 'full' },\n de_plz: { country: 'DE', system: 'plz' },\n fr_code_postal: { country: 'FR', system: 'code_postal' },\n au_postcode: { country: 'AU', system: 'postcode' },\n ch_plz: { country: 'CH', system: 'plz' },\n at_plz: { country: 'AT', system: 'plz' },\n} as const;\n\nconst LEGACY_POSTAL_BY_COUNTRY_SYSTEM = new Map(\n Object.entries(LEGACY_POSTAL_SYSTEMS).map(([legacy, { country, system }]) => [`${country}:${system}`, legacy])\n);\n\nconst POSTAL_SYSTEMS_BY_COUNTRY: Record<string, readonly string[]> = {\n US: ['zip', 'zip_plus_four'],\n GB: ['outward', 'full'],\n CA: ['fsa', 'full'],\n DE: ['plz'],\n CH: ['plz'],\n AT: ['plz'],\n FR: ['code_postal'],\n AU: ['postcode'],\n BR: ['cep'],\n IN: ['pin'],\n ZA: ['postal_code'],\n};\n\nconst GENERIC_POSTAL_SYSTEMS = ['postal_code', 'custom'] as const;\nconst POSTAL_COUNTRY_KEY_PATTERN = /^[A-Z]{2}$/;\n\nfunction appendUnique(target: string[], value: string): void {\n if (!target.includes(value)) target.push(value);\n}\n\nfunction assertSupportedPostalSystems(country: string, systems: readonly string[]): void {\n const allowed = POSTAL_SYSTEMS_BY_COUNTRY[country] ?? GENERIC_POSTAL_SYSTEMS;\n const invalid = systems.filter(system => !allowed.includes(system));\n if (invalid.length > 0) {\n throw new Error(\n `Invalid geo_postal_areas support for ${country}: ${invalid.join(', ')}. ` +\n `Supported systems are: ${allowed.join(', ')}.`\n );\n }\n}\n\n/**\n * Normalize postal-area capabilities across the AdCP 3.1.0-rc.10 migration.\n *\n * The wire schema now prefers `{ US: ['zip'] }` style country-local systems,\n * while the old `{ us_zip: true }` booleans stay deprecated but accepted\n * through 3.x. This helper is deliberately bidirectional:\n *\n * - legacy booleans add their country-keyed system;\n * - country-keyed systems backfill the matching legacy boolean when one exists;\n * - explicit unsupported legacy booleans are omitted unless the system is\n * otherwise advertised.\n */\nexport function normalizePostalAreaSupport(input: TargetingPostalAreaSupport): PostalAreaSupport {\n const normalized: Record<string, string[] | boolean> = {};\n\n for (const [key, value] of Object.entries(input)) {\n if (Array.isArray(value)) {\n if (!POSTAL_COUNTRY_KEY_PATTERN.test(key)) {\n throw new Error(\n `Invalid geo_postal_areas key \"${key}\". Use an ISO 3166-1 alpha-2 country code or a deprecated legacy boolean alias.`\n );\n }\n assertSupportedPostalSystems(key, value);\n const systems = (normalized[key] = Array.isArray(normalized[key]) ? (normalized[key] as string[]) : []);\n for (const system of value) appendUnique(systems, system);\n continue;\n }\n if (value === true && key in LEGACY_POSTAL_SYSTEMS) {\n const { country, system } = LEGACY_POSTAL_SYSTEMS[key as keyof typeof LEGACY_POSTAL_SYSTEMS];\n const systems = (normalized[country] = Array.isArray(normalized[country])\n ? (normalized[country] as string[])\n : []);\n appendUnique(systems, system);\n continue;\n }\n if (value === true) {\n throw new Error(\n `Invalid geo_postal_areas legacy alias \"${key}\". Use an ISO 3166-1 alpha-2 country key with supported postal systems.`\n );\n }\n }\n\n for (const [country, value] of Object.entries(normalized)) {\n if (!Array.isArray(value)) continue;\n for (const system of value) {\n const legacy = LEGACY_POSTAL_BY_COUNTRY_SYSTEM.get(`${country}:${system}`);\n if (legacy) normalized[legacy] = true;\n }\n }\n\n return normalized as PostalAreaSupport;\n}\n\nexport function normalizeTargetingCapabilities(input: TargetingCapabilities): _MediaBuyTargetingCapabilities {\n return {\n ...input,\n ...(input.geo_postal_areas && { geo_postal_areas: normalizePostalAreaSupport(input.geo_postal_areas) }),\n } as _MediaBuyTargetingCapabilities;\n}\n\n/**\n * Reporting capabilities the platform supports in `get_media_buy_delivery`.\n *\n * `availableDimensions` is the breakdown axes the platform can group\n * delivery rows by. Vocabulary converged across Scope3 and Prebid.\n */\nexport interface ReportingCapabilities {\n frequencies: ReadonlyArray<'hourly' | 'daily' | 'weekly'>;\n expected_delay_minutes: number;\n timezone: string;\n metrics: string[];\n date_range_support: 'date_range' | 'fixed_only';\n supports_webhooks: boolean;\n availableDimensions?: ReadonlyArray<\n 'geo' | 'device_type' | 'device_platform' | 'audience' | 'placement' | 'creative' | 'keyword' | 'catalog_item'\n >;\n}\n\n/**\n * Brand-protocol capabilities — projected onto the wire `brand` block of\n * `get_adcp_capabilities` via the framework's `overrides.brand` deep-merge\n * seam. Adopters who also implement `BrandRightsPlatform` get\n * `rights: true` auto-derived; the other four fields (`right_types`,\n * `available_uses`, `generation_providers`, `description`) are\n * adopter-declared.\n *\n * Wire spec: `protocol/get-adcp-capabilities-response.json#brand`.\n */\nexport type BrandCapabilities = NonNullable<NonNullable<GetAdCPCapabilitiesResponse['brand']>>;\n\n/**\n * Compliance-testing capabilities — projected onto the wire-side\n * `compliance_testing` block of `get_adcp_capabilities` so buyers and\n * conformance harnesses can discover which `comply_test_controller`\n * scenarios the agent supports.\n *\n * Wire spec: `core/get-adcp-capabilities-response.json#compliance_testing`.\n *\n * The `scenarios` array MUST be non-empty when this block is declared\n * (per the spec). `'list_scenarios'` is implicit — adopters don't need\n * to enumerate it.\n */\nexport interface ComplianceTestingCapabilities {\n /**\n * Scenarios this agent advertises support for. The wire field is open to\n * implementation-specific string values; canonical controller scenarios\n * are recommendations, not an enum constraint. `list_scenarios` remains a\n * discovery operation rather than a test capability. Framework defaults\n * this from the adopter-supplied `complyTest` adapter set when omitted.\n */\n scenarios?: ReadonlyArray<_ComplianceTestingScenario>;\n}\n"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/server/decisioning/runtime/entity-hydration.generated.ts"],"sourcesContent":["// Generated entity-hydration field map — do NOT edit by hand\n//\n// Source: `schemas/cache/3.1.15/manifest.json` + per-tool request\n// schemas. Every top-level `x-entity`-tagged string field on a request\n// schema lands here. The runtime hydrator (`from-platform.ts` →\n// `hydrateForTool`) walks this map plus the hand-curated\n// `ENTITY_TO_RESOURCE_KIND` table to drive auto-hydration without\n// re-walking schemas at startup.\n//\n// Renaming-firewall: if the spec renames `media_buy_id` → `mediabuy_id`,\n// the `x-entity` tag travels with it; the next codegen run picks up\n// the new field name automatically.\n//\n// Regenerate with: npm run generate-entity-hydration\n\nexport interface EntityHydrationField {\n /** Top-level property on the wire request object. */\n readonly field: string;\n /** Spec `x-entity` annotation — maps to `ResourceKind` at runtime. */\n readonly xEntity: string;\n}\n\nexport const TOOL_ENTITY_FIELDS: Readonly<Record<string, ReadonlyArray<EntityHydrationField>>> = {\n acquire_rights: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"rights_id\", xEntity: \"rights_grant\" },\n ],\n activate_signal: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"signal_agent_segment_id\", xEntity: \"signal_activation_id\" },\n ],\n build_creative: [\n { field: \"creative_id\", xEntity: \"creative\" },\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"package_id\", xEntity: \"package\" },\n { field: \"refine_from_build_variant_id\", xEntity: \"build_variant\" },\n { field: \"transformer_id\", xEntity: \"transformer\" },\n ],\n check_governance: [\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n create_media_buy: [\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n delete_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n delete_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n get_brand_identity: [\n { field: \"brand_id\", xEntity: \"advertiser_brand\" },\n ],\n get_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n get_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n get_rights: [\n { field: \"brand_id\", xEntity: \"rights_holder_brand\" },\n ],\n get_task_status: [\n { field: \"task_id\", xEntity: \"task\" },\n ],\n log_event: [\n { field: \"event_source_id\", xEntity: \"event_source\" },\n ],\n preview_creative: [\n { field: \"creative_id\", xEntity: \"creative\" },\n ],\n provide_performance_feedback: [\n { field: \"creative_id\", xEntity: \"creative\" },\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"package_id\", xEntity: \"package\" },\n ],\n report_plan_outcome: [\n { field: \"check_id\", xEntity: \"governance_check\" },\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n si_get_offering: [\n { field: \"offering_id\", xEntity: \"offering\" },\n ],\n si_initiate_session: [\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"offering_id\", xEntity: \"offering\" },\n ],\n si_send_message: [\n { field: \"session_id\", xEntity: \"si_session\" },\n ],\n si_terminate_session: [\n { field: \"session_id\", xEntity: \"si_session\" },\n ],\n update_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n update_media_buy: [\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n ],\n update_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n update_rights: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"rights_id\", xEntity: \"rights_grant\" },\n ],\n validate_property_delivery: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../../src/lib/server/decisioning/runtime/entity-hydration.generated.ts"],"sourcesContent":["// Generated entity-hydration field map — do NOT edit by hand\n//\n// Source: `schemas/cache/3.1.20/manifest.json` + per-tool request\n// schemas. Every top-level `x-entity`-tagged string field on a request\n// schema lands here. The runtime hydrator (`from-platform.ts` →\n// `hydrateForTool`) walks this map plus the hand-curated\n// `ENTITY_TO_RESOURCE_KIND` table to drive auto-hydration without\n// re-walking schemas at startup.\n//\n// Renaming-firewall: if the spec renames `media_buy_id` → `mediabuy_id`,\n// the `x-entity` tag travels with it; the next codegen run picks up\n// the new field name automatically.\n//\n// Regenerate with: npm run generate-entity-hydration\n\nexport interface EntityHydrationField {\n /** Top-level property on the wire request object. */\n readonly field: string;\n /** Spec `x-entity` annotation — maps to `ResourceKind` at runtime. */\n readonly xEntity: string;\n}\n\nexport const TOOL_ENTITY_FIELDS: Readonly<Record<string, ReadonlyArray<EntityHydrationField>>> = {\n acquire_rights: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"rights_id\", xEntity: \"rights_grant\" },\n ],\n activate_signal: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"signal_agent_segment_id\", xEntity: \"signal_activation_id\" },\n ],\n build_creative: [\n { field: \"creative_id\", xEntity: \"creative\" },\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"package_id\", xEntity: \"package\" },\n { field: \"refine_from_build_variant_id\", xEntity: \"build_variant\" },\n { field: \"transformer_id\", xEntity: \"transformer\" },\n ],\n check_governance: [\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n create_media_buy: [\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n delete_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n delete_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n get_brand_identity: [\n { field: \"brand_id\", xEntity: \"advertiser_brand\" },\n ],\n get_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n get_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n get_rights: [\n { field: \"brand_id\", xEntity: \"rights_holder_brand\" },\n ],\n get_task_status: [\n { field: \"task_id\", xEntity: \"task\" },\n ],\n log_event: [\n { field: \"event_source_id\", xEntity: \"event_source\" },\n ],\n preview_creative: [\n { field: \"creative_id\", xEntity: \"creative\" },\n ],\n provide_performance_feedback: [\n { field: \"creative_id\", xEntity: \"creative\" },\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"package_id\", xEntity: \"package\" },\n ],\n report_plan_outcome: [\n { field: \"check_id\", xEntity: \"governance_check\" },\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n si_get_offering: [\n { field: \"offering_id\", xEntity: \"offering\" },\n ],\n si_initiate_session: [\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"offering_id\", xEntity: \"offering\" },\n ],\n si_send_message: [\n { field: \"session_id\", xEntity: \"si_session\" },\n ],\n si_terminate_session: [\n { field: \"session_id\", xEntity: \"si_session\" },\n ],\n update_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n update_media_buy: [\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n ],\n update_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n update_rights: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"rights_id\", xEntity: \"rights_grant\" },\n ],\n validate_property_delivery: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n};\n"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/server/decisioning/runtime/entity-hydration.generated.ts"],"sourcesContent":["// Generated entity-hydration field map — do NOT edit by hand\n//\n// Source: `schemas/cache/3.1.15/manifest.json` + per-tool request\n// schemas. Every top-level `x-entity`-tagged string field on a request\n// schema lands here. The runtime hydrator (`from-platform.ts` →\n// `hydrateForTool`) walks this map plus the hand-curated\n// `ENTITY_TO_RESOURCE_KIND` table to drive auto-hydration without\n// re-walking schemas at startup.\n//\n// Renaming-firewall: if the spec renames `media_buy_id` → `mediabuy_id`,\n// the `x-entity` tag travels with it; the next codegen run picks up\n// the new field name automatically.\n//\n// Regenerate with: npm run generate-entity-hydration\n\nexport interface EntityHydrationField {\n /** Top-level property on the wire request object. */\n readonly field: string;\n /** Spec `x-entity` annotation — maps to `ResourceKind` at runtime. */\n readonly xEntity: string;\n}\n\nexport const TOOL_ENTITY_FIELDS: Readonly<Record<string, ReadonlyArray<EntityHydrationField>>> = {\n acquire_rights: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"rights_id\", xEntity: \"rights_grant\" },\n ],\n activate_signal: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"signal_agent_segment_id\", xEntity: \"signal_activation_id\" },\n ],\n build_creative: [\n { field: \"creative_id\", xEntity: \"creative\" },\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"package_id\", xEntity: \"package\" },\n { field: \"refine_from_build_variant_id\", xEntity: \"build_variant\" },\n { field: \"transformer_id\", xEntity: \"transformer\" },\n ],\n check_governance: [\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n create_media_buy: [\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n delete_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n delete_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n get_brand_identity: [\n { field: \"brand_id\", xEntity: \"advertiser_brand\" },\n ],\n get_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n get_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n get_rights: [\n { field: \"brand_id\", xEntity: \"rights_holder_brand\" },\n ],\n get_task_status: [\n { field: \"task_id\", xEntity: \"task\" },\n ],\n log_event: [\n { field: \"event_source_id\", xEntity: \"event_source\" },\n ],\n preview_creative: [\n { field: \"creative_id\", xEntity: \"creative\" },\n ],\n provide_performance_feedback: [\n { field: \"creative_id\", xEntity: \"creative\" },\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"package_id\", xEntity: \"package\" },\n ],\n report_plan_outcome: [\n { field: \"check_id\", xEntity: \"governance_check\" },\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n si_get_offering: [\n { field: \"offering_id\", xEntity: \"offering\" },\n ],\n si_initiate_session: [\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"offering_id\", xEntity: \"offering\" },\n ],\n si_send_message: [\n { field: \"session_id\", xEntity: \"si_session\" },\n ],\n si_terminate_session: [\n { field: \"session_id\", xEntity: \"si_session\" },\n ],\n update_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n update_media_buy: [\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n ],\n update_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n update_rights: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"rights_id\", xEntity: \"rights_grant\" },\n ],\n validate_property_delivery: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../../src/lib/server/decisioning/runtime/entity-hydration.generated.ts"],"sourcesContent":["// Generated entity-hydration field map — do NOT edit by hand\n//\n// Source: `schemas/cache/3.1.20/manifest.json` + per-tool request\n// schemas. Every top-level `x-entity`-tagged string field on a request\n// schema lands here. The runtime hydrator (`from-platform.ts` →\n// `hydrateForTool`) walks this map plus the hand-curated\n// `ENTITY_TO_RESOURCE_KIND` table to drive auto-hydration without\n// re-walking schemas at startup.\n//\n// Renaming-firewall: if the spec renames `media_buy_id` → `mediabuy_id`,\n// the `x-entity` tag travels with it; the next codegen run picks up\n// the new field name automatically.\n//\n// Regenerate with: npm run generate-entity-hydration\n\nexport interface EntityHydrationField {\n /** Top-level property on the wire request object. */\n readonly field: string;\n /** Spec `x-entity` annotation — maps to `ResourceKind` at runtime. */\n readonly xEntity: string;\n}\n\nexport const TOOL_ENTITY_FIELDS: Readonly<Record<string, ReadonlyArray<EntityHydrationField>>> = {\n acquire_rights: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"rights_id\", xEntity: \"rights_grant\" },\n ],\n activate_signal: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"signal_agent_segment_id\", xEntity: \"signal_activation_id\" },\n ],\n build_creative: [\n { field: \"creative_id\", xEntity: \"creative\" },\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"package_id\", xEntity: \"package\" },\n { field: \"refine_from_build_variant_id\", xEntity: \"build_variant\" },\n { field: \"transformer_id\", xEntity: \"transformer\" },\n ],\n check_governance: [\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n create_media_buy: [\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n delete_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n delete_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n get_brand_identity: [\n { field: \"brand_id\", xEntity: \"advertiser_brand\" },\n ],\n get_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n get_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n get_rights: [\n { field: \"brand_id\", xEntity: \"rights_holder_brand\" },\n ],\n get_task_status: [\n { field: \"task_id\", xEntity: \"task\" },\n ],\n log_event: [\n { field: \"event_source_id\", xEntity: \"event_source\" },\n ],\n preview_creative: [\n { field: \"creative_id\", xEntity: \"creative\" },\n ],\n provide_performance_feedback: [\n { field: \"creative_id\", xEntity: \"creative\" },\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"package_id\", xEntity: \"package\" },\n ],\n report_plan_outcome: [\n { field: \"check_id\", xEntity: \"governance_check\" },\n { field: \"plan_id\", xEntity: \"governance_plan\" },\n ],\n si_get_offering: [\n { field: \"offering_id\", xEntity: \"offering\" },\n ],\n si_initiate_session: [\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n { field: \"offering_id\", xEntity: \"offering\" },\n ],\n si_send_message: [\n { field: \"session_id\", xEntity: \"si_session\" },\n ],\n si_terminate_session: [\n { field: \"session_id\", xEntity: \"si_session\" },\n ],\n update_collection_list: [\n { field: \"list_id\", xEntity: \"collection_list\" },\n ],\n update_media_buy: [\n { field: \"media_buy_id\", xEntity: \"media_buy\" },\n ],\n update_property_list: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n update_rights: [\n { field: \"pricing_option_id\", xEntity: \"vendor_pricing_option\" },\n { field: \"rights_id\", xEntity: \"rights_grant\" },\n ],\n validate_property_delivery: [\n { field: \"list_id\", xEntity: \"property_list\" },\n ],\n};\n"],"mappings":"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","names":[]}