@adcp/sdk 8.1.0-beta.1 → 8.1.0-beta.11

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 (286) hide show
  1. package/README.md +16 -1
  2. package/bin/adcp.js +75 -21
  3. package/dist/lib/conformance/oracle.d.ts.map +1 -1
  4. package/dist/lib/conformance/oracle.js +8 -1
  5. package/dist/lib/conformance/oracle.js.map +1 -1
  6. package/dist/lib/conformance/schemaArbitrary.js +135 -9
  7. package/dist/lib/conformance/schemaArbitrary.js.map +1 -1
  8. package/dist/lib/core/AgentClient.d.ts +1 -1
  9. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  10. package/dist/lib/core/AgentClient.js.map +1 -1
  11. package/dist/lib/core/GovernanceMiddleware.d.ts +2 -1
  12. package/dist/lib/core/GovernanceMiddleware.d.ts.map +1 -1
  13. package/dist/lib/core/GovernanceMiddleware.js +9 -2
  14. package/dist/lib/core/GovernanceMiddleware.js.map +1 -1
  15. package/dist/lib/core/ResponseValidator.js +1 -1
  16. package/dist/lib/core/ResponseValidator.js.map +1 -1
  17. package/dist/lib/core/SingleAgentClient.d.ts +6 -0
  18. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  19. package/dist/lib/core/SingleAgentClient.js +2 -3
  20. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  21. package/dist/lib/core/TaskExecutor.d.ts +1 -0
  22. package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
  23. package/dist/lib/core/TaskExecutor.js +14 -3
  24. package/dist/lib/core/TaskExecutor.js.map +1 -1
  25. package/dist/lib/index.d.ts +3 -2
  26. package/dist/lib/index.d.ts.map +1 -1
  27. package/dist/lib/index.js +26 -11
  28. package/dist/lib/index.js.map +1 -1
  29. package/dist/lib/media-buy/index.d.ts +1 -1
  30. package/dist/lib/media-buy/index.d.ts.map +1 -1
  31. package/dist/lib/media-buy/index.js.map +1 -1
  32. package/dist/lib/media-buy/types.d.ts +12 -52
  33. package/dist/lib/media-buy/types.d.ts.map +1 -1
  34. package/dist/lib/media-buy/types.js +12 -15
  35. package/dist/lib/media-buy/types.js.map +1 -1
  36. package/dist/lib/net/index.d.ts +1 -1
  37. package/dist/lib/net/index.d.ts.map +1 -1
  38. package/dist/lib/net/index.js +2 -1
  39. package/dist/lib/net/index.js.map +1 -1
  40. package/dist/lib/protocols/index.d.ts +10 -2
  41. package/dist/lib/protocols/index.d.ts.map +1 -1
  42. package/dist/lib/protocols/index.js +7 -6
  43. package/dist/lib/protocols/index.js.map +1 -1
  44. package/dist/lib/schemas/index.d.ts +68 -10
  45. package/dist/lib/schemas/index.d.ts.map +1 -1
  46. package/dist/lib/schemas/index.js +57 -16
  47. package/dist/lib/schemas/index.js.map +1 -1
  48. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  49. package/dist/lib/server/create-adcp-server.d.ts +59 -53
  50. package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
  51. package/dist/lib/server/create-adcp-server.js +62 -10
  52. package/dist/lib/server/create-adcp-server.js.map +1 -1
  53. package/dist/lib/server/decisioning/account.d.ts +22 -6
  54. package/dist/lib/server/decisioning/account.d.ts.map +1 -1
  55. package/dist/lib/server/decisioning/account.js.map +1 -1
  56. package/dist/lib/server/decisioning/capabilities.d.ts +8 -0
  57. package/dist/lib/server/decisioning/capabilities.d.ts.map +1 -1
  58. package/dist/lib/server/decisioning/index.d.ts +12 -11
  59. package/dist/lib/server/decisioning/index.d.ts.map +1 -1
  60. package/dist/lib/server/decisioning/index.js.map +1 -1
  61. package/dist/lib/server/decisioning/list-helpers.d.ts +3 -2
  62. package/dist/lib/server/decisioning/list-helpers.d.ts.map +1 -1
  63. package/dist/lib/server/decisioning/list-helpers.js +0 -1
  64. package/dist/lib/server/decisioning/list-helpers.js.map +1 -1
  65. package/dist/lib/server/decisioning/manifest-helpers.d.ts +8 -2
  66. package/dist/lib/server/decisioning/manifest-helpers.d.ts.map +1 -1
  67. package/dist/lib/server/decisioning/manifest-helpers.js +8 -2
  68. package/dist/lib/server/decisioning/manifest-helpers.js.map +1 -1
  69. package/dist/lib/server/decisioning/proposal/dispatch.d.ts +3 -2
  70. package/dist/lib/server/decisioning/proposal/dispatch.d.ts.map +1 -1
  71. package/dist/lib/server/decisioning/proposal/dispatch.js +1 -0
  72. package/dist/lib/server/decisioning/proposal/dispatch.js.map +1 -1
  73. package/dist/lib/server/decisioning/proposal/mock-manager.d.ts +3 -2
  74. package/dist/lib/server/decisioning/proposal/mock-manager.d.ts.map +1 -1
  75. package/dist/lib/server/decisioning/proposal/mock-manager.js.map +1 -1
  76. package/dist/lib/server/decisioning/proposal/types.d.ts +3 -2
  77. package/dist/lib/server/decisioning/proposal/types.d.ts.map +1 -1
  78. package/dist/lib/server/decisioning/proposal/types.js.map +1 -1
  79. package/dist/lib/server/decisioning/runtime/from-platform.d.ts.map +1 -1
  80. package/dist/lib/server/decisioning/runtime/from-platform.js +14 -1
  81. package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
  82. package/dist/lib/server/decisioning/specialisms/audiences.d.ts +4 -1
  83. package/dist/lib/server/decisioning/specialisms/audiences.d.ts.map +1 -1
  84. package/dist/lib/server/decisioning/specialisms/brand-rights.d.ts +19 -7
  85. package/dist/lib/server/decisioning/specialisms/brand-rights.d.ts.map +1 -1
  86. package/dist/lib/server/decisioning/specialisms/campaign-governance.d.ts +9 -4
  87. package/dist/lib/server/decisioning/specialisms/campaign-governance.d.ts.map +1 -1
  88. package/dist/lib/server/decisioning/specialisms/content-standards.d.ts +17 -8
  89. package/dist/lib/server/decisioning/specialisms/content-standards.d.ts.map +1 -1
  90. package/dist/lib/server/decisioning/specialisms/creative-ad-server.d.ts +13 -5
  91. package/dist/lib/server/decisioning/specialisms/creative-ad-server.d.ts.map +1 -1
  92. package/dist/lib/server/decisioning/specialisms/creative.d.ts +14 -9
  93. package/dist/lib/server/decisioning/specialisms/creative.d.ts.map +1 -1
  94. package/dist/lib/server/decisioning/specialisms/lists.d.ts +21 -10
  95. package/dist/lib/server/decisioning/specialisms/lists.d.ts.map +1 -1
  96. package/dist/lib/server/decisioning/specialisms/sales.d.ts +27 -12
  97. package/dist/lib/server/decisioning/specialisms/sales.d.ts.map +1 -1
  98. package/dist/lib/server/decisioning/specialisms/signals.d.ts +5 -2
  99. package/dist/lib/server/decisioning/specialisms/signals.d.ts.map +1 -1
  100. package/dist/lib/server/decisioning/specialisms/sponsored-intelligence.d.ts +9 -4
  101. package/dist/lib/server/decisioning/specialisms/sponsored-intelligence.d.ts.map +1 -1
  102. package/dist/lib/server/index.d.ts +2 -0
  103. package/dist/lib/server/index.d.ts.map +1 -1
  104. package/dist/lib/server/index.js.map +1 -1
  105. package/dist/lib/server/operational-platform.d.ts +4 -3
  106. package/dist/lib/server/operational-platform.d.ts.map +1 -1
  107. package/dist/lib/server/operational-platform.js.map +1 -1
  108. package/dist/lib/server/responses.d.ts +28 -27
  109. package/dist/lib/server/responses.d.ts.map +1 -1
  110. package/dist/lib/server/responses.js +96 -35
  111. package/dist/lib/server/responses.js.map +1 -1
  112. package/dist/lib/signing/types.d.ts +6 -0
  113. package/dist/lib/signing/types.d.ts.map +1 -1
  114. package/dist/lib/signing/types.js.map +1 -1
  115. package/dist/lib/signing/verifier.d.ts.map +1 -1
  116. package/dist/lib/signing/verifier.js +33 -4
  117. package/dist/lib/signing/verifier.js.map +1 -1
  118. package/dist/lib/testing/client.d.ts +5 -0
  119. package/dist/lib/testing/client.d.ts.map +1 -1
  120. package/dist/lib/testing/client.js +34 -3
  121. package/dist/lib/testing/client.js.map +1 -1
  122. package/dist/lib/testing/compliance/comply.d.ts +8 -1
  123. package/dist/lib/testing/compliance/comply.d.ts.map +1 -1
  124. package/dist/lib/testing/compliance/comply.js +57 -25
  125. package/dist/lib/testing/compliance/comply.js.map +1 -1
  126. package/dist/lib/testing/compliance/types.d.ts +2 -0
  127. package/dist/lib/testing/compliance/types.d.ts.map +1 -1
  128. package/dist/lib/testing/index.d.ts +1 -1
  129. package/dist/lib/testing/index.d.ts.map +1 -1
  130. package/dist/lib/testing/index.js +4 -1
  131. package/dist/lib/testing/index.js.map +1 -1
  132. package/dist/lib/testing/scenarios/media-buy.d.ts.map +1 -1
  133. package/dist/lib/testing/scenarios/media-buy.js +12 -9
  134. package/dist/lib/testing/scenarios/media-buy.js.map +1 -1
  135. package/dist/lib/testing/storyboard/compliance.d.ts +11 -1
  136. package/dist/lib/testing/storyboard/compliance.d.ts.map +1 -1
  137. package/dist/lib/testing/storyboard/compliance.js +37 -3
  138. package/dist/lib/testing/storyboard/compliance.js.map +1 -1
  139. package/dist/lib/testing/storyboard/context.d.ts.map +1 -1
  140. package/dist/lib/testing/storyboard/context.js +26 -11
  141. package/dist/lib/testing/storyboard/context.js.map +1 -1
  142. package/dist/lib/testing/storyboard/index.d.ts +2 -2
  143. package/dist/lib/testing/storyboard/index.d.ts.map +1 -1
  144. package/dist/lib/testing/storyboard/index.js +6 -2
  145. package/dist/lib/testing/storyboard/index.js.map +1 -1
  146. package/dist/lib/testing/storyboard/probes.d.ts.map +1 -1
  147. package/dist/lib/testing/storyboard/probes.js +3 -0
  148. package/dist/lib/testing/storyboard/probes.js.map +1 -1
  149. package/dist/lib/testing/storyboard/request-builder.d.ts.map +1 -1
  150. package/dist/lib/testing/storyboard/request-builder.js +4 -1
  151. package/dist/lib/testing/storyboard/request-builder.js.map +1 -1
  152. package/dist/lib/testing/storyboard/runner.d.ts +2 -0
  153. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  154. package/dist/lib/testing/storyboard/runner.js +357 -47
  155. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  156. package/dist/lib/testing/storyboard/types.d.ts +65 -0
  157. package/dist/lib/testing/storyboard/types.d.ts.map +1 -1
  158. package/dist/lib/testing/storyboard/types.js.map +1 -1
  159. package/dist/lib/testing/storyboard/validations.d.ts +4 -3
  160. package/dist/lib/testing/storyboard/validations.d.ts.map +1 -1
  161. package/dist/lib/testing/storyboard/validations.js +27 -3
  162. package/dist/lib/testing/storyboard/validations.js.map +1 -1
  163. package/dist/lib/testing/types.d.ts +19 -0
  164. package/dist/lib/testing/types.d.ts.map +1 -1
  165. package/dist/lib/types/activate-signal.d.ts +647 -0
  166. package/dist/lib/types/build-creative.d.ts +2105 -0
  167. package/dist/lib/types/calibrate-content.d.ts +675 -0
  168. package/dist/lib/types/check-governance.d.ts +619 -0
  169. package/dist/lib/types/comply-test-controller.d.ts +8428 -0
  170. package/dist/lib/types/core.generated.d.ts +547 -537
  171. package/dist/lib/types/core.generated.d.ts.map +1 -1
  172. package/dist/lib/types/core.generated.js +1 -1
  173. package/dist/lib/types/create-collection-list.d.ts +693 -0
  174. package/dist/lib/types/create-content-standards.d.ts +830 -0
  175. package/dist/lib/types/create-media-buy.d.ts +3374 -0
  176. package/dist/lib/types/create-property-list.d.ts +836 -0
  177. package/dist/lib/types/delete-collection-list.d.ts +497 -0
  178. package/dist/lib/types/delete-property-list.d.ts +497 -0
  179. package/dist/lib/types/get-account-financials.d.ts +624 -0
  180. package/dist/lib/types/get-adcp-capabilities.d.ts +2863 -0
  181. package/dist/lib/types/get-collection-list.d.ts +763 -0
  182. package/dist/lib/types/get-content-standards.d.ts +919 -0
  183. package/dist/lib/types/get-creative-delivery.d.ts +2219 -0
  184. package/dist/lib/types/get-creative-features.d.ts +1736 -0
  185. package/dist/lib/types/get-media-buy-artifacts.d.ts +864 -0
  186. package/dist/lib/types/get-media-buys.d.ts +1670 -0
  187. package/dist/lib/types/get-plan-audit-logs.d.ts +455 -0
  188. package/dist/lib/types/get-products.d.ts +4935 -0
  189. package/dist/lib/types/get-property-list.d.ts +874 -0
  190. package/dist/lib/types/get-signals.d.ts +986 -0
  191. package/dist/lib/types/index.d.ts +2 -0
  192. package/dist/lib/types/index.d.ts.map +1 -1
  193. package/dist/lib/types/index.js +1 -0
  194. package/dist/lib/types/index.js.map +1 -1
  195. package/dist/lib/types/inline-enums.generated.d.ts +163 -7
  196. package/dist/lib/types/inline-enums.generated.d.ts.map +1 -1
  197. package/dist/lib/types/inline-enums.generated.js +222 -9
  198. package/dist/lib/types/inline-enums.generated.js.map +1 -1
  199. package/dist/lib/types/list-accounts.d.ts +851 -0
  200. package/dist/lib/types/list-content-standards.d.ts +975 -0
  201. package/dist/lib/types/list-creative-formats.d.ts +3132 -0
  202. package/dist/lib/types/list-creatives.d.ts +2390 -0
  203. package/dist/lib/types/list-property-lists.d.ts +855 -0
  204. package/dist/lib/types/log-event.d.ts +373 -0
  205. package/dist/lib/types/per-tool-index.json +391 -0
  206. package/dist/lib/types/preview-creative.d.ts +1981 -0
  207. package/dist/lib/types/provide-performance-feedback.d.ts +218 -0
  208. package/dist/lib/types/report-plan-outcome.d.ts +433 -0
  209. package/dist/lib/types/report-usage.d.ts +579 -0
  210. package/dist/lib/types/schemas.generated.d.ts +146765 -128986
  211. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  212. package/dist/lib/types/schemas.generated.js +405 -437
  213. package/dist/lib/types/schemas.generated.js.map +1 -1
  214. package/dist/lib/types/server-payload-aliases.d.ts +78 -0
  215. package/dist/lib/types/server-payload-aliases.d.ts.map +1 -0
  216. package/dist/lib/types/server-payload-aliases.js +11 -0
  217. package/dist/lib/types/server-payload-aliases.js.map +1 -0
  218. package/dist/lib/types/server-payload.d.ts +39 -0
  219. package/dist/lib/types/server-payload.d.ts.map +1 -0
  220. package/dist/lib/types/server-payload.js +11 -0
  221. package/dist/lib/types/server-payload.js.map +1 -0
  222. package/dist/lib/types/si-get-offering.d.ts +259 -0
  223. package/dist/lib/types/si-initiate-session.d.ts +372 -0
  224. package/dist/lib/types/si-send-message.d.ts +300 -0
  225. package/dist/lib/types/si-terminate-session.d.ts +213 -0
  226. package/dist/lib/types/sync-accounts.d.ts +856 -0
  227. package/dist/lib/types/sync-audiences.d.ts +707 -0
  228. package/dist/lib/types/sync-catalogs.d.ts +766 -0
  229. package/dist/lib/types/sync-creatives.d.ts +2134 -0
  230. package/dist/lib/types/sync-event-sources.d.ts +665 -0
  231. package/dist/lib/types/sync-governance.d.ts +558 -0
  232. package/dist/lib/types/sync-plans.d.ts +979 -0
  233. package/dist/lib/types/tools.generated.d.ts +236 -188
  234. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  235. package/dist/lib/types/update-collection-list.d.ts +697 -0
  236. package/dist/lib/types/update-content-standards.d.ts +847 -0
  237. package/dist/lib/types/update-media-buy.d.ts +3047 -0
  238. package/dist/lib/types/update-property-list.d.ts +840 -0
  239. package/dist/lib/types/validate-content-delivery.d.ts +722 -0
  240. package/dist/lib/types/validate-input.d.ts +1683 -0
  241. package/dist/lib/utils/adcp-version-config.d.ts +2 -0
  242. package/dist/lib/utils/adcp-version-config.d.ts.map +1 -1
  243. package/dist/lib/utils/adcp-version-config.js +42 -0
  244. package/dist/lib/utils/adcp-version-config.js.map +1 -1
  245. package/dist/lib/utils/envelope-status-compat.d.ts +24 -5
  246. package/dist/lib/utils/envelope-status-compat.d.ts.map +1 -1
  247. package/dist/lib/utils/envelope-status-compat.js +71 -5
  248. package/dist/lib/utils/envelope-status-compat.js.map +1 -1
  249. package/dist/lib/utils/index.d.ts +1 -0
  250. package/dist/lib/utils/index.d.ts.map +1 -1
  251. package/dist/lib/utils/index.js +5 -2
  252. package/dist/lib/utils/index.js.map +1 -1
  253. package/dist/lib/utils/media-buy-status.d.ts +22 -0
  254. package/dist/lib/utils/media-buy-status.d.ts.map +1 -0
  255. package/dist/lib/utils/media-buy-status.js +55 -0
  256. package/dist/lib/utils/media-buy-status.js.map +1 -0
  257. package/dist/lib/utils/response-schemas.d.ts.map +1 -1
  258. package/dist/lib/utils/response-schemas.js +3 -0
  259. package/dist/lib/utils/response-schemas.js.map +1 -1
  260. package/dist/lib/utils/response-unwrapper.d.ts.map +1 -1
  261. package/dist/lib/utils/response-unwrapper.js +48 -6
  262. package/dist/lib/utils/response-unwrapper.js.map +1 -1
  263. package/dist/lib/utils/tool-request-schemas.d.ts +8574 -1
  264. package/dist/lib/utils/tool-request-schemas.d.ts.map +1 -1
  265. package/dist/lib/utils/tool-request-schemas.js +4 -5
  266. package/dist/lib/utils/tool-request-schemas.js.map +1 -1
  267. package/dist/lib/utils/union-errors.d.ts +13 -6
  268. package/dist/lib/utils/union-errors.d.ts.map +1 -1
  269. package/dist/lib/utils/union-errors.js +34 -7
  270. package/dist/lib/utils/union-errors.js.map +1 -1
  271. package/dist/lib/validation/schema-loader.d.ts.map +1 -1
  272. package/dist/lib/validation/schema-loader.js +68 -15
  273. package/dist/lib/validation/schema-loader.js.map +1 -1
  274. package/dist/lib/validation/schema-validator.js +1 -1
  275. package/dist/lib/validation/schema-validator.js.map +1 -1
  276. package/dist/lib/version.d.ts +27 -3
  277. package/dist/lib/version.d.ts.map +1 -1
  278. package/dist/lib/version.js +42 -3
  279. package/dist/lib/version.js.map +1 -1
  280. package/examples/error-compliant-server.ts +1 -1
  281. package/examples/hello_seller_adapter_guaranteed.ts +14 -10
  282. package/examples/hello_seller_adapter_multi_tenant.ts +27 -23
  283. package/examples/hello_seller_adapter_non_guaranteed.ts +16 -14
  284. package/examples/hello_seller_adapter_proposal_mode.ts +22 -6
  285. package/examples/hello_signals_adapter_marketplace.ts +34 -3
  286. package/package.json +17 -2
