@adcp/sdk 16.0.0-beta.8 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. package/AGENTS.md +3 -3
  2. package/README.md +5 -2
  3. package/bin/adcp.js +10 -13
  4. package/dist/lib/core/AgentClient.d.mts +8 -5
  5. package/dist/lib/core/AgentClient.d.ts +8 -5
  6. package/dist/lib/core/AgentClient.js +9 -4
  7. package/dist/lib/core/AgentClient.mjs +9 -4
  8. package/dist/lib/core/SingleAgentClient.d.mts +19 -112
  9. package/dist/lib/core/SingleAgentClient.d.ts +19 -112
  10. package/dist/lib/core/SingleAgentClient.js +270 -252
  11. package/dist/lib/core/SingleAgentClient.mjs +275 -253
  12. package/dist/lib/core/TaskExecutor.d.mts +1 -16
  13. package/dist/lib/core/TaskExecutor.d.ts +1 -16
  14. package/dist/lib/core/TaskExecutor.js +34 -51
  15. package/dist/lib/core/TaskExecutor.mjs +12 -29
  16. package/dist/lib/core/product-cache.d.mts +3 -1
  17. package/dist/lib/core/product-cache.d.ts +3 -1
  18. package/dist/lib/core/product-cache.js +2 -1
  19. package/dist/lib/core/product-cache.mjs +2 -1
  20. package/dist/lib/errors/index.d.mts +2 -8
  21. package/dist/lib/errors/index.d.ts +2 -8
  22. package/dist/lib/errors/index.js +4 -4
  23. package/dist/lib/errors/index.mjs +4 -4
  24. package/dist/lib/identity-3.3/revocation.js +6 -7
  25. package/dist/lib/identity-3.3/revocation.mjs +6 -7
  26. package/dist/lib/index.d.mts +4 -4
  27. package/dist/lib/index.d.ts +4 -4
  28. package/dist/lib/index.js +0 -14
  29. package/dist/lib/index.mjs +0 -14
  30. package/dist/lib/media-buy/compatibility.d.mts +1 -1
  31. package/dist/lib/media-buy/compatibility.d.ts +1 -1
  32. package/dist/lib/media-buy/compatibility.js +26 -45
  33. package/dist/lib/media-buy/compatibility.mjs +26 -45
  34. package/dist/lib/media-buy/legacy-purchase-continuation.d.mts +2 -2
  35. package/dist/lib/media-buy/legacy-purchase-continuation.d.ts +2 -2
  36. package/dist/lib/protocols/index.js +14 -22
  37. package/dist/lib/protocols/index.mjs +5 -13
  38. package/dist/lib/registry/types.d.mts +3 -2
  39. package/dist/lib/registry/types.d.ts +3 -2
  40. package/dist/lib/registry/types.generated.d.mts +51 -11
  41. package/dist/lib/registry/types.generated.d.ts +51 -11
  42. package/dist/lib/reporting/source/conformance.d.mts +8 -8
  43. package/dist/lib/reporting/source/conformance.d.ts +8 -8
  44. package/dist/lib/reporting/source/manifest.d.mts +27 -27
  45. package/dist/lib/reporting/source/manifest.d.ts +27 -27
  46. package/dist/lib/server/create-adcp-server.js +7 -1
  47. package/dist/lib/server/create-adcp-server.mjs +7 -1
  48. package/dist/lib/signing/crypto.d.mts +1 -1
  49. package/dist/lib/signing/crypto.d.ts +1 -1
  50. package/dist/lib/signing/crypto.js +2 -45
  51. package/dist/lib/signing/crypto.mjs +2 -46
  52. package/dist/lib/signing/web-bot-auth.d.mts +18 -10
  53. package/dist/lib/signing/web-bot-auth.d.ts +18 -10
  54. package/dist/lib/signing/web-bot-auth.js +29 -24
  55. package/dist/lib/signing/web-bot-auth.mjs +29 -24
  56. package/dist/lib/testing/compliance/comply.js +0 -8
  57. package/dist/lib/testing/compliance/comply.mjs +0 -8
  58. package/dist/lib/testing/compliance/storyboard-tracks.js +11 -0
  59. package/dist/lib/testing/compliance/storyboard-tracks.mjs +11 -0
  60. package/dist/lib/testing/index.d.mts +2 -0
  61. package/dist/lib/testing/index.d.ts +2 -0
  62. package/dist/lib/testing/index.js +5 -0
  63. package/dist/lib/testing/index.mjs +3 -0
  64. package/dist/lib/testing/scenarios/capabilities.d.mts +2 -2
  65. package/dist/lib/testing/scenarios/capabilities.d.ts +2 -2
  66. package/dist/lib/testing/scenarios/capabilities.js +8 -41
  67. package/dist/lib/testing/scenarios/capabilities.mjs +9 -42
  68. package/dist/lib/testing/storyboard/creative-build-probe.d.mts +34 -0
  69. package/dist/lib/testing/storyboard/creative-build-probe.d.ts +34 -0
  70. package/dist/lib/testing/storyboard/creative-build-probe.js +395 -0
  71. package/dist/lib/testing/storyboard/creative-build-probe.mjs +373 -0
  72. package/dist/lib/testing/storyboard/index.d.mts +2 -0
  73. package/dist/lib/testing/storyboard/index.d.ts +2 -0
  74. package/dist/lib/testing/storyboard/index.js +5 -0
  75. package/dist/lib/testing/storyboard/index.mjs +3 -0
  76. package/dist/lib/testing/storyboard/loader.js +12 -0
  77. package/dist/lib/testing/storyboard/loader.mjs +12 -0
  78. package/dist/lib/testing/storyboard/property-list-reference.d.mts +15 -0
  79. package/dist/lib/testing/storyboard/property-list-reference.d.ts +15 -0
  80. package/dist/lib/testing/storyboard/property-list-reference.js +514 -0
  81. package/dist/lib/testing/storyboard/property-list-reference.mjs +487 -0
  82. package/dist/lib/testing/storyboard/runner.js +318 -58
  83. package/dist/lib/testing/storyboard/runner.mjs +322 -58
  84. package/dist/lib/testing/storyboard/types.d.mts +38 -16
  85. package/dist/lib/testing/storyboard/types.d.ts +38 -16
  86. package/dist/lib/testing/storyboard/types.js +1 -0
  87. package/dist/lib/testing/storyboard/types.mjs +1 -0
  88. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  89. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  90. package/dist/lib/testing/storyboard/validations.js +64 -0
  91. package/dist/lib/testing/storyboard/validations.mjs +67 -1
  92. package/dist/lib/testing/types.d.mts +15 -1
  93. package/dist/lib/testing/types.d.ts +15 -1
  94. package/dist/lib/types/schemas.generated.d.ts +65 -65
  95. package/dist/lib/types/wellknown-schemas.generated.d.mts +21 -21
  96. package/dist/lib/types/wellknown-schemas.generated.d.ts +21 -21
  97. package/dist/lib/utils/adcp-version-config.js +6 -0
  98. package/dist/lib/utils/adcp-version-config.mjs +6 -0
  99. package/dist/lib/utils/capabilities.d.mts +7 -9
  100. package/dist/lib/utils/capabilities.d.ts +7 -9
  101. package/dist/lib/utils/capabilities.js +14 -28
  102. package/dist/lib/utils/capabilities.mjs +14 -27
  103. package/dist/lib/utils/creative-adapter.d.mts +15 -113
  104. package/dist/lib/utils/creative-adapter.d.ts +15 -113
  105. package/dist/lib/utils/creative-adapter.js +7 -106
  106. package/dist/lib/utils/creative-adapter.mjs +7 -102
  107. package/dist/lib/utils/format-renders.d.mts +20 -80
  108. package/dist/lib/utils/format-renders.d.ts +20 -80
  109. package/dist/lib/utils/format-renders.js +7 -67
  110. package/dist/lib/utils/format-renders.mjs +7 -66
  111. package/dist/lib/utils/index.d.mts +1 -2
  112. package/dist/lib/utils/index.d.ts +1 -2
  113. package/dist/lib/utils/index.js +0 -7
  114. package/dist/lib/utils/index.mjs +0 -6
  115. package/dist/lib/utils/preview-normalizer.d.mts +31 -80
  116. package/dist/lib/utils/preview-normalizer.d.ts +31 -80
  117. package/dist/lib/utils/preview-normalizer.js +5 -50
  118. package/dist/lib/utils/preview-normalizer.mjs +5 -49
  119. package/dist/lib/utils/pricing-adapter.d.mts +2 -36
  120. package/dist/lib/utils/pricing-adapter.d.ts +2 -36
  121. package/dist/lib/utils/pricing-adapter.js +0 -105
  122. package/dist/lib/utils/pricing-adapter.mjs +0 -100
  123. package/dist/lib/utils/request-normalizer.d.mts +1 -2
  124. package/dist/lib/utils/request-normalizer.d.ts +1 -2
  125. package/dist/lib/v2/projection/catalog.d.mts +4 -0
  126. package/dist/lib/v2/projection/catalog.d.ts +4 -0
  127. package/dist/lib/v2/projection/creative-delivery.d.mts +17 -9
  128. package/dist/lib/v2/projection/creative-delivery.d.ts +17 -9
  129. package/dist/lib/v2/projection/creative-delivery.js +78 -10
  130. package/dist/lib/v2/projection/creative-delivery.mjs +77 -10
  131. package/dist/lib/v2/projection/legacy-metadata.d.mts +12 -0
  132. package/dist/lib/v2/projection/legacy-metadata.d.ts +12 -0
  133. package/dist/lib/v2/projection/legacy-metadata.js +41 -1
  134. package/dist/lib/v2/projection/legacy-metadata.mjs +37 -1
  135. package/dist/lib/v2/projection/legacy-normalization.d.mts +1 -1
  136. package/dist/lib/v2/projection/legacy-normalization.d.ts +1 -1
  137. package/dist/lib/v2/projection/v1-to-v2.js +13 -0
  138. package/dist/lib/v2/projection/v1-to-v2.mjs +14 -0
  139. package/dist/lib/validation/client-hooks.d.mts +1 -4
  140. package/dist/lib/validation/client-hooks.d.ts +1 -4
  141. package/dist/lib/validation/get-products-request.d.mts +1 -1
  142. package/dist/lib/validation/get-products-request.d.ts +1 -1
  143. package/dist/lib/validation/schema-loader.js +6 -0
  144. package/dist/lib/validation/schema-loader.mjs +6 -0
  145. package/dist/lib/validation/schema-validator.js +1 -26
  146. package/dist/lib/validation/schema-validator.mjs +1 -26
  147. package/dist/lib/version.d.mts +5 -5
  148. package/dist/lib/version.d.ts +5 -5
  149. package/dist/lib/version.js +3 -5
  150. package/dist/lib/version.mjs +3 -5
  151. package/docs/TYPE-SUMMARY.md +2 -2
  152. package/docs/development/PROTOCOL_DIFFERENCES.md +1 -1
  153. package/docs/guides/CONFORMANCE.md +25 -0
  154. package/docs/guides/CREATIVE-BUILD-PROBE.md +156 -0
  155. package/docs/guides/CREATIVE-DELIVERY.md +63 -7
  156. package/docs/guides/MEDIA-BUY-3.2-COMPATIBILITY.md +15 -18
  157. package/docs/guides/REPORTING-STABILITY.md +7 -7
  158. package/docs/guides/VALIDATE-YOUR-AGENT.md +5 -0
  159. package/docs/llms.txt +3 -3
  160. package/docs/migration-13-to-14.md +20 -16
  161. package/docs/migration-14.x-rc-worksheet.md +5 -5
  162. package/docs/migration-4.x-to-5.x.md +12 -7
  163. package/docs/migration-agent-identity-3.3.md +44 -19
  164. package/docs/migration-drop-adcp-2.md +25 -0
  165. package/docs/migration-reporting-storage-package.md +3 -3
  166. package/docs/releases/16.0.0.md +20 -0
  167. package/package.json +3 -18
  168. package/skills/call-adcp-agent/SKILL.md +23 -25
  169. package/dist/lib/adapters/legacy/v2-5/create_media_buy.d.mts +0 -3
  170. package/dist/lib/adapters/legacy/v2-5/create_media_buy.d.ts +0 -3
  171. package/dist/lib/adapters/legacy/v2-5/create_media_buy.js +0 -33
  172. package/dist/lib/adapters/legacy/v2-5/create_media_buy.mjs +0 -9
  173. package/dist/lib/adapters/legacy/v2-5/get_products.d.mts +0 -8
  174. package/dist/lib/adapters/legacy/v2-5/get_products.d.ts +0 -8
  175. package/dist/lib/adapters/legacy/v2-5/get_products.js +0 -33
  176. package/dist/lib/adapters/legacy/v2-5/get_products.mjs +0 -9
  177. package/dist/lib/adapters/legacy/v2-5/index.d.mts +0 -34
  178. package/dist/lib/adapters/legacy/v2-5/index.d.ts +0 -34
  179. package/dist/lib/adapters/legacy/v2-5/index.js +0 -50
  180. package/dist/lib/adapters/legacy/v2-5/index.mjs +0 -25
  181. package/dist/lib/adapters/legacy/v2-5/list_creative_formats.d.mts +0 -8
  182. package/dist/lib/adapters/legacy/v2-5/list_creative_formats.d.ts +0 -8
  183. package/dist/lib/adapters/legacy/v2-5/list_creative_formats.js +0 -33
  184. package/dist/lib/adapters/legacy/v2-5/list_creative_formats.mjs +0 -9
  185. package/dist/lib/adapters/legacy/v2-5/preview_creative.d.mts +0 -3
  186. package/dist/lib/adapters/legacy/v2-5/preview_creative.d.ts +0 -3
  187. package/dist/lib/adapters/legacy/v2-5/preview_creative.js +0 -33
  188. package/dist/lib/adapters/legacy/v2-5/preview_creative.mjs +0 -9
  189. package/dist/lib/adapters/legacy/v2-5/sync_creatives.d.mts +0 -11
  190. package/dist/lib/adapters/legacy/v2-5/sync_creatives.d.ts +0 -11
  191. package/dist/lib/adapters/legacy/v2-5/sync_creatives.js +0 -32
  192. package/dist/lib/adapters/legacy/v2-5/sync_creatives.mjs +0 -8
  193. package/dist/lib/adapters/legacy/v2-5/types.d.mts +0 -39
  194. package/dist/lib/adapters/legacy/v2-5/types.d.ts +0 -39
  195. package/dist/lib/adapters/legacy/v2-5/types.js +0 -16
  196. package/dist/lib/adapters/legacy/v2-5/types.mjs +0 -0
  197. package/dist/lib/adapters/legacy/v2-5/update_media_buy.d.mts +0 -3
  198. package/dist/lib/adapters/legacy/v2-5/update_media_buy.d.ts +0 -3
  199. package/dist/lib/adapters/legacy/v2-5/update_media_buy.js +0 -35
  200. package/dist/lib/adapters/legacy/v2-5/update_media_buy.mjs +0 -11
  201. package/dist/lib/schemas-data/v2.5/_provenance.json +0 -8
  202. package/dist/lib/schemas-data/v2.5/adagents.json +0 -494
  203. package/dist/lib/schemas-data/v2.5/core/activation-key.json +0 -50
  204. package/dist/lib/schemas-data/v2.5/core/assets/audio-asset.json +0 -32
  205. package/dist/lib/schemas-data/v2.5/core/assets/css-asset.json +0 -21
  206. package/dist/lib/schemas-data/v2.5/core/assets/daast-asset.json +0 -87
  207. package/dist/lib/schemas-data/v2.5/core/assets/html-asset.json +0 -21
  208. package/dist/lib/schemas-data/v2.5/core/assets/image-asset.json +0 -38
  209. package/dist/lib/schemas-data/v2.5/core/assets/javascript-asset.json +0 -21
  210. package/dist/lib/schemas-data/v2.5/core/assets/markdown-asset.json +0 -31
  211. package/dist/lib/schemas-data/v2.5/core/assets/text-asset.json +0 -21
  212. package/dist/lib/schemas-data/v2.5/core/assets/url-asset.json +0 -26
  213. package/dist/lib/schemas-data/v2.5/core/assets/vast-asset.json +0 -87
  214. package/dist/lib/schemas-data/v2.5/core/assets/video-asset.json +0 -44
  215. package/dist/lib/schemas-data/v2.5/core/assets/webhook-asset.json +0 -71
  216. package/dist/lib/schemas-data/v2.5/core/async-response-data.json +0 -88
  217. package/dist/lib/schemas-data/v2.5/core/brand-manifest-ref.json +0 -33
  218. package/dist/lib/schemas-data/v2.5/core/brand-manifest.json +0 -409
  219. package/dist/lib/schemas-data/v2.5/core/context.json +0 -8
  220. package/dist/lib/schemas-data/v2.5/core/creative-asset.json +0 -125
  221. package/dist/lib/schemas-data/v2.5/core/creative-assignment.json +0 -31
  222. package/dist/lib/schemas-data/v2.5/core/creative-filters.json +0 -111
  223. package/dist/lib/schemas-data/v2.5/core/creative-manifest.json +0 -72
  224. package/dist/lib/schemas-data/v2.5/core/creative-policy.json +0 -27
  225. package/dist/lib/schemas-data/v2.5/core/delivery-metrics.json +0 -171
  226. package/dist/lib/schemas-data/v2.5/core/deployment.json +0 -93
  227. package/dist/lib/schemas-data/v2.5/core/destination.json +0 -53
  228. package/dist/lib/schemas-data/v2.5/core/error.json +0 -40
  229. package/dist/lib/schemas-data/v2.5/core/ext.json +0 -8
  230. package/dist/lib/schemas-data/v2.5/core/format-id.json +0 -47
  231. package/dist/lib/schemas-data/v2.5/core/format.json +0 -324
  232. package/dist/lib/schemas-data/v2.5/core/frequency-cap.json +0 -18
  233. package/dist/lib/schemas-data/v2.5/core/mcp-webhook-payload.json +0 -152
  234. package/dist/lib/schemas-data/v2.5/core/measurement.json +0 -48
  235. package/dist/lib/schemas-data/v2.5/core/media-buy.json +0 -62
  236. package/dist/lib/schemas-data/v2.5/core/package.json +0 -72
  237. package/dist/lib/schemas-data/v2.5/core/performance-feedback.json +0 -90
  238. package/dist/lib/schemas-data/v2.5/core/placement.json +0 -34
  239. package/dist/lib/schemas-data/v2.5/core/pricing-option.json +0 -35
  240. package/dist/lib/schemas-data/v2.5/core/product-filters.json +0 -102
  241. package/dist/lib/schemas-data/v2.5/core/product.json +0 -153
  242. package/dist/lib/schemas-data/v2.5/core/promoted-offerings.json +0 -115
  243. package/dist/lib/schemas-data/v2.5/core/promoted-products.json +0 -67
  244. package/dist/lib/schemas-data/v2.5/core/property-id.json +0 -14
  245. package/dist/lib/schemas-data/v2.5/core/property-tag.json +0 -16
  246. package/dist/lib/schemas-data/v2.5/core/property.json +0 -62
  247. package/dist/lib/schemas-data/v2.5/core/protocol-envelope.json +0 -146
  248. package/dist/lib/schemas-data/v2.5/core/publisher-property-selector.json +0 -92
  249. package/dist/lib/schemas-data/v2.5/core/push-notification-config.json +0 -48
  250. package/dist/lib/schemas-data/v2.5/core/reporting-capabilities.json +0 -71
  251. package/dist/lib/schemas-data/v2.5/core/response.json +0 -24
  252. package/dist/lib/schemas-data/v2.5/core/signal-filters.json +0 -35
  253. package/dist/lib/schemas-data/v2.5/core/start-timing.json +0 -18
  254. package/dist/lib/schemas-data/v2.5/core/sub-asset.json +0 -79
  255. package/dist/lib/schemas-data/v2.5/core/targeting.json +0 -50
  256. package/dist/lib/schemas-data/v2.5/core/tasks-get-request.json +0 -43
  257. package/dist/lib/schemas-data/v2.5/core/tasks-get-response.json +0 -166
  258. package/dist/lib/schemas-data/v2.5/core/tasks-list-request.json +0 -192
  259. package/dist/lib/schemas-data/v2.5/core/tasks-list-response.json +0 -183
  260. package/dist/lib/schemas-data/v2.5/creative/asset-types/index.json +0 -101
  261. package/dist/lib/schemas-data/v2.5/creative/list-creative-formats-request.json +0 -73
  262. package/dist/lib/schemas-data/v2.5/creative/list-creative-formats-response.json +0 -61
  263. package/dist/lib/schemas-data/v2.5/creative/preview-creative-request.json +0 -164
  264. package/dist/lib/schemas-data/v2.5/creative/preview-creative-response.json +0 -245
  265. package/dist/lib/schemas-data/v2.5/creative/preview-render.json +0 -225
  266. package/dist/lib/schemas-data/v2.5/enums/adcp-domain.json +0 -11
  267. package/dist/lib/schemas-data/v2.5/enums/asset-content-type.json +0 -22
  268. package/dist/lib/schemas-data/v2.5/enums/auth-scheme.json +0 -11
  269. package/dist/lib/schemas-data/v2.5/enums/available-metric.json +0 -18
  270. package/dist/lib/schemas-data/v2.5/enums/channels.json +0 -18
  271. package/dist/lib/schemas-data/v2.5/enums/co-branding-requirement.json +0 -12
  272. package/dist/lib/schemas-data/v2.5/enums/creative-action.json +0 -14
  273. package/dist/lib/schemas-data/v2.5/enums/creative-agent-capability.json +0 -13
  274. package/dist/lib/schemas-data/v2.5/enums/creative-sort-field.json +0 -15
  275. package/dist/lib/schemas-data/v2.5/enums/creative-status.json +0 -19
  276. package/dist/lib/schemas-data/v2.5/enums/daast-tracking-event.json +0 -20
  277. package/dist/lib/schemas-data/v2.5/enums/daast-version.json +0 -11
  278. package/dist/lib/schemas-data/v2.5/enums/delivery-type.json +0 -15
  279. package/dist/lib/schemas-data/v2.5/enums/dimension-unit.json +0 -13
  280. package/dist/lib/schemas-data/v2.5/enums/feed-format.json +0 -12
  281. package/dist/lib/schemas-data/v2.5/enums/feedback-source.json +0 -13
  282. package/dist/lib/schemas-data/v2.5/enums/format-category.json +0 -16
  283. package/dist/lib/schemas-data/v2.5/enums/format-id-parameter.json +0 -11
  284. package/dist/lib/schemas-data/v2.5/enums/frequency-cap-scope.json +0 -13
  285. package/dist/lib/schemas-data/v2.5/enums/history-entry-type.json +0 -11
  286. package/dist/lib/schemas-data/v2.5/enums/http-method.json +0 -11
  287. package/dist/lib/schemas-data/v2.5/enums/identifier-types.json +0 -34
  288. package/dist/lib/schemas-data/v2.5/enums/javascript-module-type.json +0 -12
  289. package/dist/lib/schemas-data/v2.5/enums/landing-page-requirement.json +0 -12
  290. package/dist/lib/schemas-data/v2.5/enums/markdown-flavor.json +0 -11
  291. package/dist/lib/schemas-data/v2.5/enums/media-buy-status.json +0 -19
  292. package/dist/lib/schemas-data/v2.5/enums/metric-type.json +0 -17
  293. package/dist/lib/schemas-data/v2.5/enums/notification-type.json +0 -13
  294. package/dist/lib/schemas-data/v2.5/enums/pacing.json +0 -17
  295. package/dist/lib/schemas-data/v2.5/enums/preview-output-format.json +0 -11
  296. package/dist/lib/schemas-data/v2.5/enums/pricing-model.json +0 -25
  297. package/dist/lib/schemas-data/v2.5/enums/property-type.json +0 -16
  298. package/dist/lib/schemas-data/v2.5/enums/publisher-identifier-types.json +0 -19
  299. package/dist/lib/schemas-data/v2.5/enums/reporting-frequency.json +0 -12
  300. package/dist/lib/schemas-data/v2.5/enums/signal-catalog-type.json +0 -12
  301. package/dist/lib/schemas-data/v2.5/enums/sort-direction.json +0 -11
  302. package/dist/lib/schemas-data/v2.5/enums/standard-format-ids.json +0 -103
  303. package/dist/lib/schemas-data/v2.5/enums/task-status.json +0 -29
  304. package/dist/lib/schemas-data/v2.5/enums/task-type.json +0 -27
  305. package/dist/lib/schemas-data/v2.5/enums/update-frequency.json +0 -13
  306. package/dist/lib/schemas-data/v2.5/enums/url-asset-type.json +0 -12
  307. package/dist/lib/schemas-data/v2.5/enums/validation-mode.json +0 -11
  308. package/dist/lib/schemas-data/v2.5/enums/vast-tracking-event.json +0 -25
  309. package/dist/lib/schemas-data/v2.5/enums/vast-version.json +0 -14
  310. package/dist/lib/schemas-data/v2.5/enums/webhook-response-type.json +0 -13
  311. package/dist/lib/schemas-data/v2.5/enums/webhook-security-method.json +0 -12
  312. package/dist/lib/schemas-data/v2.5/index.json +0 -604
  313. package/dist/lib/schemas-data/v2.5/media-buy/build-creative-request.json +0 -31
  314. package/dist/lib/schemas-data/v2.5/media-buy/build-creative-response.json +0 -65
  315. package/dist/lib/schemas-data/v2.5/media-buy/create-media-buy-async-response-input-required.json +0 -31
  316. package/dist/lib/schemas-data/v2.5/media-buy/create-media-buy-async-response-submitted.json +0 -16
  317. package/dist/lib/schemas-data/v2.5/media-buy/create-media-buy-async-response-working.json +0 -36
  318. package/dist/lib/schemas-data/v2.5/media-buy/create-media-buy-request.json +0 -126
  319. package/dist/lib/schemas-data/v2.5/media-buy/create-media-buy-response.json +0 -97
  320. package/dist/lib/schemas-data/v2.5/media-buy/get-media-buy-delivery-request.json +0 -54
  321. package/dist/lib/schemas-data/v2.5/media-buy/get-media-buy-delivery-response.json +0 -285
  322. package/dist/lib/schemas-data/v2.5/media-buy/get-products-async-response-input-required.json +0 -38
  323. package/dist/lib/schemas-data/v2.5/media-buy/get-products-async-response-submitted.json +0 -21
  324. package/dist/lib/schemas-data/v2.5/media-buy/get-products-async-response-working.json +0 -34
  325. package/dist/lib/schemas-data/v2.5/media-buy/get-products-request.json +0 -28
  326. package/dist/lib/schemas-data/v2.5/media-buy/get-products-response.json +0 -33
  327. package/dist/lib/schemas-data/v2.5/media-buy/list-authorized-properties-request.json +0 -26
  328. package/dist/lib/schemas-data/v2.5/media-buy/list-authorized-properties-response.json +0 -70
  329. package/dist/lib/schemas-data/v2.5/media-buy/list-creative-formats-request.json +0 -58
  330. package/dist/lib/schemas-data/v2.5/media-buy/list-creative-formats-response.json +0 -61
  331. package/dist/lib/schemas-data/v2.5/media-buy/list-creatives-request.json +0 -137
  332. package/dist/lib/schemas-data/v2.5/media-buy/list-creatives-response.json +0 -437
  333. package/dist/lib/schemas-data/v2.5/media-buy/package-request.json +0 -80
  334. package/dist/lib/schemas-data/v2.5/media-buy/provide-performance-feedback-request.json +0 -88
  335. package/dist/lib/schemas-data/v2.5/media-buy/provide-performance-feedback-response.json +0 -66
  336. package/dist/lib/schemas-data/v2.5/media-buy/sync-creatives-async-response-input-required.json +0 -25
  337. package/dist/lib/schemas-data/v2.5/media-buy/sync-creatives-async-response-submitted.json +0 -16
  338. package/dist/lib/schemas-data/v2.5/media-buy/sync-creatives-async-response-working.json +0 -46
  339. package/dist/lib/schemas-data/v2.5/media-buy/sync-creatives-request.json +0 -178
  340. package/dist/lib/schemas-data/v2.5/media-buy/sync-creatives-response.json +0 -149
  341. package/dist/lib/schemas-data/v2.5/media-buy/update-media-buy-async-response-input-required.json +0 -24
  342. package/dist/lib/schemas-data/v2.5/media-buy/update-media-buy-async-response-submitted.json +0 -16
  343. package/dist/lib/schemas-data/v2.5/media-buy/update-media-buy-async-response-working.json +0 -36
  344. package/dist/lib/schemas-data/v2.5/media-buy/update-media-buy-request.json +0 -129
  345. package/dist/lib/schemas-data/v2.5/media-buy/update-media-buy-response.json +0 -99
  346. package/dist/lib/schemas-data/v2.5/pricing-options/cpc-option.json +0 -52
  347. package/dist/lib/schemas-data/v2.5/pricing-options/cpcv-option.json +0 -52
  348. package/dist/lib/schemas-data/v2.5/pricing-options/cpm-auction-option.json +0 -81
  349. package/dist/lib/schemas-data/v2.5/pricing-options/cpm-fixed-option.json +0 -52
  350. package/dist/lib/schemas-data/v2.5/pricing-options/cpp-option.json +0 -73
  351. package/dist/lib/schemas-data/v2.5/pricing-options/cpv-option.json +0 -88
  352. package/dist/lib/schemas-data/v2.5/pricing-options/flat-rate-option.json +0 -93
  353. package/dist/lib/schemas-data/v2.5/pricing-options/vcpm-auction-option.json +0 -81
  354. package/dist/lib/schemas-data/v2.5/pricing-options/vcpm-fixed-option.json +0 -52
  355. package/dist/lib/schemas-data/v2.5/protocols/adcp-extension.json +0 -33
  356. package/dist/lib/schemas-data/v2.5/signals/activate-signal-request.json +0 -32
  357. package/dist/lib/schemas-data/v2.5/signals/activate-signal-response.json +0 -68
  358. package/dist/lib/schemas-data/v2.5/signals/get-signals-request.json +0 -59
  359. package/dist/lib/schemas-data/v2.5/signals/get-signals-response.json +0 -100
  360. package/dist/lib/types/v2-5/index.d.mts +0 -1
  361. package/dist/lib/types/v2-5/index.d.ts +0 -1
  362. package/dist/lib/types/v2-5/index.js +0 -22
  363. package/dist/lib/types/v2-5/index.mjs +0 -1
  364. package/dist/lib/types/v2-5/tools.generated.d.mts +0 -3568
  365. package/dist/lib/types/v2-5/tools.generated.d.ts +0 -3568
  366. package/dist/lib/types/v2-5/tools.generated.js +0 -16
  367. package/dist/lib/types/v2-5/tools.generated.mjs +0 -0
  368. package/dist/lib/utils/sync-creatives-adapter.d.mts +0 -33
  369. package/dist/lib/utils/sync-creatives-adapter.d.ts +0 -33
  370. package/dist/lib/utils/sync-creatives-adapter.js +0 -83
  371. package/dist/lib/utils/sync-creatives-adapter.mjs +0 -59