@@ -1691,133 +1691,7 @@ export type CreativeAsset = {
1691
1691
  */
1692
1692
  industry_identifiers?: IndustryIdentifier[];
1693
1693
  provenance?: Provenance;
1694
- } & ({
1695
- /**
1696
- * Unique identifier for the creative. Stable across v1 and v2 paths — a creative registered against v1 `format_id` retains the same `creative_id` when later viewed via v2 flatten.
1697
- */
1698
- creative_id: string;
1699
- /**
1700
- * Human-readable creative name
1701
- */
1702
- name: string;
1703
- format_id: FormatReferenceStructuredObject;
1704
- /**
1705
- * v2 path, optional. Stable identifier matching one of the seller's product `format_options[i].capability_id` values. REQUIRED only when the target product has multiple `format_options` entries sharing the same `format_kind`.
1706
- */
1707
- capability_id?: string;
1708
- /**
1709
- * Assets required by the format, keyed by asset_id. Each slot value is either a single asset object or an array of asset objects (for slots with `min`/`max > 1` like carousel `cards` or responsive_creative `headlines`). Each asset value carries an `asset_type` discriminator that selects the matching asset schema.
1710
- */
1711
- assets: {
1712
- /**
1713
- * This interface was referenced by `undefined`'s JSON-Schema definition
1714
- * via the `patternProperty` "^[a-z0-9_]+$".
1715
- */
1716
- [k: string]: AssetVariant | AssetVariant[];
1717
- };
1718
- /**
1719
- * Preview contexts for generative formats - defines what scenarios to generate previews for
1720
- */
1721
- inputs?: {
1722
- /**
1723
- * Human-readable name for this preview variant
1724
- */
1725
- name: string;
1726
- /**
1727
- * Macro values to apply for this preview
1728
- */
1729
- macros?: {
1730
- [k: string]: string | undefined;
1731
- };
1732
- /**
1733
- * Natural language description of the context for AI-generated content
1734
- */
1735
- context_description?: string;
1736
- }[];
1737
- /**
1738
- * User-defined tags for organization and searchability
1739
- */
1740
- tags?: string[];
1741
- status?: CreativeStatus;
1742
- /**
1743
- * Optional delivery weight for creative rotation when uploading via create_media_buy or update_media_buy (0-100). If omitted, platform determines rotation. Only used during upload to media buy - not stored in creative library.
1744
- * @minimum 0
1745
- * @maximum 100
1746
- */
1747
- weight?: number;
1748
- /**
1749
- * Optional array of placement IDs where this creative should run when uploading via create_media_buy or update_media_buy. References placement_id values from the product's placements array. If omitted, creative runs on all placements. Only used during upload to media buy - not stored in creative library.
1750
- */
1751
- placement_ids?: string[];
1752
- /**
1753
- * Industry-standard identifiers for this creative (e.g., Ad-ID, ISCI, Clearcast clock number). In broadcast buying, these identifiers tie the creative to rotation instructions and traffic systems. A creative may have multiple identifiers when different systems reference the same asset.
1754
- */
1755
- industry_identifiers?: IndustryIdentifier[];
1756
- provenance?: Provenance;
1757
- } | {
1758
- /**
1759
- * Unique identifier for the creative. Stable across v1 and v2 paths — a creative registered against v1 `format_id` retains the same `creative_id` when later viewed via v2 flatten.
1760
- */
1761
- creative_id: string;
1762
- /**
1763
- * Human-readable creative name
1764
- */
1765
- name: string;
1766
- format_kind: CanonicalFormatKind;
1767
- /**
1768
- * v2 path, optional. Stable identifier matching one of the seller's product `format_options[i].capability_id` values. REQUIRED only when the target product has multiple `format_options` entries sharing the same `format_kind`.
1769
- */
1770
- capability_id?: string;
1771
- /**
1772
- * Assets required by the format, keyed by asset_id. Each slot value is either a single asset object or an array of asset objects (for slots with `min`/`max > 1` like carousel `cards` or responsive_creative `headlines`). Each asset value carries an `asset_type` discriminator that selects the matching asset schema.
1773
- */
1774
- assets: {
1775
- /**
1776
- * This interface was referenced by `undefined`'s JSON-Schema definition
1777
- * via the `patternProperty` "^[a-z0-9_]+$".
1778
- */
1779
- [k: string]: AssetVariant | AssetVariant[];
1780
- };
1781
- /**
1782
- * Preview contexts for generative formats - defines what scenarios to generate previews for
1783
- */
1784
- inputs?: {
1785
- /**
1786
- * Human-readable name for this preview variant
1787
- */
1788
- name: string;
1789
- /**
1790
- * Macro values to apply for this preview
1791
- */
1792
- macros?: {
1793
- [k: string]: string | undefined;
1794
- };
1795
- /**
1796
- * Natural language description of the context for AI-generated content
1797
- */
1798
- context_description?: string;
1799
- }[];
1800
- /**
1801
- * User-defined tags for organization and searchability
1802
- */
1803
- tags?: string[];
1804
- status?: CreativeStatus;
1805
- /**
1806
- * Optional delivery weight for creative rotation when uploading via create_media_buy or update_media_buy (0-100). If omitted, platform determines rotation. Only used during upload to media buy - not stored in creative library.
1807
- * @minimum 0
1808
- * @maximum 100
1809
- */
1810
- weight?: number;
1811
- /**
1812
- * Optional array of placement IDs where this creative should run when uploading via create_media_buy or update_media_buy. References placement_id values from the product's placements array. If omitted, creative runs on all placements. Only used during upload to media buy - not stored in creative library.
1813
- */
1814
- placement_ids?: string[];
1815
- /**
1816
- * Industry-standard identifiers for this creative (e.g., Ad-ID, ISCI, Clearcast clock number). In broadcast buying, these identifiers tie the creative to rotation instructions and traffic systems. A creative may have multiple identifiers when different systems reference the same asset.
1817
- */
1818
- industry_identifiers?: IndustryIdentifier[];
1819
- provenance?: Provenance;
1820
- });
1694
+ } & (V1CreativeNamedFormatReference | V2CreativeCanonicalFormatKind);
1821
1695
  /**
1822
1696
  * v2 path. The canonical format name this creative targets (e.g., `image`, `video_hosted`). Mutually exclusive with `format_id`.
1823
1697
  */