@@ -3,7 +3,7 @@ import type { CompatibilityPurchaseCoordinatorInput } from '../types/core.genera
3
3
  import type { CreateMediaBuyResponse } from '../types/tools.generated';
4
4
  /** Minimum crash-recovery horizon after an SDK-owned publication is acknowledged. */
5
5
  export declare const LEGACY_PURCHASE_PUBLICATION_PROOF_RETENTION_MS: number;
6
- export type LegacyPurchaseSourceVersion = '2.5' | '3.0' | '3.1';
6
+ export type LegacyPurchaseSourceVersion = '3.0' | '3.1';
7
7
  export type LegacyPurchaseLoss = 'feed_version_not_atomic' | 'pricing_version_not_atomic' | 'mutation_idempotency_not_guaranteed';
8
8
  export type LegacyPurchaseTerminalResult = TaskResultCompleted<CreateMediaBuyResponse> | TaskResultFailure<CreateMediaBuyResponse>;
9
9
  export interface LegacyPurchasePendingSettlement {
@@ -39,7 +39,7 @@ export interface LegacyPurchaseClaim {
39
39
  claimedAt: string;
40
40
  replayExpiresAt: string;
41
41
  selectedProductIds: string[];
42
- /** Source-version mutation key (`idempotency_key`, or v2.5 `buyer_ref`). */
42
+ /** Source-version mutation idempotency key. */
43
43
  sourceMutationKey?: string;
44
44
  /** Seller task handle retained after a submitted response. */
45
45
  sellerTaskId?: string;
@@ -54,6 +54,7 @@ __export(protocols_exports, {
54
54
  wrapFetchWithTransportDiagnostics: () => import_transportDiagnostics2.wrapFetchWithTransportDiagnostics
55
55
  });
56
56
  module.exports = __toCommonJS(protocols_exports);
57
+ var import_errors = require('../errors/index.js');
57
58
  var import_mcp = require('./mcp.js');
58
59
  var import_mcp2 = require('./mcp.js');
59
60
  var import_mcp_scope = require('./mcp-scope.js');
@@ -70,13 +71,13 @@ var import_auth = require('../auth/index.js');
70
71
  var import_oauth = require('../auth/oauth/index.js');
71
72
  var import_authorization_required = require('../auth/oauth/authorization-required.js');
72
73
  var import_provider_cache = require('../auth/oauth/provider-cache.js');
73
- var import_errors = require('../errors/index.js');
74
+ var import_errors2 = require('../errors/index.js');
74
75
  var import_signedRequestRejection = require('./signedRequestRejection.js');
75
76
  var import_net = require('../net/index.js');
76
77
  var import_validation = require('../validation/index.js');
77
78
  var import_tracing = require('../observability/tracing.js');
78
79
  var import_version = require('../version.js');
79
- var import_errors2 = require('../errors/index.js');
80
+ var import_errors3 = require('../errors/index.js');
80
81
  var import_schema_loader = require('../validation/schema-loader.js');
81
82
  var import_client = require('../signing/client.js');
82
83
  var import_responseSizeLimit2 = require('./responseSizeLimit.js');
@@ -109,7 +110,7 @@ function resolveWireMajor(adcpVersion) {
109
110
  if (adcpVersion === void 0) return import_version.ADCP_MAJOR_VERSION;
110
111
  const parsed = (0, import_version.parseAdcpMajorVersion)(adcpVersion);
111
112
  if (!Number.isFinite(parsed)) {
112
- throw new import_errors2.ConfigurationError(
113
+ throw new import_errors3.ConfigurationError(
113
114
  `adcpVersion ${JSON.stringify(adcpVersion)} is not a valid AdCP version. Expected a semver string (e.g. '3.0.1', '3.1.0-beta.1') or a legacy alias (e.g. 'v3').`,
114
115
  "adcpVersion"
115
116
  );
@@ -126,7 +127,7 @@ function bundleSupportsAdcpVersionField(bundleKey) {
126
127
  return parseInt(minorMatch[1], 10) >= 1;
127
128
  }
128
129
  function buildVersionEnvelope(adcpVersion, serverVersion) {
129
- if (serverVersion === "v2") return {};
130
+ if (serverVersion === "v2") throw new import_errors.VersionUnsupportedError("request", "version", "v2");
130
131
  const wireMajor = resolveWireMajor(adcpVersion);
131
132
  const bundleKey = (0, import_schema_loader.resolveBundleKey)(adcpVersion ?? import_version.ADCP_VERSION);
132
133
  if (!bundleSupportsAdcpVersionField(bundleKey)) {
@@ -136,16 +137,9 @@ function buildVersionEnvelope(adcpVersion, serverVersion) {
136
137
  (0, import_schema_loader.validateAdcpVersionWire)(wireValue);
137
138
  return { adcp_major_version: wireMajor, adcp_version: wireValue };
138
139
  }
139
- let hasWarnedAboutV2PushNotificationSecret = false;
140
- function warnV2PushNotificationNeedsSecret() {
141
- if (hasWarnedAboutV2PushNotificationSecret) return;
142
- hasWarnedAboutV2PushNotificationSecret = true;
143
- console.warn(
144
- "[adcp] Suppressing push_notification_config for a v2 seller: AdCP 2.5 requires an `authentication` block and no `webhookSecret` is configured. Set `webhookSecret` to register async task-status webhooks with this agent, or move the agent to an AdCP 3.x pin, where the RFC 9421 webhook profile needs no shared secret."
145
- );
146
- }
147
140
  function buildVersionEnvelopeForMode(mode, adcpVersion, serverVersion) {
148
- if (mode === "none" || serverVersion === "v2") return {};
141
+ if (serverVersion === "v2") throw new import_errors.VersionUnsupportedError("request", "version", "v2");
142
+ if (mode === "none") return {};
149
143
  if (mode === "major-only") return { adcp_major_version: resolveWireMajor(adcpVersion) };
150
144
  return buildVersionEnvelope(adcpVersion, serverVersion);
151
145
  }
@@ -182,7 +176,7 @@ function prepareProtocolToolCall(agent, args, options = {}) {
182
176
  const argsWithVersion = applyVersionEnvelope(args, envelope);
183
177
  applyPublishedSchemaCompatibility(options.toolName, argsWithVersion, args);
184
178
  const effectiveBundle = typeof argsWithVersion.adcp_version === "string" ? (0, import_schema_loader.resolveBundleKey)(argsWithVersion.adcp_version) : void 0;
185
- const usesApplicationRegistration = options.serverVersion !== "v2" && (0, import_adcp_version_config.isAdcpVersionAtLeast)(effectiveBundle, "3.1.0");
179
+ const usesApplicationRegistration = (0, import_adcp_version_config.isAdcpVersionAtLeast)(effectiveBundle, "3.1.0");
186
180
  let pushNotificationConfig;
187
181
  let applicationPushNotificationConfig;
188
182
  let operationId;
@@ -196,8 +190,6 @@ function prepareProtocolToolCall(agent, args, options = {}) {
196
190
  credentials: options.webhookSecret
197
191
  }
198
192
  };
199
- } else if (options.serverVersion === "v2") {
200
- warnV2PushNotificationNeedsSecret();
201
193
  } else {
202
194
  pushNotificationConfig = {
203
195
  url: options.webhookUrl,
@@ -373,7 +365,7 @@ class ProtocolClient {
373
365
  }
374
366
  );
375
367
  } catch (err) {
376
- if (agent.oauth_client_credentials && (0, import_errors.is401Error)(err) && (0, import_signedRequestRejection.getSignedRequestRejection)(err)?.challenge?.scheme !== "signature") {
368
+ if (agent.oauth_client_credentials && (0, import_errors2.is401Error)(err) && (0, import_signedRequestRejection.getSignedRequestRejection)(err)?.challenge?.scheme !== "signature") {
377
369
  const ccStorage = (0, import_oauth.getAgentStorage)(agent);
378
370
  const allowPrivateIp = transport?.allowPrivateIp ?? (0, import_net.isLikelyPrivateUrl)(agent.agent_uri);
379
371
  await (0, import_oauth.ensureClientCredentialsTokens)(agent, {
@@ -405,7 +397,7 @@ class ProtocolClient {
405
397
  }
406
398
  );
407
399
  } catch (retryErr) {
408
- const rejection = (0, import_signedRequestRejection.getSignedRequestRejection)(retryErr) ?? ((0, import_errors.is401Error)(retryErr) ? (0, import_signedRequestRejection.getSignedRequestRejection)(err) : void 0);
400
+ const rejection = (0, import_signedRequestRejection.getSignedRequestRejection)(retryErr) ?? ((0, import_errors2.is401Error)(retryErr) ? (0, import_signedRequestRejection.getSignedRequestRejection)(err) : void 0);
409
401
  if (rejection) throw rejection;
410
402
  await rethrowAsNeedsAuthorization(
411
403
  retryErr,
@@ -447,7 +439,7 @@ class ProtocolClient {
447
439
  transport?.legacyCompat
448
440
  );
449
441
  } catch (err) {
450
- if (agent.oauth_client_credentials && (0, import_errors.is401Error)(err) && (0, import_signedRequestRejection.getSignedRequestRejection)(err)?.challenge?.scheme !== "signature") {
442
+ if (agent.oauth_client_credentials && (0, import_errors2.is401Error)(err) && (0, import_signedRequestRejection.getSignedRequestRejection)(err)?.challenge?.scheme !== "signature") {
451
443
  const ccStorage = (0, import_oauth.getAgentStorage)(agent);
452
444
  const allowPrivateIp = transport?.allowPrivateIp ?? (0, import_net.isLikelyPrivateUrl)(agent.agent_uri);
453
445
  await (0, import_oauth.ensureClientCredentialsTokens)(agent, {
@@ -476,7 +468,7 @@ class ProtocolClient {
476
468
  transport?.legacyCompat
477
469
  );
478
470
  } catch (retryErr) {
479
- const rejection = (0, import_signedRequestRejection.getSignedRequestRejection)(retryErr) ?? ((0, import_errors.is401Error)(retryErr) ? (0, import_signedRequestRejection.getSignedRequestRejection)(err) : void 0);
471
+ const rejection = (0, import_signedRequestRejection.getSignedRequestRejection)(retryErr) ?? ((0, import_errors2.is401Error)(retryErr) ? (0, import_signedRequestRejection.getSignedRequestRejection)(err) : void 0);
480
472
  if (rejection) throw rejection;
481
473
  await rethrowAsNeedsAuthorization(
482
474
  retryErr,
@@ -512,9 +504,9 @@ async function rethrowAsNeedsAuthorization(err, agentUrl, fetchFn, signal, confi
512
504
  const signedRejection = (0, import_signedRequestRejection.getSignedRequestRejection)(err);
513
505
  if (signedRejection) throw signedRejection;
514
506
  if (err instanceof import_oauth.NeedsAuthorizationError) throw err;
515
- if (!(0, import_errors.is401Error)(err)) return;
507
+ if (!(0, import_errors2.is401Error)(err)) return;
516
508
  if (recoveryMode === "static") {
517
- throw new import_errors.AuthenticationCredentialsRejectedError(agentUrl, err);
509
+ throw new import_errors2.AuthenticationCredentialsRejectedError(agentUrl, err);
518
510
  }
519
511
  const allowPrivateIp = configuredAllowPrivateIp ?? (0, import_net.isLikelyPrivateUrl)(agentUrl);
520
512
  const requirements = await (0, import_oauth.discoverAuthorizationRequirements)(agentUrl, { allowPrivateIp, fetchFn, signal });
@@ -3,6 +3,7 @@ import { dirname as __adcpDirname } from "node:path";
3
3
  import { createRequire as __adcpCreateRequire } from "node:module";
4
4
  const __dirname = __adcpDirname(__adcpFileURLToPath(import.meta.url));
5
5
  const require2 = __adcpCreateRequire(import.meta.url);
6
+ import { VersionUnsupportedError } from "../errors/index.mjs";
6
7
  import {
7
8
  callMCPTool,
8
9
  callMCPToolWithOAuth,
@@ -104,7 +105,7 @@ function bundleSupportsAdcpVersionField(bundleKey) {
104
105
  return parseInt(minorMatch[1], 10) >= 1;
105
106
  }
106
107
  function buildVersionEnvelope(adcpVersion, serverVersion) {
107
- if (serverVersion === "v2") return {};
108
+ if (serverVersion === "v2") throw new VersionUnsupportedError("request", "version", "v2");
108
109
  const wireMajor = resolveWireMajor(adcpVersion);
109
110
  const bundleKey = resolveBundleKey(adcpVersion ?? ADCP_VERSION);
110
111
  if (!bundleSupportsAdcpVersionField(bundleKey)) {
@@ -114,16 +115,9 @@ function buildVersionEnvelope(adcpVersion, serverVersion) {
114
115
  validateAdcpVersionWire(wireValue);
115
116
  return { adcp_major_version: wireMajor, adcp_version: wireValue };
116
117
  }
117
- let hasWarnedAboutV2PushNotificationSecret = false;
118
- function warnV2PushNotificationNeedsSecret() {
119
- if (hasWarnedAboutV2PushNotificationSecret) return;
120
- hasWarnedAboutV2PushNotificationSecret = true;
121
- console.warn(
122
- "[adcp] Suppressing push_notification_config for a v2 seller: AdCP 2.5 requires an `authentication` block and no `webhookSecret` is configured. Set `webhookSecret` to register async task-status webhooks with this agent, or move the agent to an AdCP 3.x pin, where the RFC 9421 webhook profile needs no shared secret."
123
- );
124
- }
125
118
  function buildVersionEnvelopeForMode(mode, adcpVersion, serverVersion) {
126
- if (mode === "none" || serverVersion === "v2") return {};
119
+ if (serverVersion === "v2") throw new VersionUnsupportedError("request", "version", "v2");
120
+ if (mode === "none") return {};
127
121
  if (mode === "major-only") return { adcp_major_version: resolveWireMajor(adcpVersion) };
128
122
  return buildVersionEnvelope(adcpVersion, serverVersion);
129
123
  }
@@ -160,7 +154,7 @@ function prepareProtocolToolCall(agent, args, options = {}) {
160
154
  const argsWithVersion = applyVersionEnvelope(args, envelope);
161
155
  applyPublishedSchemaCompatibility(options.toolName, argsWithVersion, args);
162
156
  const effectiveBundle = typeof argsWithVersion.adcp_version === "string" ? resolveBundleKey(argsWithVersion.adcp_version) : void 0;
163
- const usesApplicationRegistration = options.serverVersion !== "v2" && isAdcpVersionAtLeast(effectiveBundle, "3.1.0");
157
+ const usesApplicationRegistration = isAdcpVersionAtLeast(effectiveBundle, "3.1.0");
164
158
  let pushNotificationConfig;
165
159
  let applicationPushNotificationConfig;
166
160
  let operationId;
@@ -174,8 +168,6 @@ function prepareProtocolToolCall(agent, args, options = {}) {
174
168
  credentials: options.webhookSecret
175
169
  }
176
170
  };
177
- } else if (options.serverVersion === "v2") {
178
- warnV2PushNotificationNeedsSecret();
179
171
  } else {
180
172
  pushNotificationConfig = {
181
173
  url: options.webhookUrl,
@@ -144,9 +144,10 @@ export type SavePropertyRequest = Omit<RegistrySavePropertyRequest, 'authorized_
144
144
  /** Response from POST /api/properties/save (200) */
145
145
  export type SavePropertyResponse = operations['saveProperty']['responses']['200']['content']['application/json'];
146
146
  type RegistryResolveIdentifiersRequest = NonNullable<operations['resolveIdentifiers']['requestBody']>['content']['application/json'];
147
- /** Request body for POST /api/registry/resolve. `mode` defaults to `resolve` server-side. */
148
- export type ResolveIdentifiersRequest = Omit<RegistryResolveIdentifiersRequest, 'mode'> & {
147
+ /** Request body for POST /api/registry/resolve. Mode and sandbox use the registry's defaults when omitted. */
148
+ export type ResolveIdentifiersRequest = Omit<RegistryResolveIdentifiersRequest, 'mode' | 'sandbox'> & {
149
149
  mode?: RegistryResolveIdentifiersRequest['mode'];
150
+ sandbox?: RegistryResolveIdentifiersRequest['sandbox'];
150
151
  };
151
152
  /** Response from POST /api/registry/resolve (200) */
152
153
  export type ResolveIdentifiersResponse = operations['resolveIdentifiers']['responses']['200']['content']['application/json'];
@@ -144,9 +144,10 @@ export type SavePropertyRequest = Omit<RegistrySavePropertyRequest, 'authorized_
144
144
  /** Response from POST /api/properties/save (200) */
145
145
  export type SavePropertyResponse = operations['saveProperty']['responses']['200']['content']['application/json'];
146
146
  type RegistryResolveIdentifiersRequest = NonNullable<operations['resolveIdentifiers']['requestBody']>['content']['application/json'];
147
- /** Request body for POST /api/registry/resolve. `mode` defaults to `resolve` server-side. */
148
- export type ResolveIdentifiersRequest = Omit<RegistryResolveIdentifiersRequest, 'mode'> & {
147
+ /** Request body for POST /api/registry/resolve. Mode and sandbox use the registry's defaults when omitted. */
148
+ export type ResolveIdentifiersRequest = Omit<RegistryResolveIdentifiersRequest, 'mode' | 'sandbox'> & {
149
149
  mode?: RegistryResolveIdentifiersRequest['mode'];
150
+ sandbox?: RegistryResolveIdentifiersRequest['sandbox'];
150
151
  };
151
152
  /** Response from POST /api/registry/resolve (200) */
152
153
  export type ResolveIdentifiersResponse = operations['resolveIdentifiers']['responses']['200']['content']['application/json'];
@@ -283,7 +283,7 @@ export interface paths {
283
283
  put?: never;
284
284
  /**
285
285
  * Save property
286
- * @description Save or update a hosted property in the registry. Requires authentication. For existing properties, creates a revision-tracked edit. For new properties, creates the property directly. Cannot edit authoritative properties managed via adagents.json.
286
+ * @description Save or update a hosted property in the registry. Requires authentication. For bulk identifier contributions use resolveIdentifiers instead (up to 10,000 identifiers per request). This endpoint is limited to 60 requests/hour per user/IP. publisher_domain must be a lowercase hostname without a URL, port, whitespace, wildcard, or trailing dot. Reserved test domains are rejected unless sandbox is true. With sandbox: true the request is validated and a simulated result is returned without reading or writing a hosted property; the ID is ephemeral. For existing properties, creates a revision-tracked edit. For new properties, creates the property directly. Cannot edit authoritative properties managed via adagents.json.
287
287
  *
288
288
  * This is an identity-only write surface: the stored document always carries `authorized_agents: []`. Sales authorization lives solely in the publisher's own origin `adagents.json`; the community registry cannot mint or carry it. Any `authorized_agents` sent in the request body is ignored.
289
289
  */
@@ -525,6 +525,8 @@ export interface paths {
525
525
  * @description Given a percent-encoded `agent_url`, returns the publishers whose adagents.json authorizes that agent, with provenance (`discovery_method`, `manager_domain`), per-publisher property counts (`properties_authorized`, `properties_total`, scoped to this publisher only — never network-wide), signing-key pin status, and lifecycle state (`authorized` / `revoked`).
526
526
  *
527
527
  * Spec: [docs/aao/directory-api.mdx](/docs/aao/directory-api) (adcp#4823). This endpoint is the spec-compliant richer-shape replacement for the legacy `/api/registry/lookup/agent/{agentUrl}/domains`, which returns domain strings only.
528
+ *
529
+ * `agent_url` is matched with [AdCP URL canonicalization](/docs/reference/url-canonicalization) and a **non-root trailing slash is significant**: `https://a.example/mcp` and `https://a.example/mcp/` are different agents and can return different publisher sets, the same rule the SDK applies in `verify_agent_authorization`. Ask for the spelling the publisher's adagents.json lists. (Through 2026-10-18 this endpoint folded the two spellings together and answered both with the slashless agent's publishers; that disagreed with the spec and with the validator.) The `agent_url` in the response echoes the canonicalized lookup key, slash included.
528
530
  */
529
531
  get: operations["getPublishersForAgentLegacyApiPrefix"];
530
532
  put?: never;
@@ -547,6 +549,8 @@ export interface paths {
547
549
  * @description Given a percent-encoded `agent_url`, returns the publishers whose adagents.json authorizes that agent, with provenance (`discovery_method`, `manager_domain`), per-publisher property counts (`properties_authorized`, `properties_total`, scoped to this publisher only — never network-wide), signing-key pin status, and lifecycle state (`authorized` / `revoked`).
548
550
  *
549
551
  * Spec: [docs/aao/directory-api.mdx](/docs/aao/directory-api) (adcp#4823). This endpoint is the spec-compliant richer-shape replacement for the legacy `/api/registry/lookup/agent/{agentUrl}/domains`, which returns domain strings only.
552
+ *
553
+ * `agent_url` is matched with [AdCP URL canonicalization](/docs/reference/url-canonicalization) and a **non-root trailing slash is significant**: `https://a.example/mcp` and `https://a.example/mcp/` are different agents and can return different publisher sets, the same rule the SDK applies in `verify_agent_authorization`. Ask for the spelling the publisher's adagents.json lists. (Through 2026-10-18 this endpoint folded the two spellings together and answered both with the slashless agent's publishers; that disagreed with the spec and with the validator.) The `agent_url` in the response echoes the canonicalized lookup key, slash included.
550
554
  */
551
555
  get: operations["getPublishersForAgent"];
552
556
  put?: never;
@@ -2526,6 +2530,8 @@ export interface components {
2526
2530
  stats?: components["schemas"]["AgentStats"];
2527
2531
  capabilities?: components["schemas"]["AgentCapabilities"];
2528
2532
  compliance?: components["schemas"]["AgentCompliance"];
2533
+ /** @description Every raw agent_url spelling the directory has indexed under this agent's identity, with the listed (canonical) url first. The registry keys an agent by identity, folding a non-root trailing slash, but GET /v1/agents/{agent_url}/publishers matches spec-exactly with the slash significant — so a client answering "which publishers authorize this agent" must query once per spelling here and merge the results. */
2534
+ declared_urls?: string[];
2529
2535
  publisher_domains?: string[];
2530
2536
  property_summary?: components["schemas"]["PropertySummary"];
2531
2537
  };
@@ -2661,6 +2667,8 @@ export interface components {
2661
2667
  timeout_ms: number | null;
2662
2668
  storyboard_start_offset: number | null;
2663
2669
  auth_type: string | null;
2670
+ /** @description Declared specialisms the graded compliance release does not define. Capability resolution skipped them instead of voiding the run; they were not graded. Absent on ordinary runs. */
2671
+ tolerated_undefined_specialisms?: string[];
2664
2672
  } | null;
2665
2673
  /** @enum {string} */
2666
2674
  BadgeRole: "media-buy" | "creative" | "signals" | "governance" | "brand" | "sponsored-intelligence";
@@ -4246,13 +4254,31 @@ export interface components {
4246
4254
  storyboards_total: number | null;
4247
4255
  first_blocker: string | null;
4248
4256
  } | null;
4257
+ /** @description Owner/operator-only. Present while the newest scheduled heartbeat ran out of time, so the owner can see that the published result is not being refreshed. Null for other viewers and once a later heartbeat completes. This does not change the public verdict. */
4258
+ heartbeat_timeout?: {
4259
+ /** Format: uuid */
4260
+ run_id: string;
4261
+ /** Format: date-time */
4262
+ timed_out_at: string;
4263
+ duration_ms: number | null;
4264
+ timeout_ms: number | null;
4265
+ storyboards_completed: number | null;
4266
+ storyboards_total: number | null;
4267
+ consecutive: number;
4268
+ /** @description True when the streak filled the lookback window, so the real run of timeouts may be longer than `consecutive`. */
4269
+ consecutive_capped: boolean;
4270
+ /** Format: date-time */
4271
+ published_at: string | null;
4272
+ /** @description Ready-to-render owner-facing sentence. Built only from platform- and runner-generated values; no agent response text. */
4273
+ summary: string;
4274
+ } | null;
4249
4275
  /** @description How often the heartbeat re-tests this agent, in hours */
4250
4276
  check_interval_hours?: number;
4251
4277
  /** @description Specialisms the agent declared in get_adcp_capabilities, from the latest run */
4252
4278
  declared_specialisms?: string[];
4253
- /** @description Per-specialism pass/fail/untested status — keyed on declared specialism, derived from the matching storyboard's status */
4279
+ /** @description Per-specialism pass/fail/untested status — keyed on declared specialism, derived from the matching storyboard's status. `not_applicable` means AdCP introduced the specialism after the compliance release this run graded, so it could not be tested. */
4254
4280
  specialism_status?: {
4255
- [key: string]: "passing" | "failing" | "untested" | "unknown";
4281
+ [key: string]: "passing" | "failing" | "untested" | "unknown" | "not_applicable";
4256
4282
  };
4257
4283
  eligibility?: components["schemas"]["ComplianceEligibility"];
4258
4284
  /** @description Public per-storyboard verdicts and aggregate step counts. First-failure diagnostic fields are populated only for owners; scalar diagnostics are null and validation evidence is empty for other callers. */
@@ -4892,6 +4918,11 @@ export interface components {
4892
4918
  */
4893
4919
  OrganizationRevenueTier: "under_1m" | "1m_5m" | "5m_50m" | "50m_250m" | "250m_1b" | "1b_plus";
4894
4920
  ResolveResponse: {
4921
+ /**
4922
+ * @description Present for a non-persistent sandbox simulation. New property handles are ephemeral.
4923
+ * @enum {boolean}
4924
+ */
4925
+ sandbox?: true;
4895
4926
  resolved: components["schemas"]["ResolvedEntry"][];
4896
4927
  summary: {
4897
4928
  total: number;
@@ -4915,30 +4946,30 @@ export interface components {
4915
4946
  CatalogIdentifier: {
4916
4947
  /** @example domain */
4917
4948
  type: string;
4918
- /** @example nytimes.com */
4949
+ /** @example streamhaus.com */
4919
4950
  value: string;
4920
4951
  };
4952
+ /** @description Up to 10,000 identifiers plus provenance. resolve requires authentication and contributes unknown identifiers; lookup is read-only. Domain/subdomain values must follow core/identifier.json; production rejects reserved test domains. sandbox: true simulates contributions without writes. */
4921
4953
  ResolveRequest: {
4922
4954
  /** @description Identifiers to resolve (and, in resolve mode, contribute). Max 10,000 per call for all callers. */
4923
4955
  identifiers: components["schemas"]["CatalogIdentifier"][];
4924
4956
  provenance: components["schemas"]["FactProvenance"];
4925
4957
  /**
4926
- * @description `resolve` (default) contributes the identifiers, auto-creates missing catalog entries, logs demand activity, and returns rids — requires authentication. `lookup` is a pure read: no write, no activity log, no auth.
4958
+ * @description resolve (default) contributes identifiers, creates missing catalog entries, and logs activity; authentication is required. lookup is a public read with no writes or activity logging.
4927
4959
  * @default resolve
4928
4960
  * @enum {string}
4929
4961
  */
4930
4962
  mode: "resolve" | "lookup";
4963
+ /** @description Simulate contributions without storing properties, identifiers, facts, or activity. Reads existing catalog data; new handles are ephemeral. Reserved test domains are allowed only in sandbox mode. Defaults to false when omitted. */
4964
+ sandbox?: boolean;
4931
4965
  };
4932
4966
  FactProvenance: {
4933
4967
  /**
4934
- * @description How the caller knows these identifiers — the trust/audit envelope on the fact. Determines the confidence the catalog assigns. `crawl` is reserved for server-side pipelines; callers use the others.
4968
+ * @description How the caller knows these identifiers — the trust/audit envelope on the fact. Determines the confidence the catalog assigns. crawl is reserved for server-side pipelines; callers use the others.
4935
4969
  * @enum {string}
4936
4970
  */
4937
4971
  type: "agency_allowlist" | "publisher_declaration" | "impression_log" | "ssp_inventory" | "deal_history" | "crawl" | "data_partner" | "member_assertion";
4938
- /**
4939
- * @description Optional free-text annotation (campaign, dataset).
4940
- * @example unilever_q3
4941
- */
4972
+ /** @description Optional free-text annotation (campaign, dataset). */
4942
4973
  context?: string;
4943
4974
  };
4944
4975
  CatalogDisputeTriageResult: {
@@ -5731,6 +5762,11 @@ export interface operations {
5731
5762
  "application/json": {
5732
5763
  /** @example examplepub.com */
5733
5764
  publisher_domain: string;
5765
+ /**
5766
+ * @description Validate and simulate a save without persisting it. Allows reserved test hostnames.
5767
+ * @default false
5768
+ */
5769
+ sandbox?: boolean;
5734
5770
  /**
5735
5771
  * @description Ignored. Community-registry rows never assert sales authorization — the owner's origin adagents.json is the sole authorization source — so any value here is dropped and the stored document carries authorized_agents:[].
5736
5772
  * @example []
@@ -5770,6 +5806,8 @@ export interface operations {
5770
5806
  success: true;
5771
5807
  message: string;
5772
5808
  id: string;
5809
+ /** @enum {boolean} */
5810
+ sandbox?: true;
5773
5811
  revision_number?: number;
5774
5812
  };
5775
5813
  };
@@ -8475,7 +8513,7 @@ export interface operations {
8475
8513
  getAgentAuthorizations: {
8476
8514
  parameters: {
8477
8515
  query: {
8478
- /** @description Agent URL to look up. Canonicalized server-side (lowercased, trailing slashes trimmed). */
8516
+ /** @description Agent URL to look up. Canonicalized server-side per AdCP URL canonicalization: the scheme and host fold, the path does not. */
8479
8517
  agent_url: string;
8480
8518
  /** @description `effective` (default) applies override layer; `raw` reads base table. */
8481
8519
  include?: "raw" | "effective";
@@ -10954,6 +10992,8 @@ export interface operations {
10954
10992
  }[];
10955
10993
  }[];
10956
10994
  total_storyboards: number;
10995
+ /** @description Declared specialisms AdCP introduced after this compliance release. They have no bundle to run here, so they are listed separately instead of failing resolution. */
10996
+ specialisms_not_applicable?: string[];
10957
10997
  };
10958
10998
  };
10959
10999
  };
@@ -283,7 +283,7 @@ export interface paths {
283
283
  put?: never;
284
284
  /**
285
285
  * Save property
286
- * @description Save or update a hosted property in the registry. Requires authentication. For existing properties, creates a revision-tracked edit. For new properties, creates the property directly. Cannot edit authoritative properties managed via adagents.json.
286
+ * @description Save or update a hosted property in the registry. Requires authentication. For bulk identifier contributions use resolveIdentifiers instead (up to 10,000 identifiers per request). This endpoint is limited to 60 requests/hour per user/IP. publisher_domain must be a lowercase hostname without a URL, port, whitespace, wildcard, or trailing dot. Reserved test domains are rejected unless sandbox is true. With sandbox: true the request is validated and a simulated result is returned without reading or writing a hosted property; the ID is ephemeral. For existing properties, creates a revision-tracked edit. For new properties, creates the property directly. Cannot edit authoritative properties managed via adagents.json.
287
287
  *
288
288
  * This is an identity-only write surface: the stored document always carries `authorized_agents: []`. Sales authorization lives solely in the publisher's own origin `adagents.json`; the community registry cannot mint or carry it. Any `authorized_agents` sent in the request body is ignored.
289
289
  */
@@ -525,6 +525,8 @@ export interface paths {
525
525
  * @description Given a percent-encoded `agent_url`, returns the publishers whose adagents.json authorizes that agent, with provenance (`discovery_method`, `manager_domain`), per-publisher property counts (`properties_authorized`, `properties_total`, scoped to this publisher only — never network-wide), signing-key pin status, and lifecycle state (`authorized` / `revoked`).
526
526
  *
527
527
  * Spec: [docs/aao/directory-api.mdx](/docs/aao/directory-api) (adcp#4823). This endpoint is the spec-compliant richer-shape replacement for the legacy `/api/registry/lookup/agent/{agentUrl}/domains`, which returns domain strings only.
528
+ *
529
+ * `agent_url` is matched with [AdCP URL canonicalization](/docs/reference/url-canonicalization) and a **non-root trailing slash is significant**: `https://a.example/mcp` and `https://a.example/mcp/` are different agents and can return different publisher sets, the same rule the SDK applies in `verify_agent_authorization`. Ask for the spelling the publisher's adagents.json lists. (Through 2026-10-18 this endpoint folded the two spellings together and answered both with the slashless agent's publishers; that disagreed with the spec and with the validator.) The `agent_url` in the response echoes the canonicalized lookup key, slash included.
528
530
  */
529
531
  get: operations["getPublishersForAgentLegacyApiPrefix"];
530
532
  put?: never;
@@ -547,6 +549,8 @@ export interface paths {
547
549
  * @description Given a percent-encoded `agent_url`, returns the publishers whose adagents.json authorizes that agent, with provenance (`discovery_method`, `manager_domain`), per-publisher property counts (`properties_authorized`, `properties_total`, scoped to this publisher only — never network-wide), signing-key pin status, and lifecycle state (`authorized` / `revoked`).
548
550
  *
549
551
  * Spec: [docs/aao/directory-api.mdx](/docs/aao/directory-api) (adcp#4823). This endpoint is the spec-compliant richer-shape replacement for the legacy `/api/registry/lookup/agent/{agentUrl}/domains`, which returns domain strings only.
552
+ *
553
+ * `agent_url` is matched with [AdCP URL canonicalization](/docs/reference/url-canonicalization) and a **non-root trailing slash is significant**: `https://a.example/mcp` and `https://a.example/mcp/` are different agents and can return different publisher sets, the same rule the SDK applies in `verify_agent_authorization`. Ask for the spelling the publisher's adagents.json lists. (Through 2026-10-18 this endpoint folded the two spellings together and answered both with the slashless agent's publishers; that disagreed with the spec and with the validator.) The `agent_url` in the response echoes the canonicalized lookup key, slash included.
550
554
  */
551
555
  get: operations["getPublishersForAgent"];
552
556
  put?: never;
@@ -2526,6 +2530,8 @@ export interface components {
2526
2530
  stats?: components["schemas"]["AgentStats"];
2527
2531
  capabilities?: components["schemas"]["AgentCapabilities"];
2528
2532
  compliance?: components["schemas"]["AgentCompliance"];
2533
+ /** @description Every raw agent_url spelling the directory has indexed under this agent's identity, with the listed (canonical) url first. The registry keys an agent by identity, folding a non-root trailing slash, but GET /v1/agents/{agent_url}/publishers matches spec-exactly with the slash significant — so a client answering "which publishers authorize this agent" must query once per spelling here and merge the results. */
2534
+ declared_urls?: string[];
2529
2535
  publisher_domains?: string[];
2530
2536
  property_summary?: components["schemas"]["PropertySummary"];
2531
2537
  };
@@ -2661,6 +2667,8 @@ export interface components {
2661
2667
  timeout_ms: number | null;
2662
2668
  storyboard_start_offset: number | null;
2663
2669
  auth_type: string | null;
2670
+ /** @description Declared specialisms the graded compliance release does not define. Capability resolution skipped them instead of voiding the run; they were not graded. Absent on ordinary runs. */
2671
+ tolerated_undefined_specialisms?: string[];
2664
2672
  } | null;
2665
2673
  /** @enum {string} */
2666
2674
  BadgeRole: "media-buy" | "creative" | "signals" | "governance" | "brand" | "sponsored-intelligence";
@@ -4246,13 +4254,31 @@ export interface components {
4246
4254
  storyboards_total: number | null;
4247
4255
  first_blocker: string | null;
4248
4256
  } | null;
4257
+ /** @description Owner/operator-only. Present while the newest scheduled heartbeat ran out of time, so the owner can see that the published result is not being refreshed. Null for other viewers and once a later heartbeat completes. This does not change the public verdict. */
4258
+ heartbeat_timeout?: {
4259
+ /** Format: uuid */
4260
+ run_id: string;
4261
+ /** Format: date-time */
4262
+ timed_out_at: string;
4263
+ duration_ms: number | null;
4264
+ timeout_ms: number | null;
4265
+ storyboards_completed: number | null;
4266
+ storyboards_total: number | null;
4267
+ consecutive: number;
4268
+ /** @description True when the streak filled the lookback window, so the real run of timeouts may be longer than `consecutive`. */
4269
+ consecutive_capped: boolean;
4270
+ /** Format: date-time */
4271
+ published_at: string | null;
4272
+ /** @description Ready-to-render owner-facing sentence. Built only from platform- and runner-generated values; no agent response text. */
4273
+ summary: string;
4274
+ } | null;
4249
4275
  /** @description How often the heartbeat re-tests this agent, in hours */
4250
4276
  check_interval_hours?: number;
4251
4277
  /** @description Specialisms the agent declared in get_adcp_capabilities, from the latest run */
4252
4278
  declared_specialisms?: string[];
4253
- /** @description Per-specialism pass/fail/untested status — keyed on declared specialism, derived from the matching storyboard's status */
4279
+ /** @description Per-specialism pass/fail/untested status — keyed on declared specialism, derived from the matching storyboard's status. `not_applicable` means AdCP introduced the specialism after the compliance release this run graded, so it could not be tested. */
4254
4280
  specialism_status?: {
4255
- [key: string]: "passing" | "failing" | "untested" | "unknown";
4281
+ [key: string]: "passing" | "failing" | "untested" | "unknown" | "not_applicable";
4256
4282
  };
4257
4283
  eligibility?: components["schemas"]["ComplianceEligibility"];
4258
4284
  /** @description Public per-storyboard verdicts and aggregate step counts. First-failure diagnostic fields are populated only for owners; scalar diagnostics are null and validation evidence is empty for other callers. */
@@ -4892,6 +4918,11 @@ export interface components {
4892
4918
  */
4893
4919
  OrganizationRevenueTier: "under_1m" | "1m_5m" | "5m_50m" | "50m_250m" | "250m_1b" | "1b_plus";
4894
4920
  ResolveResponse: {
4921
+ /**
4922
+ * @description Present for a non-persistent sandbox simulation. New property handles are ephemeral.
4923
+ * @enum {boolean}
4924
+ */
4925
+ sandbox?: true;
4895
4926
  resolved: components["schemas"]["ResolvedEntry"][];
4896
4927
  summary: {
4897
4928
  total: number;
@@ -4915,30 +4946,30 @@ export interface components {
4915
4946
  CatalogIdentifier: {
4916
4947
  /** @example domain */
4917
4948
  type: string;
4918
- /** @example nytimes.com */
4949
+ /** @example streamhaus.com */
4919
4950
  value: string;
4920
4951
  };
4952
+ /** @description Up to 10,000 identifiers plus provenance. resolve requires authentication and contributes unknown identifiers; lookup is read-only. Domain/subdomain values must follow core/identifier.json; production rejects reserved test domains. sandbox: true simulates contributions without writes. */
4921
4953
  ResolveRequest: {
4922
4954
  /** @description Identifiers to resolve (and, in resolve mode, contribute). Max 10,000 per call for all callers. */
4923
4955
  identifiers: components["schemas"]["CatalogIdentifier"][];
4924
4956
  provenance: components["schemas"]["FactProvenance"];
4925
4957
  /**
4926
- * @description `resolve` (default) contributes the identifiers, auto-creates missing catalog entries, logs demand activity, and returns rids — requires authentication. `lookup` is a pure read: no write, no activity log, no auth.
4958
+ * @description resolve (default) contributes identifiers, creates missing catalog entries, and logs activity; authentication is required. lookup is a public read with no writes or activity logging.
4927
4959
  * @default resolve
4928
4960
  * @enum {string}
4929
4961
  */
4930
4962
  mode: "resolve" | "lookup";
4963
+ /** @description Simulate contributions without storing properties, identifiers, facts, or activity. Reads existing catalog data; new handles are ephemeral. Reserved test domains are allowed only in sandbox mode. Defaults to false when omitted. */
4964
+ sandbox?: boolean;
4931
4965
  };
4932
4966
  FactProvenance: {
4933
4967
  /**
4934
- * @description How the caller knows these identifiers — the trust/audit envelope on the fact. Determines the confidence the catalog assigns. `crawl` is reserved for server-side pipelines; callers use the others.
4968
+ * @description How the caller knows these identifiers — the trust/audit envelope on the fact. Determines the confidence the catalog assigns. crawl is reserved for server-side pipelines; callers use the others.
4935
4969
  * @enum {string}
4936
4970
  */
4937
4971
  type: "agency_allowlist" | "publisher_declaration" | "impression_log" | "ssp_inventory" | "deal_history" | "crawl" | "data_partner" | "member_assertion";
4938
- /**
4939
- * @description Optional free-text annotation (campaign, dataset).
4940
- * @example unilever_q3
4941
- */
4972
+ /** @description Optional free-text annotation (campaign, dataset). */
4942
4973
  context?: string;
4943
4974
  };
4944
4975
  CatalogDisputeTriageResult: {
@@ -5731,6 +5762,11 @@ export interface operations {
5731
5762
  "application/json": {
5732
5763
  /** @example examplepub.com */
5733
5764
  publisher_domain: string;
5765
+ /**
5766
+ * @description Validate and simulate a save without persisting it. Allows reserved test hostnames.
5767
+ * @default false
5768
+ */
5769
+ sandbox?: boolean;
5734
5770
  /**
5735
5771
  * @description Ignored. Community-registry rows never assert sales authorization — the owner's origin adagents.json is the sole authorization source — so any value here is dropped and the stored document carries authorized_agents:[].
5736
5772
  * @example []
@@ -5770,6 +5806,8 @@ export interface operations {
5770
5806
  success: true;
5771
5807
  message: string;
5772
5808
  id: string;
5809
+ /** @enum {boolean} */
5810
+ sandbox?: true;
5773
5811
  revision_number?: number;
5774
5812
  };
5775
5813
  };
@@ -8475,7 +8513,7 @@ export interface operations {
8475
8513
  getAgentAuthorizations: {
8476
8514
  parameters: {
8477
8515
  query: {
8478
- /** @description Agent URL to look up. Canonicalized server-side (lowercased, trailing slashes trimmed). */
8516
+ /** @description Agent URL to look up. Canonicalized server-side per AdCP URL canonicalization: the scheme and host fold, the path does not. */
8479
8517
  agent_url: string;
8480
8518
  /** @description `effective` (default) applies override layer; `raw` reads base table. */
8481
8519
  include?: "raw" | "effective";
@@ -10954,6 +10992,8 @@ export interface operations {
10954
10992
  }[];
10955
10993
  }[];
10956
10994
  total_storyboards: number;
10995
+ /** @description Declared specialisms AdCP introduced after this compliance release. They have no bundle to run here, so they are listed separately instead of failing resolution. */
10996
+ specialisms_not_applicable?: string[];
10957
10997
  };
10958
10998
  };
10959
10999
  };