@@ -2650,114 +2524,248 @@ export interface IndustryIdentifier {
2650
2524
  value: string;
2651
2525
  }
2652
2526
  /**
2653
- * Represents available advertising inventory
2527
+ * Creative references a named format via the structured `format_id` object. The v1 path; remains supported through 4.x.
2654
2528
  */
2655
- export type Product = (V1ProductNamedFormatReference | V2ProductInlineFormatDeclarations) & {
2529
+ export interface V1CreativeNamedFormatReference {
2656
2530
  /**
2657
- * Unique identifier for the product
2531
+ * Unique identifier for the creative. Stable across v1 and v2 paths — a creative registered against v1 `format_id` retains the same `creative_id` when later viewed via v2 flatten.
2658
2532
  */
2659
- product_id: string;
2533
+ creative_id: string;
2660
2534
  /**
2661
- * Human-readable product name
2535
+ * Human-readable creative name
2662
2536
  */
2663
2537
  name: string;
2538
+ format_id: FormatReferenceStructuredObject;
2664
2539
  /**
2665
- * Detailed description of the product and its inventory
2666
- */
2667
- description: string;
2668
- /**
2669
- * SDK implementers MUST enforce singular-only at runtime: each entry uses the singular `publisher_domain` form; the compact `publisher_domains[]` form is rejected on products. Codegen toolchains (json-schema-to-typescript, quicktype, datamodel-code-generator, openapi-typescript-codegen) often flatten the `allOf + $ref + not.required` restriction below poorly and may drop the rejection constraint silently, emitting an unrestricted type — runtime enforcement is the safety net. Publisher properties covered by this product. Buyers fetch actual property definitions from each publisher's adagents.json and validate agent authorization. Selection patterns mirror the authorization patterns in adagents.json for consistency. The compact `publisher_domains[]` form is reserved for adagents.json `authorized_agents[].publisher_properties[]` so that buy-side traffic-and-pricing flatteners can always treat each entry as exactly one publisher.
2670
- */
2671
- publisher_properties: PublisherPropertySelector[];
2672
- /**
2673
- * Advertising channels this product is sold as. Products inherit from their properties' supported_channels but may narrow the scope. For example, a product covering YouTube properties might be sold as ['ctv'] even though those properties support ['olv', 'social', 'ctv'].
2674
- */
2675
- channels?: MediaChannel[];
2676
- /**
2677
- * v1 path: array of supported creative format IDs (structured format_id objects with agent_url and id). Products MUST carry `format_ids`, `format_options`, or BOTH; at least one is required. v1 named formats remain supported through the v1-deprecation calendar (2027-Q4 floor / 2029-Q1 ceiling).
2678
- *
2679
- * **Dual emission**: A product MAY carry both `format_ids` and `format_options` simultaneously during the migration window. This is the recommended seller pattern — author once, SDK projects to both wire shapes via the [v1↔v2 canonical mapping registry](/schemas/registries/v1-canonical-mapping.json), every buyer reads what it knows. When both are present, the two MUST refer to the SAME underlying format declaration (the `format_options[i]` narrows the canonical that the named format in `format_ids[i]` resolves to via the registry / explicit `canonical` field). SDKs that derive both shapes from one source guarantee this invariant; SDKs that don't MUST treat divergence as a build error and refuse to emit. **Buyer rule**: when both are present, prefer `format_options`; treat `format_ids` as fallback for v1-only buyers. **Non-projectable formats**: when a v1 named format has no clean v2 projection (no registry entry, no explicit `canonical` declaration on the v1 format, no structural match), SDKs MUST NOT emit `format_options` for that product — only `format_ids` ships, and the product remains v1-only until the seller adds an explicit `canonical` field or files a registry entry.
2680
- */
2681
- format_ids?: FormatReferenceStructuredObject[];
2682
- /**
2683
- * v2 path: one or more inline format declarations the product accepts. Each element narrows a canonical format with parameters, slots, and platform_extensions. The 90% case is a single-element array (one canonical narrowed for the product). Multi-element use cases: a product that accepts EITHER a third-party-hosted creative (e.g., Flashtalking-served `html5`) OR an internal `display_tag`; a video product that accepts a hosted `video_hosted` upload OR a `video_vast` tag. Buyers pick which option they're shipping at `sync_creatives` time by aligning their manifest to the matching declaration's `format_kind` and slots.
2684
- *
2685
- * Products MUST carry `format_ids`, `format_options`, or BOTH; at least one is required. See `format_ids` description for the dual-emission contract (same underlying declaration when both are present; SDK derives one from the other; buyers prefer `format_options` when both are present).
2686
- */
2687
- format_options?: ProductFormatDeclaration[];
2688
- /**
2689
- * Optional array of specific placements within this product. When provided, buyers can target specific placements when assigning creatives.
2540
+ * v2 path, optional. Stable identifier matching one of the seller's product `format_options[i].capability_id` values. REQUIRED only when the target product has multiple `format_options` entries sharing the same `format_kind`.
2690
2541
  */
2691
- placements?: Placement[];
2692
- delivery_type: DeliveryType;
2693
- exclusivity?: Exclusivity;
2542
+ capability_id?: string;
2694
2543
  /**
2695
- * Available pricing models for this product
2544
+ * Assets required by the format, keyed by asset_id. Each slot value is either a single asset object or an array of asset objects (for slots with `min`/`max > 1` like carousel `cards` or responsive_creative `headlines`). Each asset value carries an `asset_type` discriminator that selects the matching asset schema.
2696
2545
  */
2697
- pricing_options: PricingOption[];
2698
- forecast?: DeliveryForecast;
2699
- outcome_measurement?: OutcomeMeasurementDeprecated;
2546
+ assets: {
2547
+ /**
2548
+ * This interface was referenced by `undefined`'s JSON-Schema definition
2549
+ * via the `patternProperty` "^[a-z0-9_]+$".
2550
+ */
2551
+ [k: string]: AssetVariant | AssetVariant[];
2552
+ };
2700
2553
  /**
2701
- * Measurement vendors and methodology for delivery metrics. The buyer accepts the declared vendors as the source of truth for the buy. When absent, buyers should apply their own measurement defaults. Senders SHOULD populate `vendors` (structured BrandRef array) for new implementations; the legacy `provider` string field is deprecated and retained for one-minor backwards compatibility.
2554
+ * Preview contexts for generative formats - defines what scenarios to generate previews for
2702
2555
  */
2703
- delivery_measurement?: {
2556
+ inputs?: {
2704
2557
  /**
2705
- * Measurement vendors used for this product, as structured `BrandRef` identities. Multiple entries when multiple vendors play different roles (e.g., the ad server plus a separate viewability vendor like IAS or DV; or a retail-media seller plus a third-party retail measurement vendor like Circana or NielsenIQ). Each vendor's `brand.json` `agents[type='measurement']` is the discovery anchor; metric definitions live on the agent's `get_adcp_capabilities.measurement.metrics[]` block. Distinct from `performance_standards[].vendor` which carries vendor identity for *committed* metrics with thresholds — this field carries vendor identity for the overall measurement story, including non-committed-but-reported metrics.
2558
+ * Human-readable name for this preview variant
2706
2559
  */
2707
- vendors?: BrandReference[];
2560
+ name: string;
2708
2561
  /**
2709
- * **Deprecated as of this minor.** Free-form measurement provider description (e.g., 'Google Ad Manager with IAS viewability', 'Nielsen DAR', 'Geopath for DOOH impressions'). New implementations SHOULD use the structured `vendors` field instead. Retained for one-minor backwards compatibility; removed at the next major. When both `vendors` and `provider` are present, consumers MUST use `vendors` for vendor identity and treat `provider` as informational text.
2562
+ * Macro values to apply for this preview
2710
2563
  */
2711
- provider?: string;
2564
+ macros?: {
2565
+ [k: string]: string | undefined;
2566
+ };
2712
2567
  /**
2713
- * Additional details about measurement methodology in plain language (e.g., 'MRC-accredited viewability. 50% in-view for 1s display / 2s video', 'Panel-based demographic measurement updated monthly'). Free-form prose for context that doesn't fit the structured `vendors` field.
2568
+ * Natural language description of the context for AI-generated content
2714
2569
  */
2715
- notes?: string;
2716
- };
2717
- measurement_terms?: MeasurementTerms;
2570
+ context_description?: string;
2571
+ }[];
2718
2572
  /**
2719
- * Seller's default performance standards for this product: viewability, IVT, completion rate, brand safety, attention score. Buyers may propose different standards at media buy creation. When absent, no structured performance standards apply.
2573
+ * User-defined tags for organization and searchability
2720
2574
  */
2721
- performance_standards?: PerformanceStandard[];
2722
- cancellation_policy?: CancellationPolicy;
2575
+ tags?: string[];
2576
+ status?: CreativeStatus;
2723
2577
  /**
2724
- * Actions buyers may perform on buys created against this product, scoped to statuses and modes. Advisory template — the authoritative per-buy capability is `available_actions[]` on the buy response, which resolves modes against current buy state, account tier, and negotiated terms. Buyers SHOULD use this for pre-flight product selection ("which products let me self-serve cancel within 72hr?") and read `available_actions[]` for runtime decisions. The array is uniquely keyed by `action` — sellers MUST NOT emit two entries with the same `action` value. Absence means the seller has not declared a structured action surface for this product — buyers fall back to `valid_actions[]` on buy responses for the flat string vocabulary.
2578
+ * Optional delivery weight for creative rotation when uploading via create_media_buy or update_media_buy (0-100). If omitted, platform determines rotation. Only used during upload to media buy - not stored in creative library.
2579
+ * @minimum 0
2580
+ * @maximum 100
2725
2581
  */
2726
- allowed_actions?: ProductAllowedAction[];
2727
- reporting_capabilities: ReportingCapabilities;
2728
- creative_policy?: CreativePolicy;
2582
+ weight?: number;
2729
2583
  /**
2730
- * Whether this is a custom product
2584
+ * Optional array of placement IDs where this creative should run when uploading via create_media_buy or update_media_buy. References placement_id values from the product's placements array. If omitted, creative runs on all placements. Only used during upload to media buy - not stored in creative library.
2731
2585
  */
2732
- is_custom?: boolean;
2586
+ placement_ids?: string[];
2733
2587
  /**
2734
- * Whether buyers can filter this product to a subset of its publisher_properties. When false (default), the product is 'all or nothing' - buyers must accept all properties or the product is excluded from property_list filtering results.
2588
+ * Industry-standard identifiers for this creative (e.g., Ad-ID, ISCI, Clearcast clock number). In broadcast buying, these identifiers tie the creative to rotation instructions and traffic systems. A creative may have multiple identifiers when different systems reference the same asset.
2735
2589
  */
2736
- property_targeting_allowed?: boolean;
2590
+ industry_identifiers?: IndustryIdentifier[];
2591
+ provenance?: Provenance;
2592
+ }
2593
+ /**
2594
+ * Creative declares which canonical format it targets via `format_kind` (e.g., `image`). The v2 path introduced by RFC #3305.
2595
+ */
2596
+ export interface V2CreativeCanonicalFormatKind {
2737
2597
  /**
2738
- * Data provider signals available for this product. Buyers fetch signal definitions from each data provider's adagents.json and can verify agent authorization.
2598
+ * Unique identifier for the creative. Stable across v1 and v2 paths a creative registered against v1 `format_id` retains the same `creative_id` when later viewed via v2 flatten.
2739
2599
  */
2740
- data_provider_signals?: DataProviderSignalSelector[];
2600
+ creative_id: string;
2741
2601
  /**
2742
- * Whether buyers can filter this product to a subset of its data_provider_signals. When false (default), the product includes all listed signals as a bundle. When true, buyers can target specific signals.
2602
+ * Human-readable creative name
2743
2603
  */
2744
- signal_targeting_allowed?: boolean;
2604
+ name: string;
2605
+ format_kind: CanonicalFormatKind;
2745
2606
  /**
2746
- * Catalog types this product supports for catalog-driven campaigns. A sponsored product listing declares ["product"], a job board declares ["job", "offering"]. Buyers match synced catalogs to products via this field.
2607
+ * v2 path, optional. Stable identifier matching one of the seller's product `format_options[i].capability_id` values. REQUIRED only when the target product has multiple `format_options` entries sharing the same `format_kind`.
2747
2608
  */
2748
- catalog_types?: CatalogType[];
2609
+ capability_id?: string;
2749
2610
  /**
2750
- * Metric optimization capabilities for this product. Presence indicates the product supports optimization_goals with kind: 'metric'. No event source or conversion tracking setup required the seller tracks these metrics natively.
2611
+ * Assets required by the format, keyed by asset_id. Each slot value is either a single asset object or an array of asset objects (for slots with `min`/`max > 1` like carousel `cards` or responsive_creative `headlines`). Each asset value carries an `asset_type` discriminator that selects the matching asset schema.
2751
2612
  */
2752
- metric_optimization?: {
2613
+ assets: {
2753
2614
  /**
2754
- * Metric kinds this product can optimize for. Buyers should only request metric goals for kinds listed here. **DEPRECATED values** (slated for removal at next major): `attention_seconds` and `attention_score` — declare vendor-attested attention/quality metrics via `vendor_metric_optimization.supported_metrics[]` with an explicit vendor binding instead. Sellers MAY reject the deprecated values with `TERMS_REJECTED` and a suggestion to use the `vendor_metric` kind.
2615
+ * This interface was referenced by `undefined`'s JSON-Schema definition
2616
+ * via the `patternProperty` "^[a-z0-9_]+$".
2755
2617
  */
2756
- supported_metrics: ('clicks' | 'views' | 'completed_views' | 'viewed_seconds' | 'attention_seconds' | 'attention_score' | 'engagements' | 'follows' | 'saves' | 'profile_visits' | 'reach')[];
2618
+ [k: string]: AssetVariant | AssetVariant[];
2619
+ };
2620
+ /**
2621
+ * Preview contexts for generative formats - defines what scenarios to generate previews for
2622
+ */
2623
+ inputs?: {
2757
2624
  /**
2758
- * Reach units this product can optimize for. Required when supported_metrics includes 'reach'. Buyers must set reach_unit to a value in this list on reach optimization goals — sellers reject unsupported values.
2625
+ * Human-readable name for this preview variant
2759
2626
  */
2760
- supported_reach_units?: ReachUnit[];
2627
+ name: string;
2628
+ /**
2629
+ * Macro values to apply for this preview
2630
+ */
2631
+ macros?: {
2632
+ [k: string]: string | undefined;
2633
+ };
2634
+ /**
2635
+ * Natural language description of the context for AI-generated content
2636
+ */
2637
+ context_description?: string;
2638
+ }[];
2639
+ /**
2640
+ * User-defined tags for organization and searchability
2641
+ */
2642
+ tags?: string[];
2643
+ status?: CreativeStatus;
2644
+ /**
2645
+ * Optional delivery weight for creative rotation when uploading via create_media_buy or update_media_buy (0-100). If omitted, platform determines rotation. Only used during upload to media buy - not stored in creative library.
2646
+ * @minimum 0
2647
+ * @maximum 100
2648
+ */
2649
+ weight?: number;
2650
+ /**
2651
+ * Optional array of placement IDs where this creative should run when uploading via create_media_buy or update_media_buy. References placement_id values from the product's placements array. If omitted, creative runs on all placements. Only used during upload to media buy - not stored in creative library.
2652
+ */
2653
+ placement_ids?: string[];
2654
+ /**
2655
+ * Industry-standard identifiers for this creative (e.g., Ad-ID, ISCI, Clearcast clock number). In broadcast buying, these identifiers tie the creative to rotation instructions and traffic systems. A creative may have multiple identifiers when different systems reference the same asset.
2656
+ */
2657
+ industry_identifiers?: IndustryIdentifier[];
2658
+ provenance?: Provenance;
2659
+ }
2660
+ /**
2661
+ * Represents available advertising inventory
2662
+ */
2663
+ export type Product = (V1ProductNamedFormatReference | V2ProductInlineFormatDeclarations) & {
2664
+ /**
2665
+ * Unique identifier for the product
2666
+ */
2667
+ product_id: string;
2668
+ /**
2669
+ * Human-readable product name
2670
+ */
2671
+ name: string;
2672
+ /**
2673
+ * Detailed description of the product and its inventory
2674
+ */
2675
+ description: string;
2676
+ /**
2677
+ * SDK implementers MUST enforce singular-only at runtime: each entry uses the singular `publisher_domain` form; the compact `publisher_domains[]` form is rejected on products. Codegen toolchains (json-schema-to-typescript, quicktype, datamodel-code-generator, openapi-typescript-codegen) often flatten the `allOf + $ref + not.required` restriction below poorly and may drop the rejection constraint silently, emitting an unrestricted type — runtime enforcement is the safety net. Publisher properties covered by this product. Buyers fetch actual property definitions from each publisher's adagents.json and validate agent authorization. Selection patterns mirror the authorization patterns in adagents.json for consistency. The compact `publisher_domains[]` form is reserved for adagents.json `authorized_agents[].publisher_properties[]` so that buy-side traffic-and-pricing flatteners can always treat each entry as exactly one publisher.
2678
+ */
2679
+ publisher_properties: PublisherPropertySelector[];
2680
+ /**
2681
+ * Advertising channels this product is sold as. Products inherit from their properties' supported_channels but may narrow the scope. For example, a product covering YouTube properties might be sold as ['ctv'] even though those properties support ['olv', 'social', 'ctv'].
2682
+ */
2683
+ channels?: MediaChannel[];
2684
+ /**
2685
+ * v1 path: array of supported creative format IDs (structured format_id objects with agent_url and id). Products MUST carry `format_ids`, `format_options`, or BOTH; at least one is required. v1 named formats remain supported through the v1-deprecation calendar (2027-Q4 floor / 2029-Q1 ceiling).
2686
+ *
2687
+ * **Dual emission**: A product MAY carry both `format_ids` and `format_options` simultaneously during the migration window. This is the recommended seller pattern — author once, SDK projects to both wire shapes via the [v1↔v2 canonical mapping registry](/schemas/registries/v1-canonical-mapping.json), every buyer reads what it knows. When both are present, the two MUST refer to the SAME underlying format declaration (the `format_options[i]` narrows the canonical that the named format in `format_ids[i]` resolves to via the registry / explicit `canonical` field). SDKs that derive both shapes from one source guarantee this invariant; SDKs that don't MUST treat divergence as a build error and refuse to emit. **Buyer rule**: when both are present, prefer `format_options`; treat `format_ids` as fallback for v1-only buyers. **Non-projectable formats**: when a v1 named format has no clean v2 projection (no registry entry, no explicit `canonical` declaration on the v1 format, no structural match), SDKs MUST NOT emit `format_options` for that product — only `format_ids` ships, and the product remains v1-only until the seller adds an explicit `canonical` field or files a registry entry.
2688
+ */
2689
+ format_ids?: FormatReferenceStructuredObject[];
2690
+ /**
2691
+ * v2 path: one or more inline format declarations the product accepts. Each element narrows a canonical format with parameters, slots, and platform_extensions. The 90% case is a single-element array (one canonical narrowed for the product). Multi-element use cases: a product that accepts EITHER a third-party-hosted creative (e.g., Flashtalking-served `html5`) OR an internal `display_tag`; a video product that accepts a hosted `video_hosted` upload OR a `video_vast` tag. Buyers pick which option they're shipping at `sync_creatives` time by aligning their manifest to the matching declaration's `format_kind` and slots.
2692
+ *
2693
+ * Products MUST carry `format_ids`, `format_options`, or BOTH; at least one is required. See `format_ids` description for the dual-emission contract (same underlying declaration when both are present; SDK derives one from the other; buyers prefer `format_options` when both are present).
2694
+ */
2695
+ format_options?: ProductFormatDeclaration[];
2696
+ /**
2697
+ * Optional array of specific placements within this product. When provided, buyers can target specific placements when assigning creatives.
2698
+ */
2699
+ placements?: Placement[];
2700
+ delivery_type: DeliveryType;
2701
+ exclusivity?: Exclusivity;
2702
+ /**
2703
+ * Available pricing models for this product
2704
+ */
2705
+ pricing_options: PricingOption[];
2706
+ forecast?: DeliveryForecast;
2707
+ outcome_measurement?: OutcomeMeasurementDeprecated;
2708
+ /**
2709
+ * Measurement vendors and methodology for delivery metrics. The buyer accepts the declared vendors as the source of truth for the buy. When absent, buyers should apply their own measurement defaults. Senders SHOULD populate `vendors` (structured BrandRef array) for new implementations; the legacy `provider` string field is deprecated and retained for one-minor backwards compatibility.
2710
+ */
2711
+ delivery_measurement?: {
2712
+ /**
2713
+ * Measurement vendors used for this product, as structured `BrandRef` identities. Multiple entries when multiple vendors play different roles (e.g., the ad server plus a separate viewability vendor like IAS or DV; or a retail-media seller plus a third-party retail measurement vendor like Circana or NielsenIQ). Each vendor's `brand.json` `agents[type='measurement']` is the discovery anchor; metric definitions live on the agent's `get_adcp_capabilities.measurement.metrics[]` block. Distinct from `performance_standards[].vendor` which carries vendor identity for *committed* metrics with thresholds — this field carries vendor identity for the overall measurement story, including non-committed-but-reported metrics.
2714
+ */
2715
+ vendors?: BrandReference[];
2716
+ /**
2717
+ * **Deprecated as of this minor.** Free-form measurement provider description (e.g., 'Google Ad Manager with IAS viewability', 'Nielsen DAR', 'Geopath for DOOH impressions'). New implementations SHOULD use the structured `vendors` field instead. Retained for one-minor backwards compatibility; removed at the next major. When both `vendors` and `provider` are present, consumers MUST use `vendors` for vendor identity and treat `provider` as informational text.
2718
+ */
2719
+ provider?: string;
2720
+ /**
2721
+ * Additional details about measurement methodology in plain language (e.g., 'MRC-accredited viewability. 50% in-view for 1s display / 2s video', 'Panel-based demographic measurement updated monthly'). Free-form prose for context that doesn't fit the structured `vendors` field.
2722
+ */
2723
+ notes?: string;
2724
+ };
2725
+ measurement_terms?: MeasurementTerms;
2726
+ /**
2727
+ * Seller's default performance standards for this product: viewability, IVT, completion rate, brand safety, attention score. Buyers may propose different standards at media buy creation. When absent, no structured performance standards apply.
2728
+ */
2729
+ performance_standards?: PerformanceStandard[];
2730
+ cancellation_policy?: CancellationPolicy;
2731
+ /**
2732
+ * Actions buyers may perform on buys created against this product, scoped to statuses and modes. Advisory template — the authoritative per-buy capability is `available_actions[]` on the buy response, which resolves modes against current buy state, account tier, and negotiated terms. Buyers SHOULD use this for pre-flight product selection ("which products let me self-serve cancel within 72hr?") and read `available_actions[]` for runtime decisions. The array is uniquely keyed by `action` — sellers MUST NOT emit two entries with the same `action` value. Absence means the seller has not declared a structured action surface for this product — buyers fall back to `valid_actions[]` on buy responses for the flat string vocabulary.
2733
+ */
2734
+ allowed_actions?: ProductAllowedAction[];
2735
+ reporting_capabilities: ReportingCapabilities;
2736
+ creative_policy?: CreativePolicy;
2737
+ /**
2738
+ * Whether this is a custom product
2739
+ */
2740
+ is_custom?: boolean;
2741
+ /**
2742
+ * Whether buyers can filter this product to a subset of its publisher_properties. When false (default), the product is 'all or nothing' - buyers must accept all properties or the product is excluded from property_list filtering results.
2743
+ */
2744
+ property_targeting_allowed?: boolean;
2745
+ /**
2746
+ * Data provider signals available for this product. Buyers fetch signal definitions from each data provider's adagents.json and can verify agent authorization.
2747
+ */
2748
+ data_provider_signals?: DataProviderSignalSelector[];
2749
+ /**
2750
+ * Whether buyers can filter this product to a subset of its data_provider_signals. When false (default), the product includes all listed signals as a bundle. When true, buyers can target specific signals.
2751
+ */
2752
+ signal_targeting_allowed?: boolean;
2753
+ /**
2754
+ * Catalog types this product supports for catalog-driven campaigns. A sponsored product listing declares ["product"], a job board declares ["job", "offering"]. Buyers match synced catalogs to products via this field.
2755
+ */
2756
+ catalog_types?: CatalogType[];
2757
+ /**
2758
+ * Metric optimization capabilities for this product. Presence indicates the product supports optimization_goals with kind: 'metric'. No event source or conversion tracking setup required — the seller tracks these metrics natively.
2759
+ */
2760
+ metric_optimization?: {
2761
+ /**
2762
+ * Metric kinds this product can optimize for. Buyers should only request metric goals for kinds listed here. **DEPRECATED values** (slated for removal at next major): `attention_seconds` and `attention_score` — declare vendor-attested attention/quality metrics via `vendor_metric_optimization.supported_metrics[]` with an explicit vendor binding instead. Sellers MAY reject the deprecated values with `TERMS_REJECTED` and a suggestion to use the `vendor_metric` kind.
2763
+ */
2764
+ supported_metrics: ('clicks' | 'views' | 'completed_views' | 'viewed_seconds' | 'attention_seconds' | 'attention_score' | 'engagements' | 'follows' | 'saves' | 'profile_visits' | 'reach')[];
2765
+ /**
2766
+ * Reach units this product can optimize for. Required when supported_metrics includes 'reach'. Buyers must set reach_unit to a value in this list on reach optimization goals — sellers reject unsupported values.
2767
+ */
2768
+ supported_reach_units?: ReachUnit[];
2761
2769
  /**
2762
2770
  * Video view duration thresholds (in seconds) this product supports for completed_views goals. Only relevant when supported_metrics includes 'completed_views'. When absent, the seller uses their platform default. Buyers must set view_duration_seconds to a value in this list — sellers reject unsupported values.
2763
2771
  */
@@ -6220,65 +6228,7 @@ export type CreativeManifest = {
6220
6228
  industry_identifiers?: IndustryIdentifier[];
6221
6229
  provenance?: Provenance;
6222
6230
  ext?: ExtensionObject;
6223
- } & ({
6224
- format_id: FormatReferenceStructuredObject;
6225
- /**
6226
- * v2 path, optional. Stable identifier matching one of the seller's product `format_options[i].capability_id` values. REQUIRED when the target product carries multiple `format_options` entries sharing the same `format_kind` (the buyer must disambiguate which option this manifest matches). When the product's `format_options` has a single entry — or multiple entries with distinct `format_kind` values — `capability_id` is OPTIONAL because `format_kind` alone routes the manifest to the right declaration.
6227
- */
6228
- capability_id?: string;
6229
- /**
6230
- * Map of slot keys to actual asset content. v1 path: each key matches an `asset_id` from the format's `assets` array (e.g., 'banner_image', 'clickthrough_url', 'video_file', 'vast_tag'). v2 path: each key matches an `asset_group_id` from the format's `slots` declaration drawn from the canonical vocabulary registry (e.g., 'images_landscape', 'video', 'landing_page_url', 'vast_tag', 'script', 'creative_brief'). Either path produces the same envelope shape; only the slot-key vocabulary differs.
6231
- *
6232
- * Each slot value is **either** a single asset object (most slots — image, video, vast_tag, landing_page_url, etc.) **or** an array of asset objects (slots with `min`/`max` counts on the format declaration — `cards` on `image_carousel`, `headlines` / `descriptions` / `images_landscape` on `responsive_creative`, etc.). Single-vs-array shape is governed by the format's `slots[].min` and `slots[].max` parameters: when `max > 1` (or when the slot is conceptually a pool), the value MUST be an array; when the slot is single-valued, the value MUST be a single object. Each asset value (single or array element) carries an `asset_type` discriminator (image, video, audio, vast, daast, text, markdown, url, html, css, webhook, javascript, brief, catalog, zip, card) that selects the matching asset schema. Validators with OpenAPI-style discriminator support use `asset_type` to report errors against only the selected branch instead of all branches.
6233
- */
6234
- assets: {
6235
- /**
6236
- * This interface was referenced by `undefined`'s JSON-Schema definition
6237
- * via the `patternProperty` "^[a-z0-9_]+$".
6238
- */
6239
- [k: string]: AssetVariant | AssetVariant[];
6240
- };
6241
- brand?: BrandReference;
6242
- /**
6243
- * Rights constraints attached to this creative. Each entry represents constraints from a single rights holder. A creative may combine multiple rights constraints (e.g., talent likeness + music license). For v1, rights constraints are informational metadata — the buyer/orchestrator manages creative lifecycle against these terms.
6244
- */
6245
- rights?: RightsConstraint[];
6246
- /**
6247
- * Industry-standard identifiers for this specific manifest (e.g., Ad-ID, ISCI, Clearcast clock number). When present, overrides creative-level identifiers. Use when different format versions of the same source creative have distinct Ad-IDs (e.g., the :15 and :30 cuts).
6248
- */
6249
- industry_identifiers?: IndustryIdentifier[];
6250
- provenance?: Provenance;
6251
- ext?: ExtensionObject;
6252
- } | {
6253
- format_kind: CanonicalFormatKind;
6254
- /**
6255
- * v2 path, optional. Stable identifier matching one of the seller's product `format_options[i].capability_id` values. REQUIRED when the target product carries multiple `format_options` entries sharing the same `format_kind` (the buyer must disambiguate which option this manifest matches). When the product's `format_options` has a single entry — or multiple entries with distinct `format_kind` values — `capability_id` is OPTIONAL because `format_kind` alone routes the manifest to the right declaration.
6256
- */
6257
- capability_id?: string;
6258
- /**
6259
- * Map of slot keys to actual asset content. v1 path: each key matches an `asset_id` from the format's `assets` array (e.g., 'banner_image', 'clickthrough_url', 'video_file', 'vast_tag'). v2 path: each key matches an `asset_group_id` from the format's `slots` declaration drawn from the canonical vocabulary registry (e.g., 'images_landscape', 'video', 'landing_page_url', 'vast_tag', 'script', 'creative_brief'). Either path produces the same envelope shape; only the slot-key vocabulary differs.
6260
- *
6261
- * Each slot value is **either** a single asset object (most slots — image, video, vast_tag, landing_page_url, etc.) **or** an array of asset objects (slots with `min`/`max` counts on the format declaration — `cards` on `image_carousel`, `headlines` / `descriptions` / `images_landscape` on `responsive_creative`, etc.). Single-vs-array shape is governed by the format's `slots[].min` and `slots[].max` parameters: when `max > 1` (or when the slot is conceptually a pool), the value MUST be an array; when the slot is single-valued, the value MUST be a single object. Each asset value (single or array element) carries an `asset_type` discriminator (image, video, audio, vast, daast, text, markdown, url, html, css, webhook, javascript, brief, catalog, zip, card) that selects the matching asset schema. Validators with OpenAPI-style discriminator support use `asset_type` to report errors against only the selected branch instead of all branches.
6262
- */
6263
- assets: {
6264
- /**
6265
- * This interface was referenced by `undefined`'s JSON-Schema definition
6266
- * via the `patternProperty` "^[a-z0-9_]+$".
6267
- */
6268
- [k: string]: AssetVariant | AssetVariant[];
6269
- };
6270
- brand?: BrandReference;
6271
- /**
6272
- * Rights constraints attached to this creative. Each entry represents constraints from a single rights holder. A creative may combine multiple rights constraints (e.g., talent likeness + music license). For v1, rights constraints are informational metadata — the buyer/orchestrator manages creative lifecycle against these terms.
6273
- */
6274
- rights?: RightsConstraint[];
6275
- /**
6276
- * Industry-standard identifiers for this specific manifest (e.g., Ad-ID, ISCI, Clearcast clock number). When present, overrides creative-level identifiers. Use when different format versions of the same source creative have distinct Ad-IDs (e.g., the :15 and :30 cuts).
6277
- */
6278
- industry_identifiers?: IndustryIdentifier[];
6279
- provenance?: Provenance;
6280
- ext?: ExtensionObject;
6281
- });
6231
+ } & (V1ManifestNamedFormatReference | V2ManifestCanonicalFormatKind);
6282
6232
  /**
6283
6233
  * Types of rights usage that can be licensed through the brand protocol. Aligned with DDEX UseType direction for interoperability with music and media rights systems.
6284
6234
  */
@@ -7746,51 +7696,117 @@ export interface RightsConstraint {
7746
7696
  ext?: ExtensionObject;
7747
7697
  }
7748
7698
  /**
7749
- * Structured consumption details for this build. Informational — lets the buyer verify that vendor_cost is consistent with the rate card. vendor_cost is the billing source of truth.
7699
+ * Manifest references a named format via the structured `format_id` object. The v1 path; remains supported through 4.x.
7750
7700
  */
7751
- export interface CreativeConsumption {
7701
+ export interface V1ManifestNamedFormatReference {
7702
+ format_id: FormatReferenceStructuredObject;
7752
7703
  /**
7753
- * LLM or generation tokens consumed during creative generation.
7754
- * @minimum 0
7704
+ * v2 path, optional. Stable identifier matching one of the seller's product `format_options[i].capability_id` values. REQUIRED when the target product carries multiple `format_options` entries sharing the same `format_kind` (the buyer must disambiguate which option this manifest matches). When the product's `format_options` has a single entry — or multiple entries with distinct `format_kind` values — `capability_id` is OPTIONAL because `format_kind` alone routes the manifest to the right declaration.
7755
7705
  */
7756
- tokens?: number;
7706
+ capability_id?: string;
7757
7707
  /**
7758
- * Number of images produced during generation.
7759
- * @minimum 0
7708
+ * Map of slot keys to actual asset content. v1 path: each key matches an `asset_id` from the format's `assets` array (e.g., 'banner_image', 'clickthrough_url', 'video_file', 'vast_tag'). v2 path: each key matches an `asset_group_id` from the format's `slots` declaration drawn from the canonical vocabulary registry (e.g., 'images_landscape', 'video', 'landing_page_url', 'vast_tag', 'script', 'creative_brief'). Either path produces the same envelope shape; only the slot-key vocabulary differs.
7709
+ *
7710
+ * Each slot value is **either** a single asset object (most slots — image, video, vast_tag, landing_page_url, etc.) **or** an array of asset objects (slots with `min`/`max` counts on the format declaration — `cards` on `image_carousel`, `headlines` / `descriptions` / `images_landscape` on `responsive_creative`, etc.). Single-vs-array shape is governed by the format's `slots[].min` and `slots[].max` parameters: when `max > 1` (or when the slot is conceptually a pool), the value MUST be an array; when the slot is single-valued, the value MUST be a single object. Each asset value (single or array element) carries an `asset_type` discriminator (image, video, audio, vast, daast, text, markdown, url, html, css, webhook, javascript, brief, catalog, zip, card) that selects the matching asset schema. Validators with OpenAPI-style discriminator support use `asset_type` to report errors against only the selected branch instead of all branches.
7760
7711
  */
7761
- images_generated?: number;
7712
+ assets: {
7713
+ /**
7714
+ * This interface was referenced by `undefined`'s JSON-Schema definition
7715
+ * via the `patternProperty` "^[a-z0-9_]+$".
7716
+ */
7717
+ [k: string]: AssetVariant | AssetVariant[];
7718
+ };
7719
+ brand?: BrandReference;
7762
7720
  /**
7763
- * Number of render passes performed (video, animation).
7764
- * @minimum 0
7721
+ * Rights constraints attached to this creative. Each entry represents constraints from a single rights holder. A creative may combine multiple rights constraints (e.g., talent likeness + music license). For v1, rights constraints are informational metadata — the buyer/orchestrator manages creative lifecycle against these terms.
7765
7722
  */
7766
- renders?: number;
7723
+ rights?: RightsConstraint[];
7767
7724
  /**
7768
- * Processing time billed, in seconds. For compute-time pricing models.
7769
- * @minimum 0
7725
+ * Industry-standard identifiers for this specific manifest (e.g., Ad-ID, ISCI, Clearcast clock number). When present, overrides creative-level identifiers. Use when different format versions of the same source creative have distinct Ad-IDs (e.g., the :15 and :30 cuts).
7770
7726
  */
7771
- duration_seconds?: number;
7727
+ industry_identifiers?: IndustryIdentifier[];
7728
+ provenance?: Provenance;
7729
+ ext?: ExtensionObject;
7772
7730
  }
7773
7731
  /**
7774
- * Multi-format success response. Returned when the request used target_format_ids. Contains one manifest per requested format. Multi-format requests are atomic — all formats must succeed or the entire request fails with an error response. Array order corresponds to the target_format_ids request order.
7732
+ * Manifest declares which canonical format it targets via `format_kind` (e.g., `image`). The v2 path introduced by RFC #3305.
7775
7733
  */
7776
- export interface BuildCreativeMultiSuccess {
7777
- /**
7778
- * Array of generated creative manifests, one per requested format. Each manifest contains its own format_id identifying which format it was generated for.
7779
- */
7780
- creative_manifests: CreativeManifest[];
7781
- /**
7782
- * When true, this response contains simulated data from sandbox mode.
7783
- */
7784
- sandbox?: boolean;
7734
+ export interface V2ManifestCanonicalFormatKind {
7735
+ format_kind: CanonicalFormatKind;
7785
7736
  /**
7786
- * ISO 8601 timestamp when the earliest generated asset URL expires across all manifests. Re-build after this time to get fresh URLs.
7787
- * @format date-time
7737
+ * v2 path, optional. Stable identifier matching one of the seller's product `format_options[i].capability_id` values. REQUIRED when the target product carries multiple `format_options` entries sharing the same `format_kind` (the buyer must disambiguate which option this manifest matches). When the product's `format_options` has a single entry — or multiple entries with distinct `format_kind` values — `capability_id` is OPTIONAL because `format_kind` alone routes the manifest to the right declaration.
7788
7738
  */
7789
- expires_at?: string;
7739
+ capability_id?: string;
7790
7740
  /**
7791
- * Preview renders included when the request set include_preview to true and the agent supports it. Contains one default preview per requested format. preview_inputs is ignored for multi-format requests.
7741
+ * Map of slot keys to actual asset content. v1 path: each key matches an `asset_id` from the format's `assets` array (e.g., 'banner_image', 'clickthrough_url', 'video_file', 'vast_tag'). v2 path: each key matches an `asset_group_id` from the format's `slots` declaration drawn from the canonical vocabulary registry (e.g., 'images_landscape', 'video', 'landing_page_url', 'vast_tag', 'script', 'creative_brief'). Either path produces the same envelope shape; only the slot-key vocabulary differs.
7742
+ *
7743
+ * Each slot value is **either** a single asset object (most slots — image, video, vast_tag, landing_page_url, etc.) **or** an array of asset objects (slots with `min`/`max` counts on the format declaration — `cards` on `image_carousel`, `headlines` / `descriptions` / `images_landscape` on `responsive_creative`, etc.). Single-vs-array shape is governed by the format's `slots[].min` and `slots[].max` parameters: when `max > 1` (or when the slot is conceptually a pool), the value MUST be an array; when the slot is single-valued, the value MUST be a single object. Each asset value (single or array element) carries an `asset_type` discriminator (image, video, audio, vast, daast, text, markdown, url, html, css, webhook, javascript, brief, catalog, zip, card) that selects the matching asset schema. Validators with OpenAPI-style discriminator support use `asset_type` to report errors against only the selected branch instead of all branches.
7792
7744
  */
7793
- preview?: {
7745
+ assets: {
7746
+ /**
7747
+ * This interface was referenced by `undefined`'s JSON-Schema definition
7748
+ * via the `patternProperty` "^[a-z0-9_]+$".
7749
+ */
7750
+ [k: string]: AssetVariant | AssetVariant[];
7751
+ };
7752
+ brand?: BrandReference;
7753
+ /**
7754
+ * Rights constraints attached to this creative. Each entry represents constraints from a single rights holder. A creative may combine multiple rights constraints (e.g., talent likeness + music license). For v1, rights constraints are informational metadata — the buyer/orchestrator manages creative lifecycle against these terms.
7755
+ */
7756
+ rights?: RightsConstraint[];
7757
+ /**
7758
+ * Industry-standard identifiers for this specific manifest (e.g., Ad-ID, ISCI, Clearcast clock number). When present, overrides creative-level identifiers. Use when different format versions of the same source creative have distinct Ad-IDs (e.g., the :15 and :30 cuts).
7759
+ */
7760
+ industry_identifiers?: IndustryIdentifier[];
7761
+ provenance?: Provenance;
7762
+ ext?: ExtensionObject;
7763
+ }
7764
+ /**
7765
+ * Structured consumption details for this build. Informational — lets the buyer verify that vendor_cost is consistent with the rate card. vendor_cost is the billing source of truth.
7766
+ */
7767
+ export interface CreativeConsumption {
7768
+ /**
7769
+ * LLM or generation tokens consumed during creative generation.
7770
+ * @minimum 0
7771
+ */
7772
+ tokens?: number;
7773
+ /**
7774
+ * Number of images produced during generation.
7775
+ * @minimum 0
7776
+ */
7777
+ images_generated?: number;
7778
+ /**
7779
+ * Number of render passes performed (video, animation).
7780
+ * @minimum 0
7781
+ */
7782
+ renders?: number;
7783
+ /**
7784
+ * Processing time billed, in seconds. For compute-time pricing models.
7785
+ * @minimum 0
7786
+ */
7787
+ duration_seconds?: number;
7788
+ }
7789
+ /**
7790
+ * Multi-format success response. Returned when the request used target_format_ids. Contains one manifest per requested format. Multi-format requests are atomic — all formats must succeed or the entire request fails with an error response. Array order corresponds to the target_format_ids request order.
7791
+ */
7792
+ export interface BuildCreativeMultiSuccess {
7793
+ /**
7794
+ * Array of generated creative manifests, one per requested format. Each manifest contains its own format_id identifying which format it was generated for.
7795
+ */
7796
+ creative_manifests: CreativeManifest[];
7797
+ /**
7798
+ * When true, this response contains simulated data from sandbox mode.
7799
+ */
7800
+ sandbox?: boolean;
7801
+ /**
7802
+ * ISO 8601 timestamp when the earliest generated asset URL expires across all manifests. Re-build after this time to get fresh URLs.
7803
+ * @format date-time
7804
+ */
7805
+ expires_at?: string;
7806
+ /**
7807
+ * Preview renders included when the request set include_preview to true and the agent supports it. Contains one default preview per requested format. preview_inputs is ignored for multi-format requests.
7808
+ */
7809
+ preview?: {
7794
7810
  /**
7795
7811
  * Array of preview entries, one per requested format. Array order matches creative_manifests. Each entry includes a format_id for explicit correlation.
7796
7812
  */
@@ -11521,53 +11537,41 @@ export type BriefAsset1 = BriefAsset;
11521
11537
  */
11522
11538
  export type CatalogAsset1 = CatalogAsset;
11523
11539
  /**
11524
- * Canonical union of all asset variant schemas. Referenced from creative-asset.json and creative-manifest.json to ensure a single named type is emitted by schema-to-TypeScript tooling. Add new asset types here and to the creative/asset-types registry.
11540
+ * Re-export of `AssetVariant` under the legacy codegen artifact name.
11541
+ *
11542
+ * `AssetVariant2` is a json-schema-to-typescript under-resolution artifact —
11543
+ * the bundler inlined the same schema at two call sites and jsts emitted a numbered
11544
+ * sibling. The body it produced was strictly weaker than `AssetVariant` (missing the
11545
+ * `asset_type` discriminator or its containing wrapper); aliasing to `AssetVariant`
11546
+ * gives consumers the correctly-discriminated shape that matches the wire format.
11547
+ *
11548
+ * @deprecated Use `AssetVariant` from `@adcp/sdk/types`. Slated for removal in the next major.
11525
11549
  */
11526
- export type AssetVariant2 = ImageAsset | VideoAsset | AudioAsset | VASTAsset2 | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | ZipAsset | WebhookAsset | CSSAsset | DAASTAsset2 | MarkdownAsset | BriefAsset2 | CatalogAsset2 | CardAsset;
11550
+ export type AssetVariant2 = AssetVariant;
11527
11551
  /**
11528
- * VAST (Video Ad Serving Template) tag for third-party video ad serving
11552
+ * Re-export of `VASTAsset` under the legacy codegen artifact name.
11553
+ *
11554
+ * `VASTAsset2` is a json-schema-to-typescript under-resolution artifact —
11555
+ * the bundler inlined the same schema at two call sites and jsts emitted a numbered
11556
+ * sibling. The body it produced was strictly weaker than `VASTAsset` (missing the
11557
+ * `asset_type` discriminator or its containing wrapper); aliasing to `VASTAsset`
11558
+ * gives consumers the correctly-discriminated shape that matches the wire format.
11559
+ *
11560
+ * @deprecated Use `VASTAsset` from `@adcp/sdk/types`. Slated for removal in the next major.
11529
11561
  */
11530
- export type VASTAsset2 = {
11531
- /**
11532
- * Discriminator indicating VAST is delivered via URL endpoint
11533
- */
11534
- delivery_type: 'url';
11535
- /**
11536
- * URL endpoint that returns VAST XML
11537
- */
11538
- url: string;
11539
- } | {
11540
- /**
11541
- * Discriminator indicating VAST is delivered as inline XML content
11542
- */
11543
- delivery_type: 'inline';
11544
- /**
11545
- * Inline VAST XML content
11546
- */
11547
- content: string;
11548
- };
11562
+ export type VASTAsset2 = VASTAsset;
11549
11563
  /**
11550
- * DAAST (Digital Audio Ad Serving Template) tag for third-party audio ad serving
11564
+ * Re-export of `DAASTAsset` under the legacy codegen artifact name.
11565
+ *
11566
+ * `DAASTAsset2` is a json-schema-to-typescript under-resolution artifact —
11567
+ * the bundler inlined the same schema at two call sites and jsts emitted a numbered
11568
+ * sibling. The body it produced was strictly weaker than `DAASTAsset` (missing the
11569
+ * `asset_type` discriminator or its containing wrapper); aliasing to `DAASTAsset`
11570
+ * gives consumers the correctly-discriminated shape that matches the wire format.
11571
+ *
11572
+ * @deprecated Use `DAASTAsset` from `@adcp/sdk/types`. Slated for removal in the next major.
11551
11573
  */
11552
- export type DAASTAsset2 = {
11553
- /**
11554
- * Discriminator indicating DAAST is delivered via URL endpoint
11555
- */
11556
- delivery_type: 'url';
11557
- /**
11558
- * URL endpoint that returns DAAST XML
11559
- */
11560
- url: string;
11561
- } | {
11562
- /**
11563
- * Discriminator indicating DAAST is delivered as inline XML content
11564
- */
11565
- delivery_type: 'inline';
11566
- /**
11567
- * Inline DAAST XML content
11568
- */
11569
- content: string;
11570
- };
11574
+ export type DAASTAsset2 = DAASTAsset;
11571
11575
  /**
11572
11576
  * Campaign-level creative context as an asset. Carries the creative brief through the manifest so it travels with the creative through regeneration, resizing, and auditing.
11573
11577
  */
@@ -11577,53 +11581,41 @@ export type BriefAsset2 = CreativeBrief;
11577
11581
  */
11578
11582
  export type CatalogAsset2 = Catalog;
11579
11583
  /**
11580
- * Canonical union of all asset variant schemas. Referenced from creative-asset.json and creative-manifest.json to ensure a single named type is emitted by schema-to-TypeScript tooling. Add new asset types here and to the creative/asset-types registry.
11584
+ * Re-export of `AssetVariant` under the legacy codegen artifact name.
11585
+ *
11586
+ * `AssetVariant3` is a json-schema-to-typescript under-resolution artifact —
11587
+ * the bundler inlined the same schema at two call sites and jsts emitted a numbered
11588
+ * sibling. The body it produced was strictly weaker than `AssetVariant` (missing the
11589
+ * `asset_type` discriminator or its containing wrapper); aliasing to `AssetVariant`
11590
+ * gives consumers the correctly-discriminated shape that matches the wire format.
11591
+ *
11592
+ * @deprecated Use `AssetVariant` from `@adcp/sdk/types`. Slated for removal in the next major.
11581
11593
  */
11582
- export type AssetVariant3 = ImageAsset | VideoAsset | AudioAsset | VASTAsset3 | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | ZipAsset | WebhookAsset | CSSAsset | DAASTAsset3 | MarkdownAsset | BriefAsset3 | CatalogAsset3 | CardAsset;
11594
+ export type AssetVariant3 = AssetVariant;
11583
11595
  /**
11584
- * VAST (Video Ad Serving Template) tag for third-party video ad serving
11596
+ * Re-export of `VASTAsset` under the legacy codegen artifact name.
11597
+ *
11598
+ * `VASTAsset3` is a json-schema-to-typescript under-resolution artifact —
11599
+ * the bundler inlined the same schema at two call sites and jsts emitted a numbered
11600
+ * sibling. The body it produced was strictly weaker than `VASTAsset` (missing the
11601
+ * `asset_type` discriminator or its containing wrapper); aliasing to `VASTAsset`
11602
+ * gives consumers the correctly-discriminated shape that matches the wire format.
11603
+ *
11604
+ * @deprecated Use `VASTAsset` from `@adcp/sdk/types`. Slated for removal in the next major.
11585
11605
  */
11586
- export type VASTAsset3 = {
11587
- /**
11588
- * Discriminator indicating VAST is delivered via URL endpoint
11589
- */
11590
- delivery_type: 'url';
11591
- /**
11592
- * URL endpoint that returns VAST XML
11593
- */
11594
- url: string;
11595
- } | {
11596
- /**
11597
- * Discriminator indicating VAST is delivered as inline XML content
11598
- */
11599
- delivery_type: 'inline';
11600
- /**
11601
- * Inline VAST XML content
11602
- */
11603
- content: string;
11604
- };
11606
+ export type VASTAsset3 = VASTAsset;
11605
11607
  /**
11606
- * DAAST (Digital Audio Ad Serving Template) tag for third-party audio ad serving
11608
+ * Re-export of `DAASTAsset` under the legacy codegen artifact name.
11609
+ *
11610
+ * `DAASTAsset3` is a json-schema-to-typescript under-resolution artifact —
11611
+ * the bundler inlined the same schema at two call sites and jsts emitted a numbered
11612
+ * sibling. The body it produced was strictly weaker than `DAASTAsset` (missing the
11613
+ * `asset_type` discriminator or its containing wrapper); aliasing to `DAASTAsset`
11614
+ * gives consumers the correctly-discriminated shape that matches the wire format.
11615
+ *
11616
+ * @deprecated Use `DAASTAsset` from `@adcp/sdk/types`. Slated for removal in the next major.
11607
11617
  */
11608
- export type DAASTAsset3 = {
11609
- /**
11610
- * Discriminator indicating DAAST is delivered via URL endpoint
11611
- */
11612
- delivery_type: 'url';
11613
- /**
11614
- * URL endpoint that returns DAAST XML
11615
- */
11616
- url: string;
11617
- } | {
11618
- /**
11619
- * Discriminator indicating DAAST is delivered as inline XML content
11620
- */
11621
- delivery_type: 'inline';
11622
- /**
11623
- * Inline DAAST XML content
11624
- */
11625
- content: string;
11626
- };
11618
+ export type DAASTAsset3 = DAASTAsset;
11627
11619
  /**
11628
11620
  * Campaign-level creative context as an asset. Carries the creative brief through the manifest so it travels with the creative through regeneration, resizing, and auditing.
11629
11621
  */
@@ -11633,53 +11625,41 @@ export type BriefAsset3 = CreativeBrief;
11633
11625
  */
11634
11626
  export type CatalogAsset3 = Catalog;
11635
11627
  /**
11636
- * Canonical union of all asset variant schemas. Referenced from creative-asset.json and creative-manifest.json to ensure a single named type is emitted by schema-to-TypeScript tooling. Add new asset types here and to the creative/asset-types registry.
11628
+ * Re-export of `AssetVariant` under the legacy codegen artifact name.
11629
+ *
11630
+ * `AssetVariant4` is a json-schema-to-typescript under-resolution artifact —
11631
+ * the bundler inlined the same schema at two call sites and jsts emitted a numbered
11632
+ * sibling. The body it produced was strictly weaker than `AssetVariant` (missing the
11633
+ * `asset_type` discriminator or its containing wrapper); aliasing to `AssetVariant`
11634
+ * gives consumers the correctly-discriminated shape that matches the wire format.
11635
+ *
11636
+ * @deprecated Use `AssetVariant` from `@adcp/sdk/types`. Slated for removal in the next major.
11637
11637
  */
11638
- export type AssetVariant4 = ImageAsset | VideoAsset | AudioAsset | VASTAsset4 | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | ZipAsset | WebhookAsset | CSSAsset | DAASTAsset4 | MarkdownAsset | BriefAsset4 | CatalogAsset4 | CardAsset;
11638
+ export type AssetVariant4 = AssetVariant;
11639
11639
  /**
11640
- * VAST (Video Ad Serving Template) tag for third-party video ad serving
11640
+ * Re-export of `VASTAsset` under the legacy codegen artifact name.
11641
+ *
11642
+ * `VASTAsset4` is a json-schema-to-typescript under-resolution artifact —
11643
+ * the bundler inlined the same schema at two call sites and jsts emitted a numbered
11644
+ * sibling. The body it produced was strictly weaker than `VASTAsset` (missing the
11645
+ * `asset_type` discriminator or its containing wrapper); aliasing to `VASTAsset`
11646
+ * gives consumers the correctly-discriminated shape that matches the wire format.
11647
+ *
11648
+ * @deprecated Use `VASTAsset` from `@adcp/sdk/types`. Slated for removal in the next major.
11641
11649
  */
11642
- export type VASTAsset4 = {
11643
- /**
11644
- * Discriminator indicating VAST is delivered via URL endpoint
11645
- */
11646
- delivery_type: 'url';
11647
- /**
11648
- * URL endpoint that returns VAST XML
11649
- */
11650
- url: string;
11651
- } | {
11652
- /**
11653
- * Discriminator indicating VAST is delivered as inline XML content
11654
- */
11655
- delivery_type: 'inline';
11656
- /**
11657
- * Inline VAST XML content
11658
- */
11659
- content: string;
11660
- };
11650
+ export type VASTAsset4 = VASTAsset;
11661
11651
  /**
11662
- * DAAST (Digital Audio Ad Serving Template) tag for third-party audio ad serving
11652
+ * Re-export of `DAASTAsset` under the legacy codegen artifact name.
11653
+ *
11654
+ * `DAASTAsset4` is a json-schema-to-typescript under-resolution artifact —
11655
+ * the bundler inlined the same schema at two call sites and jsts emitted a numbered
11656
+ * sibling. The body it produced was strictly weaker than `DAASTAsset` (missing the
11657
+ * `asset_type` discriminator or its containing wrapper); aliasing to `DAASTAsset`
11658
+ * gives consumers the correctly-discriminated shape that matches the wire format.
11659
+ *
11660
+ * @deprecated Use `DAASTAsset` from `@adcp/sdk/types`. Slated for removal in the next major.
11663
11661
  */
11664
- export type DAASTAsset4 = {
11665
- /**
11666
- * Discriminator indicating DAAST is delivered via URL endpoint
11667
- */
11668
- delivery_type: 'url';
11669
- /**
11670
- * URL endpoint that returns DAAST XML
11671
- */
11672
- url: string;
11673
- } | {
11674
- /**
11675
- * Discriminator indicating DAAST is delivered as inline XML content
11676
- */
11677
- delivery_type: 'inline';
11678
- /**
11679
- * Inline DAAST XML content
11680
- */
11681
- content: string;
11682
- };
11662
+ export type DAASTAsset4 = DAASTAsset;
11683
11663
  /**
11684
11664
  * Campaign-level creative context as an asset. Carries the creative brief through the manifest so it travels with the creative through regeneration, resizing, and auditing.
11685
11665
  */
@@ -11689,53 +11669,41 @@ export type BriefAsset4 = CreativeBrief;
11689
11669
  */
11690
11670
  export type CatalogAsset4 = Catalog;
11691
11671
  /**
11692
- * Canonical union of all asset variant schemas. Referenced from creative-asset.json and creative-manifest.json to ensure a single named type is emitted by schema-to-TypeScript tooling. Add new asset types here and to the creative/asset-types registry.
11672
+ * Re-export of `AssetVariant` under the legacy codegen artifact name.
11673
+ *
11674
+ * `AssetVariant5` is a json-schema-to-typescript under-resolution artifact —
11675
+ * the bundler inlined the same schema at two call sites and jsts emitted a numbered
11676
+ * sibling. The body it produced was strictly weaker than `AssetVariant` (missing the
11677
+ * `asset_type` discriminator or its containing wrapper); aliasing to `AssetVariant`
11678
+ * gives consumers the correctly-discriminated shape that matches the wire format.
11679
+ *
11680
+ * @deprecated Use `AssetVariant` from `@adcp/sdk/types`. Slated for removal in the next major.
11693
11681
  */
11694
- export type AssetVariant5 = ImageAsset | VideoAsset | AudioAsset | VASTAsset5 | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | ZipAsset | WebhookAsset | CSSAsset | DAASTAsset5 | MarkdownAsset | BriefAsset5 | CatalogAsset5 | CardAsset;
11682
+ export type AssetVariant5 = AssetVariant;
11695
11683
  /**
11696
- * VAST (Video Ad Serving Template) tag for third-party video ad serving
11684
+ * Re-export of `VASTAsset` under the legacy codegen artifact name.
11685
+ *
11686
+ * `VASTAsset5` is a json-schema-to-typescript under-resolution artifact —
11687
+ * the bundler inlined the same schema at two call sites and jsts emitted a numbered
11688
+ * sibling. The body it produced was strictly weaker than `VASTAsset` (missing the
11689
+ * `asset_type` discriminator or its containing wrapper); aliasing to `VASTAsset`
11690
+ * gives consumers the correctly-discriminated shape that matches the wire format.
11691
+ *
11692
+ * @deprecated Use `VASTAsset` from `@adcp/sdk/types`. Slated for removal in the next major.
11697
11693
  */
11698
- export type VASTAsset5 = {
11699
- /**
11700
- * Discriminator indicating VAST is delivered via URL endpoint
11701
- */
11702
- delivery_type: 'url';
11703
- /**
11704
- * URL endpoint that returns VAST XML
11705
- */
11706
- url: string;
11707
- } | {
11708
- /**
11709
- * Discriminator indicating VAST is delivered as inline XML content
11710
- */
11711
- delivery_type: 'inline';
11712
- /**
11713
- * Inline VAST XML content
11714
- */
11715
- content: string;
11716
- };
11694
+ export type VASTAsset5 = VASTAsset;
11717
11695
  /**
11718
- * DAAST (Digital Audio Ad Serving Template) tag for third-party audio ad serving
11696
+ * Re-export of `DAASTAsset` under the legacy codegen artifact name.
11697
+ *
11698
+ * `DAASTAsset5` is a json-schema-to-typescript under-resolution artifact —
11699
+ * the bundler inlined the same schema at two call sites and jsts emitted a numbered
11700
+ * sibling. The body it produced was strictly weaker than `DAASTAsset` (missing the
11701
+ * `asset_type` discriminator or its containing wrapper); aliasing to `DAASTAsset`
11702
+ * gives consumers the correctly-discriminated shape that matches the wire format.
11703
+ *
11704
+ * @deprecated Use `DAASTAsset` from `@adcp/sdk/types`. Slated for removal in the next major.
11719
11705
  */
11720
- export type DAASTAsset5 = {
11721
- /**
11722
- * Discriminator indicating DAAST is delivered via URL endpoint
11723
- */
11724
- delivery_type: 'url';
11725
- /**
11726
- * URL endpoint that returns DAAST XML
11727
- */
11728
- url: string;
11729
- } | {
11730
- /**
11731
- * Discriminator indicating DAAST is delivered as inline XML content
11732
- */
11733
- delivery_type: 'inline';
11734
- /**
11735
- * Inline DAAST XML content
11736
- */
11737
- content: string;
11738
- };
11706
+ export type DAASTAsset5 = DAASTAsset;
11739
11707
  /**
11740
11708
  * Campaign-level creative context as an asset. Carries the creative brief through the manifest so it travels with the creative through regeneration, resizing, and auditing.
11741
11709
  */
@@ -11745,53 +11713,41 @@ export type BriefAsset5 = CreativeBrief;
11745
11713
  */
11746
11714
  export type CatalogAsset5 = Catalog;
11747
11715
  /**
11748
- * Canonical union of all asset variant schemas. Referenced from creative-asset.json and creative-manifest.json to ensure a single named type is emitted by schema-to-TypeScript tooling. Add new asset types here and to the creative/asset-types registry.
11716
+ * Re-export of `AssetVariant` under the legacy codegen artifact name.
11717
+ *
11718
+ * `AssetVariant6` is a json-schema-to-typescript under-resolution artifact —
11719
+ * the bundler inlined the same schema at two call sites and jsts emitted a numbered
11720
+ * sibling. The body it produced was strictly weaker than `AssetVariant` (missing the
11721
+ * `asset_type` discriminator or its containing wrapper); aliasing to `AssetVariant`
11722
+ * gives consumers the correctly-discriminated shape that matches the wire format.
11723
+ *
11724
+ * @deprecated Use `AssetVariant` from `@adcp/sdk/types`. Slated for removal in the next major.
11749
11725
  */
11750
- export type AssetVariant6 = ImageAsset | VideoAsset | AudioAsset | VASTAsset6 | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | ZipAsset | WebhookAsset | CSSAsset | DAASTAsset6 | MarkdownAsset | BriefAsset6 | CatalogAsset6 | CardAsset;
11726
+ export type AssetVariant6 = AssetVariant;
11751
11727
  /**
11752
- * VAST (Video Ad Serving Template) tag for third-party video ad serving
11728
+ * Re-export of `VASTAsset` under the legacy codegen artifact name.
11729
+ *
11730
+ * `VASTAsset6` is a json-schema-to-typescript under-resolution artifact —
11731
+ * the bundler inlined the same schema at two call sites and jsts emitted a numbered
11732
+ * sibling. The body it produced was strictly weaker than `VASTAsset` (missing the
11733
+ * `asset_type` discriminator or its containing wrapper); aliasing to `VASTAsset`
11734
+ * gives consumers the correctly-discriminated shape that matches the wire format.
11735
+ *
11736
+ * @deprecated Use `VASTAsset` from `@adcp/sdk/types`. Slated for removal in the next major.
11753
11737
  */
11754
- export type VASTAsset6 = {
11755
- /**
11756
- * Discriminator indicating VAST is delivered via URL endpoint
11757
- */
11758
- delivery_type: 'url';
11759
- /**
11760
- * URL endpoint that returns VAST XML
11761
- */
11762
- url: string;
11763
- } | {
11764
- /**
11765
- * Discriminator indicating VAST is delivered as inline XML content
11766
- */
11767
- delivery_type: 'inline';
11768
- /**
11769
- * Inline VAST XML content
11770
- */
11771
- content: string;
11772
- };
11738
+ export type VASTAsset6 = VASTAsset;
11773
11739
  /**
11774
- * DAAST (Digital Audio Ad Serving Template) tag for third-party audio ad serving
11740
+ * Re-export of `DAASTAsset` under the legacy codegen artifact name.
11741
+ *
11742
+ * `DAASTAsset6` is a json-schema-to-typescript under-resolution artifact —
11743
+ * the bundler inlined the same schema at two call sites and jsts emitted a numbered
11744
+ * sibling. The body it produced was strictly weaker than `DAASTAsset` (missing the
11745
+ * `asset_type` discriminator or its containing wrapper); aliasing to `DAASTAsset`
11746
+ * gives consumers the correctly-discriminated shape that matches the wire format.
11747
+ *
11748
+ * @deprecated Use `DAASTAsset` from `@adcp/sdk/types`. Slated for removal in the next major.
11775
11749
  */
11776
- export type DAASTAsset6 = {
11777
- /**
11778
- * Discriminator indicating DAAST is delivered via URL endpoint
11779
- */
11780
- delivery_type: 'url';
11781
- /**
11782
- * URL endpoint that returns DAAST XML
11783
- */
11784
- url: string;
11785
- } | {
11786
- /**
11787
- * Discriminator indicating DAAST is delivered as inline XML content
11788
- */
11789
- delivery_type: 'inline';
11790
- /**
11791
- * Inline DAAST XML content
11792
- */
11793
- content: string;
11794
- };
11750
+ export type DAASTAsset6 = DAASTAsset;
11795
11751
  /**
11796
11752
  * Campaign-level creative context as an asset. Carries the creative brief through the manifest so it travels with the creative through regeneration, resizing, and auditing.
11797
11753
  */
@@ -11801,53 +11757,41 @@ export type BriefAsset6 = CreativeBrief;
11801
11757
  */
11802
11758
  export type CatalogAsset6 = Catalog;
11803
11759
  /**
11804
- * Canonical union of all asset variant schemas. Referenced from creative-asset.json and creative-manifest.json to ensure a single named type is emitted by schema-to-TypeScript tooling. Add new asset types here and to the creative/asset-types registry.
11760
+ * Re-export of `AssetVariant` under the legacy codegen artifact name.
11761
+ *
11762
+ * `AssetVariant7` is a json-schema-to-typescript under-resolution artifact —
11763
+ * the bundler inlined the same schema at two call sites and jsts emitted a numbered
11764
+ * sibling. The body it produced was strictly weaker than `AssetVariant` (missing the
11765
+ * `asset_type` discriminator or its containing wrapper); aliasing to `AssetVariant`
11766
+ * gives consumers the correctly-discriminated shape that matches the wire format.
11767
+ *
11768
+ * @deprecated Use `AssetVariant` from `@adcp/sdk/types`. Slated for removal in the next major.
11805
11769
  */
11806
- export type AssetVariant7 = ImageAsset | VideoAsset | AudioAsset | VASTAsset7 | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | ZipAsset | WebhookAsset | CSSAsset | DAASTAsset7 | MarkdownAsset | BriefAsset7 | CatalogAsset7 | CardAsset;
11770
+ export type AssetVariant7 = AssetVariant;
11807
11771
  /**
11808
- * VAST (Video Ad Serving Template) tag for third-party video ad serving
11772
+ * Re-export of `VASTAsset` under the legacy codegen artifact name.
11773
+ *
11774
+ * `VASTAsset7` is a json-schema-to-typescript under-resolution artifact —
11775
+ * the bundler inlined the same schema at two call sites and jsts emitted a numbered
11776
+ * sibling. The body it produced was strictly weaker than `VASTAsset` (missing the
11777
+ * `asset_type` discriminator or its containing wrapper); aliasing to `VASTAsset`
11778
+ * gives consumers the correctly-discriminated shape that matches the wire format.
11779
+ *
11780
+ * @deprecated Use `VASTAsset` from `@adcp/sdk/types`. Slated for removal in the next major.
11809
11781
  */
11810
- export type VASTAsset7 = {
11811
- /**
11812
- * Discriminator indicating VAST is delivered via URL endpoint
11813
- */
11814
- delivery_type: 'url';
11815
- /**
11816
- * URL endpoint that returns VAST XML
11817
- */
11818
- url: string;
11819
- } | {
11820
- /**
11821
- * Discriminator indicating VAST is delivered as inline XML content
11822
- */
11823
- delivery_type: 'inline';
11824
- /**
11825
- * Inline VAST XML content
11826
- */
11827
- content: string;
11828
- };
11782
+ export type VASTAsset7 = VASTAsset;
11829
11783
  /**
11830
- * DAAST (Digital Audio Ad Serving Template) tag for third-party audio ad serving
11784
+ * Re-export of `DAASTAsset` under the legacy codegen artifact name.
11785
+ *
11786
+ * `DAASTAsset7` is a json-schema-to-typescript under-resolution artifact —
11787
+ * the bundler inlined the same schema at two call sites and jsts emitted a numbered
11788
+ * sibling. The body it produced was strictly weaker than `DAASTAsset` (missing the
11789
+ * `asset_type` discriminator or its containing wrapper); aliasing to `DAASTAsset`
11790
+ * gives consumers the correctly-discriminated shape that matches the wire format.
11791
+ *
11792
+ * @deprecated Use `DAASTAsset` from `@adcp/sdk/types`. Slated for removal in the next major.
11831
11793
  */
11832
- export type DAASTAsset7 = {
11833
- /**
11834
- * Discriminator indicating DAAST is delivered via URL endpoint
11835
- */
11836
- delivery_type: 'url';
11837
- /**
11838
- * URL endpoint that returns DAAST XML
11839
- */
11840
- url: string;
11841
- } | {
11842
- /**
11843
- * Discriminator indicating DAAST is delivered as inline XML content
11844
- */
11845
- delivery_type: 'inline';
11846
- /**
11847
- * Inline DAAST XML content
11848
- */
11849
- content: string;
11850
- };
11794
+ export type DAASTAsset7 = DAASTAsset;
11851
11795
  /**
11852
11796
  * Campaign-level creative context as an asset. Carries the creative brief through the manifest so it travels with the creative through regeneration, resizing, and auditing.
11853
11797
  */
@@ -12096,6 +12040,72 @@ export interface CreativeBrief {
12096
12040
  prohibited_claims?: string[];
12097
12041
  };
12098
12042
  }
12043
+ /**
12044
+ * Manifest references a named format via the structured `format_id` object. The v1 path; remains supported through 4.x.
12045
+ */
12046
+ export interface V1ManifestNamedFormatReference1 {
12047
+ format_id: FormatReferenceStructuredObject;
12048
+ /**
12049
+ * v2 path, optional. Stable identifier matching one of the seller's product `format_options[i].capability_id` values. REQUIRED when the target product carries multiple `format_options` entries sharing the same `format_kind` (the buyer must disambiguate which option this manifest matches). When the product's `format_options` has a single entry — or multiple entries with distinct `format_kind` values — `capability_id` is OPTIONAL because `format_kind` alone routes the manifest to the right declaration.
12050
+ */
12051
+ capability_id?: string;
12052
+ /**
12053
+ * Map of slot keys to actual asset content. v1 path: each key matches an `asset_id` from the format's `assets` array (e.g., 'banner_image', 'clickthrough_url', 'video_file', 'vast_tag'). v2 path: each key matches an `asset_group_id` from the format's `slots` declaration drawn from the canonical vocabulary registry (e.g., 'images_landscape', 'video', 'landing_page_url', 'vast_tag', 'script', 'creative_brief'). Either path produces the same envelope shape; only the slot-key vocabulary differs.
12054
+ *
12055
+ * Each slot value is **either** a single asset object (most slots — image, video, vast_tag, landing_page_url, etc.) **or** an array of asset objects (slots with `min`/`max` counts on the format declaration — `cards` on `image_carousel`, `headlines` / `descriptions` / `images_landscape` on `responsive_creative`, etc.). Single-vs-array shape is governed by the format's `slots[].min` and `slots[].max` parameters: when `max > 1` (or when the slot is conceptually a pool), the value MUST be an array; when the slot is single-valued, the value MUST be a single object. Each asset value (single or array element) carries an `asset_type` discriminator (image, video, audio, vast, daast, text, markdown, url, html, css, webhook, javascript, brief, catalog, zip, card) that selects the matching asset schema. Validators with OpenAPI-style discriminator support use `asset_type` to report errors against only the selected branch instead of all branches.
12056
+ */
12057
+ assets: {
12058
+ /**
12059
+ * This interface was referenced by `undefined`'s JSON-Schema definition
12060
+ * via the `patternProperty` "^[a-z0-9_]+$".
12061
+ */
12062
+ [k: string]: AssetVariant4 | AssetVariant5[];
12063
+ };
12064
+ brand?: BrandReference;
12065
+ /**
12066
+ * Rights constraints attached to this creative. Each entry represents constraints from a single rights holder. A creative may combine multiple rights constraints (e.g., talent likeness + music license). For v1, rights constraints are informational metadata — the buyer/orchestrator manages creative lifecycle against these terms.
12067
+ */
12068
+ rights?: RightsConstraint[];
12069
+ /**
12070
+ * Industry-standard identifiers for this specific manifest (e.g., Ad-ID, ISCI, Clearcast clock number). When present, overrides creative-level identifiers. Use when different format versions of the same source creative have distinct Ad-IDs (e.g., the :15 and :30 cuts).
12071
+ */
12072
+ industry_identifiers?: IndustryIdentifier[];
12073
+ provenance?: Provenance;
12074
+ ext?: ExtensionObject;
12075
+ }
12076
+ /**
12077
+ * Manifest declares which canonical format it targets via `format_kind` (e.g., `image`). The v2 path introduced by RFC #3305.
12078
+ */
12079
+ export interface V2ManifestCanonicalFormatKind1 {
12080
+ format_kind: CanonicalFormatKind;
12081
+ /**
12082
+ * v2 path, optional. Stable identifier matching one of the seller's product `format_options[i].capability_id` values. REQUIRED when the target product carries multiple `format_options` entries sharing the same `format_kind` (the buyer must disambiguate which option this manifest matches). When the product's `format_options` has a single entry — or multiple entries with distinct `format_kind` values — `capability_id` is OPTIONAL because `format_kind` alone routes the manifest to the right declaration.
12083
+ */
12084
+ capability_id?: string;
12085
+ /**
12086
+ * Map of slot keys to actual asset content. v1 path: each key matches an `asset_id` from the format's `assets` array (e.g., 'banner_image', 'clickthrough_url', 'video_file', 'vast_tag'). v2 path: each key matches an `asset_group_id` from the format's `slots` declaration drawn from the canonical vocabulary registry (e.g., 'images_landscape', 'video', 'landing_page_url', 'vast_tag', 'script', 'creative_brief'). Either path produces the same envelope shape; only the slot-key vocabulary differs.
12087
+ *
12088
+ * Each slot value is **either** a single asset object (most slots — image, video, vast_tag, landing_page_url, etc.) **or** an array of asset objects (slots with `min`/`max` counts on the format declaration — `cards` on `image_carousel`, `headlines` / `descriptions` / `images_landscape` on `responsive_creative`, etc.). Single-vs-array shape is governed by the format's `slots[].min` and `slots[].max` parameters: when `max > 1` (or when the slot is conceptually a pool), the value MUST be an array; when the slot is single-valued, the value MUST be a single object. Each asset value (single or array element) carries an `asset_type` discriminator (image, video, audio, vast, daast, text, markdown, url, html, css, webhook, javascript, brief, catalog, zip, card) that selects the matching asset schema. Validators with OpenAPI-style discriminator support use `asset_type` to report errors against only the selected branch instead of all branches.
12089
+ */
12090
+ assets: {
12091
+ /**
12092
+ * This interface was referenced by `undefined`'s JSON-Schema definition
12093
+ * via the `patternProperty` "^[a-z0-9_]+$".
12094
+ */
12095
+ [k: string]: AssetVariant6 | AssetVariant7[];
12096
+ };
12097
+ brand?: BrandReference;
12098
+ /**
12099
+ * Rights constraints attached to this creative. Each entry represents constraints from a single rights holder. A creative may combine multiple rights constraints (e.g., talent likeness + music license). For v1, rights constraints are informational metadata — the buyer/orchestrator manages creative lifecycle against these terms.
12100
+ */
12101
+ rights?: RightsConstraint[];
12102
+ /**
12103
+ * Industry-standard identifiers for this specific manifest (e.g., Ad-ID, ISCI, Clearcast clock number). When present, overrides creative-level identifiers. Use when different format versions of the same source creative have distinct Ad-IDs (e.g., the :15 and :30 cuts).
12104
+ */
12105
+ industry_identifiers?: IndustryIdentifier[];
12106
+ provenance?: Provenance;
12107
+ ext?: ExtensionObject;
12108
+ }
12099
12109
  /**
12100
12110
  * Progress payload for active build_creative task. Returned during AI generation, format transformation, or complex library retrieval with macro resolution.
12101
12111
  */