@adcp/sdk 14.0.0-rc.37 → 14.0.0-rc.39

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 (622) hide show
  1. package/bin/adcp-storyboard-summary.js +286 -0
  2. package/bin/adcp.js +221 -10
  3. package/dist/lib/conformance/schemaLoader.d.mts +1 -1
  4. package/dist/lib/conformance/schemaLoader.d.ts +1 -1
  5. package/dist/lib/core/AgentClient.d.mts +6 -1
  6. package/dist/lib/core/AgentClient.d.ts +6 -1
  7. package/dist/lib/core/AgentClient.js +9 -0
  8. package/dist/lib/core/AgentClient.mjs +9 -0
  9. package/dist/lib/core/ConversationTypes.d.mts +29 -0
  10. package/dist/lib/core/ConversationTypes.d.ts +29 -0
  11. package/dist/lib/core/SingleAgentClient.d.mts +3 -1
  12. package/dist/lib/core/SingleAgentClient.d.ts +3 -1
  13. package/dist/lib/core/SingleAgentClient.js +9 -1
  14. package/dist/lib/core/SingleAgentClient.mjs +9 -1
  15. package/dist/lib/core/TaskExecutor.d.mts +13 -1
  16. package/dist/lib/core/TaskExecutor.d.ts +13 -1
  17. package/dist/lib/core/TaskExecutor.js +216 -18
  18. package/dist/lib/core/TaskExecutor.mjs +216 -19
  19. package/dist/lib/index.d.mts +5 -2
  20. package/dist/lib/index.d.ts +5 -2
  21. package/dist/lib/index.js +10 -1
  22. package/dist/lib/index.mjs +10 -1
  23. package/dist/lib/media-buy/action-assessment.d.mts +77 -0
  24. package/dist/lib/media-buy/action-assessment.d.ts +77 -0
  25. package/dist/lib/media-buy/action-assessment.js +300 -0
  26. package/dist/lib/media-buy/action-assessment.mjs +284 -0
  27. package/dist/lib/media-buy/action-constraints.d.mts +9 -0
  28. package/dist/lib/media-buy/action-constraints.d.ts +9 -0
  29. package/dist/lib/media-buy/action-constraints.js +170 -0
  30. package/dist/lib/media-buy/action-constraints.mjs +146 -0
  31. package/dist/lib/media-buy/action-contracts.d.mts +40 -0
  32. package/dist/lib/media-buy/action-contracts.d.ts +40 -0
  33. package/dist/lib/media-buy/action-contracts.js +304 -0
  34. package/dist/lib/media-buy/action-contracts.mjs +267 -0
  35. package/dist/lib/media-buy/action-metadata.generated.d.mts +37 -0
  36. package/dist/lib/media-buy/action-metadata.generated.d.ts +37 -0
  37. package/dist/lib/media-buy/action-metadata.generated.js +128 -0
  38. package/dist/lib/media-buy/action-metadata.generated.mjs +101 -0
  39. package/dist/lib/media-buy/action-types.d.mts +106 -0
  40. package/dist/lib/media-buy/action-types.d.ts +106 -0
  41. package/dist/lib/{types/v3-1-beta/tools.generated.js → media-buy/action-types.js} +2 -2
  42. package/dist/lib/media-buy/actions.d.mts +6 -0
  43. package/dist/lib/media-buy/actions.d.ts +6 -0
  44. package/dist/lib/media-buy/actions.js +38 -0
  45. package/dist/lib/media-buy/actions.mjs +9 -0
  46. package/dist/lib/media-buy/available-actions.d.mts +2 -1
  47. package/dist/lib/media-buy/available-actions.d.ts +2 -1
  48. package/dist/lib/media-buy/available-actions.js +4 -3
  49. package/dist/lib/media-buy/available-actions.mjs +4 -3
  50. package/dist/lib/media-buy/compatibility.js +3 -0
  51. package/dist/lib/media-buy/compatibility.mjs +3 -0
  52. package/dist/lib/media-buy/index.d.mts +4 -0
  53. package/dist/lib/media-buy/index.d.ts +4 -0
  54. package/dist/lib/media-buy/index.js +3 -1
  55. package/dist/lib/media-buy/index.mjs +1 -0
  56. package/dist/lib/media-buy/legacy-action-ids.d.mts +1 -0
  57. package/dist/lib/media-buy/legacy-action-ids.d.ts +1 -0
  58. package/dist/lib/media-buy/legacy-action-ids.js +50 -0
  59. package/dist/lib/media-buy/legacy-action-ids.mjs +26 -0
  60. package/dist/lib/media-buy/mutations.d.mts +70 -0
  61. package/dist/lib/media-buy/mutations.d.ts +70 -0
  62. package/dist/lib/media-buy/mutations.js +525 -0
  63. package/dist/lib/media-buy/mutations.mjs +498 -0
  64. package/dist/lib/media-buy/preflight.d.mts +20 -69
  65. package/dist/lib/media-buy/preflight.d.ts +20 -69
  66. package/dist/lib/media-buy/preflight.js +100 -336
  67. package/dist/lib/media-buy/preflight.mjs +111 -333
  68. package/dist/lib/media-buy/targeting-input.d.mts +7 -4
  69. package/dist/lib/media-buy/targeting-input.d.ts +7 -4
  70. package/dist/lib/media-buy/types.d.mts +55 -7
  71. package/dist/lib/media-buy/types.d.ts +55 -7
  72. package/dist/lib/protocols/rawResponseCapture.d.mts +12 -0
  73. package/dist/lib/protocols/rawResponseCapture.d.ts +12 -0
  74. package/dist/lib/protocols/rawResponseCapture.js +33 -3
  75. package/dist/lib/protocols/rawResponseCapture.mjs +32 -3
  76. package/dist/lib/registry/types.generated.d.mts +377 -9
  77. package/dist/lib/registry/types.generated.d.ts +377 -9
  78. package/dist/lib/reporting/content-mismatch.d.mts +126 -0
  79. package/dist/lib/reporting/content-mismatch.d.ts +126 -0
  80. package/dist/lib/reporting/content-mismatch.js +90 -0
  81. package/dist/lib/reporting/content-mismatch.mjs +66 -0
  82. package/dist/lib/reporting/evidence.d.mts +1 -0
  83. package/dist/lib/reporting/evidence.d.ts +1 -0
  84. package/dist/lib/reporting/evidence.js +32 -3
  85. package/dist/lib/reporting/evidence.mjs +31 -3
  86. package/dist/lib/reporting/index.d.mts +3 -1
  87. package/dist/lib/reporting/index.d.ts +3 -1
  88. package/dist/lib/reporting/index.js +3 -0
  89. package/dist/lib/reporting/index.mjs +2 -0
  90. package/dist/lib/reporting/ledger/handler.d.mts +51 -1
  91. package/dist/lib/reporting/ledger/handler.d.ts +51 -1
  92. package/dist/lib/reporting/ledger/handler.js +306 -38
  93. package/dist/lib/reporting/ledger/handler.mjs +304 -37
  94. package/dist/lib/reporting/ledger/health.d.mts +12 -0
  95. package/dist/lib/reporting/ledger/health.d.ts +12 -0
  96. package/dist/lib/reporting/ledger/health.js +15 -2
  97. package/dist/lib/reporting/ledger/health.mjs +13 -1
  98. package/dist/lib/reporting/ledger/index.d.mts +3 -0
  99. package/dist/lib/reporting/ledger/index.d.ts +3 -0
  100. package/dist/lib/reporting/ledger/index.js +7 -1
  101. package/dist/lib/reporting/ledger/index.mjs +3 -0
  102. package/dist/lib/reporting/ledger/lifecycle.d.mts +31 -4
  103. package/dist/lib/reporting/ledger/lifecycle.d.ts +31 -4
  104. package/dist/lib/reporting/ledger/lifecycle.js +244 -37
  105. package/dist/lib/reporting/ledger/lifecycle.mjs +244 -37
  106. package/dist/lib/reporting/ledger/managed-postgres.d.mts +231 -0
  107. package/dist/lib/reporting/ledger/managed-postgres.d.ts +231 -0
  108. package/dist/lib/reporting/ledger/managed-postgres.js +1797 -0
  109. package/dist/lib/reporting/ledger/managed-postgres.mjs +1776 -0
  110. package/dist/lib/reporting/ledger/managed.d.mts +355 -0
  111. package/dist/lib/reporting/ledger/managed.d.ts +355 -0
  112. package/dist/lib/reporting/ledger/managed.js +661 -0
  113. package/dist/lib/reporting/ledger/managed.mjs +633 -0
  114. package/dist/lib/reporting/ledger/notification-activity.d.mts +222 -0
  115. package/dist/lib/reporting/ledger/notification-activity.d.ts +222 -0
  116. package/dist/lib/reporting/ledger/notification-activity.js +1139 -0
  117. package/dist/lib/reporting/ledger/notification-activity.mjs +1110 -0
  118. package/dist/lib/reporting/ledger/postgres.d.mts +161 -1
  119. package/dist/lib/reporting/ledger/postgres.d.ts +161 -1
  120. package/dist/lib/reporting/ledger/postgres.js +1153 -21
  121. package/dist/lib/reporting/ledger/postgres.mjs +1152 -21
  122. package/dist/lib/reporting/ledger/producer.d.mts +8 -0
  123. package/dist/lib/reporting/ledger/producer.d.ts +8 -0
  124. package/dist/lib/reporting/ledger/producer.js +146 -52
  125. package/dist/lib/reporting/ledger/producer.mjs +146 -51
  126. package/dist/lib/reporting/ledger/types.d.mts +358 -1
  127. package/dist/lib/reporting/ledger/types.d.ts +358 -1
  128. package/dist/lib/reporting/ledger/types.js +3 -0
  129. package/dist/lib/reporting/ledger/types.mjs +2 -0
  130. package/dist/lib/reporting/reconciliation.d.mts +362 -2
  131. package/dist/lib/reporting/reconciliation.d.ts +362 -2
  132. package/dist/lib/reporting/reconciliation.js +1051 -7
  133. package/dist/lib/reporting/reconciliation.mjs +1053 -7
  134. package/dist/lib/reporting/service/conformance.d.mts +35 -0
  135. package/dist/lib/reporting/service/conformance.d.ts +35 -0
  136. package/dist/lib/reporting/service/conformance.js +89 -0
  137. package/dist/lib/reporting/service/conformance.mjs +68 -0
  138. package/dist/lib/reporting/service/index.d.mts +182 -0
  139. package/dist/lib/reporting/service/index.d.ts +182 -0
  140. package/dist/lib/reporting/service/index.js +793 -0
  141. package/dist/lib/reporting/service/index.mjs +787 -0
  142. package/dist/lib/reporting/source/index.d.mts +2 -1
  143. package/dist/lib/reporting/source/index.d.ts +2 -1
  144. package/dist/lib/reporting/source/index.js +16 -3
  145. package/dist/lib/reporting/source/index.mjs +12 -1
  146. package/dist/lib/reporting/source/inline.d.mts +88 -1
  147. package/dist/lib/reporting/source/inline.d.ts +88 -1
  148. package/dist/lib/reporting/source/inline.js +1161 -163
  149. package/dist/lib/reporting/source/inline.mjs +1166 -163
  150. package/dist/lib/reporting/source/manifest.js +12 -7
  151. package/dist/lib/reporting/source/manifest.mjs +12 -7
  152. package/dist/lib/reporting/source/source.d.mts +26 -0
  153. package/dist/lib/reporting/source/source.d.ts +26 -0
  154. package/dist/lib/reporting/source/source.js +71 -2
  155. package/dist/lib/reporting/source/source.mjs +65 -1
  156. package/dist/lib/schemas/index.d.mts +22 -1
  157. package/dist/lib/schemas/index.d.ts +22 -1
  158. package/dist/lib/schemas/index.js +7 -0
  159. package/dist/lib/schemas/index.mjs +7 -0
  160. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  161. package/dist/lib/server/create-adcp-server.d.mts +18 -0
  162. package/dist/lib/server/create-adcp-server.d.ts +18 -0
  163. package/dist/lib/server/create-adcp-server.js +52 -2
  164. package/dist/lib/server/create-adcp-server.mjs +52 -2
  165. package/dist/lib/server/decisioning/account.d.mts +1 -1
  166. package/dist/lib/server/decisioning/account.d.ts +1 -1
  167. package/dist/lib/server/decisioning/index.d.mts +1 -0
  168. package/dist/lib/server/decisioning/index.d.ts +1 -0
  169. package/dist/lib/server/decisioning/platform.d.mts +3 -0
  170. package/dist/lib/server/decisioning/platform.d.ts +3 -0
  171. package/dist/lib/server/decisioning/runtime/from-platform.js +88 -10
  172. package/dist/lib/server/decisioning/runtime/from-platform.mjs +88 -10
  173. package/dist/lib/server/decisioning/specialisms/reporting.d.mts +38 -0
  174. package/dist/lib/server/decisioning/specialisms/reporting.d.ts +38 -0
  175. package/dist/lib/{types/v3-1-beta/index.js → server/decisioning/specialisms/reporting.js} +2 -8
  176. package/dist/lib/server/decisioning/specialisms/reporting.mjs +0 -0
  177. package/dist/lib/server/index.d.mts +4 -2
  178. package/dist/lib/server/index.d.ts +4 -2
  179. package/dist/lib/server/index.js +5 -0
  180. package/dist/lib/server/index.mjs +4 -0
  181. package/dist/lib/server/media-buy-action-resolver.d.mts +63 -0
  182. package/dist/lib/server/media-buy-action-resolver.d.ts +63 -0
  183. package/dist/lib/server/media-buy-action-resolver.js +297 -0
  184. package/dist/lib/server/media-buy-action-resolver.mjs +285 -0
  185. package/dist/lib/server/media-buy-actions.d.mts +7 -8
  186. package/dist/lib/server/media-buy-actions.d.ts +7 -8
  187. package/dist/lib/server/media-buy-actions.js +57 -14
  188. package/dist/lib/server/media-buy-actions.mjs +63 -14
  189. package/dist/lib/server/notification-subscriptions/index.d.mts +2 -2
  190. package/dist/lib/server/notification-subscriptions/index.d.ts +2 -2
  191. package/dist/lib/server/notification-subscriptions/index.js +2 -0
  192. package/dist/lib/server/notification-subscriptions/index.mjs +2 -0
  193. package/dist/lib/server/notification-subscriptions/postgres-runtime.d.mts +3 -1
  194. package/dist/lib/server/notification-subscriptions/postgres-runtime.d.ts +3 -1
  195. package/dist/lib/server/notification-subscriptions/postgres-runtime.js +1 -0
  196. package/dist/lib/server/notification-subscriptions/postgres-runtime.mjs +1 -0
  197. package/dist/lib/server/notification-subscriptions/runtime.d.mts +12 -1
  198. package/dist/lib/server/notification-subscriptions/runtime.d.ts +12 -1
  199. package/dist/lib/server/notification-subscriptions/runtime.js +102 -16
  200. package/dist/lib/server/notification-subscriptions/runtime.mjs +101 -16
  201. package/dist/lib/server/notification-subscriptions/types.d.mts +104 -1
  202. package/dist/lib/server/notification-subscriptions/types.d.ts +104 -1
  203. package/dist/lib/server/webhook-emitter.d.mts +40 -5
  204. package/dist/lib/server/webhook-emitter.d.ts +40 -5
  205. package/dist/lib/server/webhook-emitter.js +23 -12
  206. package/dist/lib/server/webhook-emitter.mjs +23 -12
  207. package/dist/lib/storage/interfaces.d.mts +14 -2
  208. package/dist/lib/storage/interfaces.d.ts +14 -2
  209. package/dist/lib/testing/compliance/comply.d.mts +9 -3
  210. package/dist/lib/testing/compliance/comply.d.ts +9 -3
  211. package/dist/lib/testing/compliance/comply.js +158 -3
  212. package/dist/lib/testing/compliance/comply.mjs +159 -4
  213. package/dist/lib/testing/compliance/storyboard-tracks.js +7 -5
  214. package/dist/lib/testing/compliance/storyboard-tracks.mjs +7 -5
  215. package/dist/lib/testing/compliance/summary.js +10 -1
  216. package/dist/lib/testing/compliance/summary.mjs +10 -1
  217. package/dist/lib/testing/index.d.mts +1 -1
  218. package/dist/lib/testing/index.d.ts +1 -1
  219. package/dist/lib/testing/index.js +2 -0
  220. package/dist/lib/testing/index.mjs +3 -1
  221. package/dist/lib/testing/storyboard/agent-routing.d.mts +12 -43
  222. package/dist/lib/testing/storyboard/agent-routing.d.ts +12 -43
  223. package/dist/lib/testing/storyboard/agent-routing.js +75 -13
  224. package/dist/lib/testing/storyboard/agent-routing.mjs +70 -12
  225. package/dist/lib/testing/storyboard/index.d.mts +1 -0
  226. package/dist/lib/testing/storyboard/index.d.ts +1 -0
  227. package/dist/lib/testing/storyboard/index.js +3 -0
  228. package/dist/lib/testing/storyboard/index.mjs +2 -0
  229. package/dist/lib/testing/storyboard/junit.d.mts +1 -1
  230. package/dist/lib/testing/storyboard/junit.d.ts +1 -1
  231. package/dist/lib/testing/storyboard/junit.js +21 -2
  232. package/dist/lib/testing/storyboard/junit.mjs +21 -2
  233. package/dist/lib/testing/storyboard/probes.d.mts +130 -0
  234. package/dist/lib/testing/storyboard/probes.d.ts +130 -0
  235. package/dist/lib/testing/storyboard/probes.js +682 -10
  236. package/dist/lib/testing/storyboard/probes.mjs +683 -3
  237. package/dist/lib/testing/storyboard/request-signing/builder.d.mts +16 -5
  238. package/dist/lib/testing/storyboard/request-signing/builder.d.ts +16 -5
  239. package/dist/lib/testing/storyboard/request-signing/grader.d.mts +44 -1
  240. package/dist/lib/testing/storyboard/request-signing/grader.d.ts +44 -1
  241. package/dist/lib/testing/storyboard/request-signing/grader.js +46 -22
  242. package/dist/lib/testing/storyboard/request-signing/grader.mjs +43 -21
  243. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.mts +86 -11
  244. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.ts +86 -11
  245. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.js +119 -25
  246. package/dist/lib/testing/storyboard/request-signing/probe-dispatch.mjs +117 -26
  247. package/dist/lib/testing/storyboard/request-signing/synthesize.js +22 -2
  248. package/dist/lib/testing/storyboard/request-signing/synthesize.mjs +22 -2
  249. package/dist/lib/testing/storyboard/runner.d.mts +103 -0
  250. package/dist/lib/testing/storyboard/runner.d.ts +103 -0
  251. package/dist/lib/testing/storyboard/runner.js +1090 -268
  252. package/dist/lib/testing/storyboard/runner.mjs +1096 -261
  253. package/dist/lib/testing/storyboard/seeding.d.mts +4 -1
  254. package/dist/lib/testing/storyboard/seeding.d.ts +4 -1
  255. package/dist/lib/testing/storyboard/seeding.js +55 -24
  256. package/dist/lib/testing/storyboard/seeding.mjs +55 -24
  257. package/dist/lib/testing/storyboard/test-kit.d.mts +37 -3
  258. package/dist/lib/testing/storyboard/test-kit.d.ts +37 -3
  259. package/dist/lib/testing/storyboard/test-kit.js +8 -2
  260. package/dist/lib/testing/storyboard/test-kit.mjs +7 -2
  261. package/dist/lib/testing/storyboard/types.d.mts +132 -10
  262. package/dist/lib/testing/storyboard/types.d.ts +132 -10
  263. package/dist/lib/testing/storyboard/types.js +17 -0
  264. package/dist/lib/testing/storyboard/types.mjs +16 -0
  265. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  266. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  267. package/dist/lib/testing/storyboard/validations.js +16 -0
  268. package/dist/lib/testing/storyboard/validations.mjs +16 -0
  269. package/dist/lib/testing/test-controller.d.mts +1 -1
  270. package/dist/lib/testing/test-controller.d.ts +1 -1
  271. package/dist/lib/types/buy-products.d.ts +71 -6
  272. package/dist/lib/types/control-media-buy.d.ts +25 -11
  273. package/dist/lib/types/core.generated.d.mts +69 -10
  274. package/dist/lib/types/core.generated.d.ts +69 -10
  275. package/dist/lib/types/create-media-buy.d.ts +71 -6
  276. package/dist/lib/types/forward-compat-error-codes.d.mts +7 -6
  277. package/dist/lib/types/forward-compat-error-codes.d.ts +7 -6
  278. package/dist/lib/types/index.d.mts +2 -2
  279. package/dist/lib/types/index.d.ts +2 -2
  280. package/dist/lib/types/schemas.generated.d.ts +8040 -8116
  281. package/dist/lib/types/schemas.generated.js +1074 -309
  282. package/dist/lib/types/schemas.generated.mjs +1068 -309
  283. package/dist/lib/types/tools.generated.d.mts +65 -6
  284. package/dist/lib/types/tools.generated.d.ts +65 -6
  285. package/dist/lib/types/update-media-buy.d.ts +71 -6
  286. package/dist/lib/utils/redact-secrets.d.mts +1 -1
  287. package/dist/lib/utils/redact-secrets.d.ts +1 -1
  288. package/dist/lib/utils/redact-secrets.js +1 -1
  289. package/dist/lib/utils/redact-secrets.mjs +1 -1
  290. package/dist/lib/v2/projection/cache-versions.d.mts +0 -1
  291. package/dist/lib/v2/projection/cache-versions.d.ts +0 -1
  292. package/dist/lib/v2/projection/cache-versions.js +1 -15
  293. package/dist/lib/v2/projection/cache-versions.mjs +1 -14
  294. package/dist/lib/v2/projection/canonical-properties.js +2 -2
  295. package/dist/lib/v2/projection/canonical-properties.mjs +3 -3
  296. package/dist/lib/v2/projection/registry.d.mts +1 -1
  297. package/dist/lib/v2/projection/registry.d.ts +1 -1
  298. package/dist/lib/v2/projection/registry.js +2 -2
  299. package/dist/lib/v2/projection/registry.mjs +3 -3
  300. package/dist/lib/validation/schema-loader.d.mts +9 -1
  301. package/dist/lib/validation/schema-loader.d.ts +9 -1
  302. package/dist/lib/validation/schema-loader.js +65 -8
  303. package/dist/lib/validation/schema-loader.mjs +64 -8
  304. package/dist/lib/version.d.mts +5 -5
  305. package/dist/lib/version.d.ts +5 -5
  306. package/dist/lib/version.js +3 -8
  307. package/dist/lib/version.mjs +3 -8
  308. package/dist/lib/wholesale-feed-sync/index.d.mts +1 -0
  309. package/dist/lib/wholesale-feed-sync/index.d.ts +1 -0
  310. package/dist/lib/wholesale-feed-sync/protocol-types.d.mts +42 -0
  311. package/dist/lib/wholesale-feed-sync/protocol-types.d.ts +42 -0
  312. package/dist/lib/wholesale-feed-sync/protocol-types.js +16 -0
  313. package/dist/lib/wholesale-feed-sync/protocol-types.mjs +0 -0
  314. package/dist/lib/wholesale-feed-sync/sync.d.mts +6 -6
  315. package/dist/lib/wholesale-feed-sync/sync.d.ts +6 -6
  316. package/dist/lib/wholesale-feed-sync/sync.js +3 -1
  317. package/dist/lib/wholesale-feed-sync/sync.mjs +3 -1
  318. package/dist/lib/wholesale-feed-sync/types.d.mts +15 -14
  319. package/dist/lib/wholesale-feed-sync/types.d.ts +15 -14
  320. package/dist/lib/wholesale-feed-sync/webhook-notification.d.mts +7 -5
  321. package/dist/lib/wholesale-feed-sync/webhook-notification.d.ts +7 -5
  322. package/dist/lib/wholesale-feed-sync/webhook-notification.js +45 -0
  323. package/dist/lib/wholesale-feed-sync/webhook-notification.mjs +44 -0
  324. package/docs/CLI.md +1 -1
  325. package/docs/TYPE-SUMMARY.md +118 -4
  326. package/docs/guides/ASYNC-API-REFERENCE.md +62 -1
  327. package/docs/guides/ASYNC-DEVELOPER-GUIDE.md +25 -0
  328. package/docs/guides/ASYNC-DOCUMENTATION-INDEX.md +3 -0
  329. package/docs/guides/BUYER-QUICKSTART-3.2.md +5 -0
  330. package/docs/guides/DURABLE-BUYER-WRITES.md +337 -0
  331. package/docs/guides/EXISTING-PLATFORM.md +80 -1
  332. package/docs/guides/MEDIA-BUY-3.2-COMPATIBILITY.md +57 -0
  333. package/docs/guides/MEDIA-BUY-ACTION-ASSESSMENT.md +300 -0
  334. package/docs/guides/REPORTING-LEDGER.md +654 -3
  335. package/docs/guides/REPORTING-RECONCILIATION.md +50 -0
  336. package/docs/guides/REPORTING-SOURCE-EXECUTOR.md +63 -1
  337. package/docs/guides/SELLER-QUICKSTART-3.2.md +2 -0
  338. package/docs/guides/VALIDATE-YOUR-AGENT.md +35 -0
  339. package/docs/guides/idempotency-crash-recovery.md +4 -0
  340. package/docs/llms.txt +4 -2
  341. package/docs/migration-14.x-rc-worksheet.md +60 -5
  342. package/docs/migration-7.9-to-7.10.md +7 -5
  343. package/examples/README.md +17 -0
  344. package/examples/durable-buyer-writes/caller.ts +745 -0
  345. package/examples/durable-buyer-writes/worker.ts +240 -0
  346. package/examples/reliable-reporting-service/README.md +100 -0
  347. package/examples/seller-3.2-starter.ts +7 -8
  348. package/examples/targeting-input-existing-platform.ts +153 -0
  349. package/package.json +41 -29
  350. package/skills/build-seller-agent/SKILL.md +2 -0
  351. package/skills/build-seller-agent/specialisms/signed-requests.md +11 -1
  352. package/skills/cross-cutting.md +28 -11
  353. package/compliance/cache/3.1.0-beta.7/domains/brand/index.yaml +0 -160
  354. package/compliance/cache/3.1.0-beta.7/domains/brand/scenarios/distributed_brand_resolution.yaml +0 -415
  355. package/compliance/cache/3.1.0-beta.7/domains/brand/scenarios/single_side_trust_extension.yaml +0 -454
  356. package/compliance/cache/3.1.0-beta.7/domains/creative/index.yaml +0 -339
  357. package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/billing_out_of_band.yaml +0 -153
  358. package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -389
  359. package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/native_in_feed.yaml +0 -543
  360. package/compliance/cache/3.1.0-beta.7/domains/governance/index.yaml +0 -682
  361. package/compliance/cache/3.1.0-beta.7/domains/media-buy/index.yaml +0 -781
  362. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/audience_buy_flow.yaml +0 -380
  363. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/available_actions.yaml +0 -565
  364. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/billing_finality_delivery.yaml +0 -354
  365. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/canonical_formats.yaml +0 -711
  366. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/clicks_buy_flow.yaml +0 -264
  367. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/completed_views_buy_flow.yaml +0 -344
  368. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -234
  369. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +0 -419
  370. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/creative_reception.yaml +0 -247
  371. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/delivery_reporting.yaml +0 -357
  372. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/dependency_impairment.yaml +0 -633
  373. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -800
  374. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/event_dedup_flow.yaml +0 -399
  375. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -309
  376. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_approved.yaml +0 -214
  377. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_conditions.yaml +0 -199
  378. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_denied.yaml +0 -204
  379. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_denied_recovery.yaml +0 -252
  380. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/invalid_transitions.yaml +0 -289
  381. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
  382. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/inventory_list_targeting.yaml +0 -276
  383. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/measurement_accountability.yaml +0 -244
  384. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/measurement_terms_rejected.yaml +0 -203
  385. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/pending_creatives_to_start.yaml +0 -274
  386. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -500
  387. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/performance_buy_flow.yaml +0 -428
  388. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -470
  389. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/product_signal_targeting.yaml +0 -373
  390. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_finalize.yaml +0 -399
  391. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -264
  392. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_not_found_errors.yaml +0 -257
  393. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_audit_observation.yaml +0 -333
  394. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_enforcement.yaml +0 -517
  395. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -294
  396. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/reach_buy_flow.yaml +0 -823
  397. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -360
  398. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/refine_products.yaml +0 -148
  399. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_accountability.yaml +0 -293
  400. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -307
  401. package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -576
  402. package/compliance/cache/3.1.0-beta.7/domains/media-buy/state-machine.yaml +0 -442
  403. package/compliance/cache/3.1.0-beta.7/domains/signals/index.yaml +0 -266
  404. package/compliance/cache/3.1.0-beta.7/domains/sponsored-intelligence/index.yaml +0 -256
  405. package/compliance/cache/3.1.0-beta.7/index.json +0 -356
  406. package/compliance/cache/3.1.0-beta.7/protocols/brand/index.yaml +0 -160
  407. package/compliance/cache/3.1.0-beta.7/protocols/brand/scenarios/distributed_brand_resolution.yaml +0 -415
  408. package/compliance/cache/3.1.0-beta.7/protocols/brand/scenarios/single_side_trust_extension.yaml +0 -454
  409. package/compliance/cache/3.1.0-beta.7/protocols/creative/index.yaml +0 -339
  410. package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/billing_out_of_band.yaml +0 -153
  411. package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -389
  412. package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/native_in_feed.yaml +0 -543
  413. package/compliance/cache/3.1.0-beta.7/protocols/governance/index.yaml +0 -682
  414. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/index.yaml +0 -781
  415. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/audience_buy_flow.yaml +0 -380
  416. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/available_actions.yaml +0 -565
  417. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/billing_finality_delivery.yaml +0 -354
  418. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/canonical_formats.yaml +0 -711
  419. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/clicks_buy_flow.yaml +0 -264
  420. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +0 -344
  421. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -234
  422. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +0 -419
  423. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/creative_reception.yaml +0 -247
  424. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/delivery_reporting.yaml +0 -357
  425. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/dependency_impairment.yaml +0 -633
  426. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -800
  427. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/event_dedup_flow.yaml +0 -399
  428. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -309
  429. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_approved.yaml +0 -214
  430. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_conditions.yaml +0 -199
  431. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_denied.yaml +0 -204
  432. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_denied_recovery.yaml +0 -252
  433. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/invalid_transitions.yaml +0 -289
  434. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
  435. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/inventory_list_targeting.yaml +0 -276
  436. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/measurement_accountability.yaml +0 -244
  437. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +0 -203
  438. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +0 -274
  439. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -500
  440. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/performance_buy_flow.yaml +0 -428
  441. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -470
  442. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/product_signal_targeting.yaml +0 -373
  443. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -399
  444. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -264
  445. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +0 -257
  446. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_audit_observation.yaml +0 -333
  447. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_enforcement.yaml +0 -517
  448. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -294
  449. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/reach_buy_flow.yaml +0 -823
  450. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -360
  451. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/refine_products.yaml +0 -148
  452. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +0 -293
  453. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -307
  454. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -576
  455. package/compliance/cache/3.1.0-beta.7/protocols/media-buy/state-machine.yaml +0 -442
  456. package/compliance/cache/3.1.0-beta.7/protocols/signals/index.yaml +0 -266
  457. package/compliance/cache/3.1.0-beta.7/protocols/sponsored-intelligence/index.yaml +0 -256
  458. package/compliance/cache/3.1.0-beta.7/specialisms/audience-sync/index.yaml +0 -313
  459. package/compliance/cache/3.1.0-beta.7/specialisms/brand-rights/index.yaml +0 -350
  460. package/compliance/cache/3.1.0-beta.7/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -226
  461. package/compliance/cache/3.1.0-beta.7/specialisms/collection-lists/index.yaml +0 -359
  462. package/compliance/cache/3.1.0-beta.7/specialisms/content-standards/index.yaml +0 -572
  463. package/compliance/cache/3.1.0-beta.7/specialisms/creative-ad-server/index.yaml +0 -409
  464. package/compliance/cache/3.1.0-beta.7/specialisms/creative-generative/generative-seller.yaml +0 -807
  465. package/compliance/cache/3.1.0-beta.7/specialisms/creative-generative/index.yaml +0 -758
  466. package/compliance/cache/3.1.0-beta.7/specialisms/creative-template/index.yaml +0 -510
  467. package/compliance/cache/3.1.0-beta.7/specialisms/governance-aware-seller/index.yaml +0 -143
  468. package/compliance/cache/3.1.0-beta.7/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +0 -117
  469. package/compliance/cache/3.1.0-beta.7/specialisms/governance-delivery-monitor/index.yaml +0 -441
  470. package/compliance/cache/3.1.0-beta.7/specialisms/governance-spend-authority/denied.yaml +0 -221
  471. package/compliance/cache/3.1.0-beta.7/specialisms/governance-spend-authority/index.yaml +0 -330
  472. package/compliance/cache/3.1.0-beta.7/specialisms/property-lists/index.yaml +0 -482
  473. package/compliance/cache/3.1.0-beta.7/specialisms/sales-broadcast-tv/index.yaml +0 -738
  474. package/compliance/cache/3.1.0-beta.7/specialisms/sales-catalog-driven/index.yaml +0 -840
  475. package/compliance/cache/3.1.0-beta.7/specialisms/sales-guaranteed/index.yaml +0 -601
  476. package/compliance/cache/3.1.0-beta.7/specialisms/sales-non-guaranteed/index.yaml +0 -546
  477. package/compliance/cache/3.1.0-beta.7/specialisms/sales-proposal-mode/index.yaml +0 -586
  478. package/compliance/cache/3.1.0-beta.7/specialisms/sales-social/index.yaml +0 -919
  479. package/compliance/cache/3.1.0-beta.7/specialisms/signal-marketplace/index.yaml +0 -424
  480. package/compliance/cache/3.1.0-beta.7/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -211
  481. package/compliance/cache/3.1.0-beta.7/specialisms/signal-owned/index.yaml +0 -317
  482. package/compliance/cache/3.1.0-beta.7/specialisms/sponsored-intelligence/index.yaml +0 -59
  483. package/compliance/cache/3.1.0-beta.7/test-kits/acme-outdoor-live.yaml +0 -78
  484. package/compliance/cache/3.1.0-beta.7/test-kits/acme-outdoor.yaml +0 -223
  485. package/compliance/cache/3.1.0-beta.7/test-kits/billing-gate-runner.yaml +0 -115
  486. package/compliance/cache/3.1.0-beta.7/test-kits/bistro-oranje.yaml +0 -126
  487. package/compliance/cache/3.1.0-beta.7/test-kits/distributed-brand-runner.yaml +0 -281
  488. package/compliance/cache/3.1.0-beta.7/test-kits/nova-motors.yaml +0 -262
  489. package/compliance/cache/3.1.0-beta.7/test-kits/osei-natural.yaml +0 -126
  490. package/compliance/cache/3.1.0-beta.7/test-kits/parallel-dispatch-runner.yaml +0 -196
  491. package/compliance/cache/3.1.0-beta.7/test-kits/rate-limit-trip-runner.yaml +0 -172
  492. package/compliance/cache/3.1.0-beta.7/test-kits/signed-requests-runner.yaml +0 -155
  493. package/compliance/cache/3.1.0-beta.7/test-kits/single-side-trust-runner.yaml +0 -294
  494. package/compliance/cache/3.1.0-beta.7/test-kits/substitution-observer-runner.yaml +0 -688
  495. package/compliance/cache/3.1.0-beta.7/test-kits/summit-foods.yaml +0 -125
  496. package/compliance/cache/3.1.0-beta.7/test-kits/webhook-receiver-runner.yaml +0 -265
  497. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/001-minimal-plan.json +0 -43
  498. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/002-full-plan.json +0 -217
  499. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -60
  500. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/004a-human-review-omitted.json +0 -43
  501. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -49
  502. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -53
  503. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -57
  504. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -49
  505. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -53
  506. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/007-unicode-objectives.json +0 -43
  507. package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -65
  508. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/README.md +0 -220
  509. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/canonicalization.json +0 -241
  510. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/keys.json +0 -60
  511. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/001-no-signature-header.json +0 -24
  512. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/002-wrong-tag.json +0 -26
  513. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/003-expired-signature.json +0 -26
  514. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/004-window-too-long.json +0 -26
  515. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/005-alg-not-allowed.json +0 -26
  516. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/006-missing-covered-component.json +0 -26
  517. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/007-missing-content-digest.json +0 -26
  518. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/008-unknown-keyid.json +0 -26
  519. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +0 -27
  520. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/010-content-digest-mismatch.json +0 -33
  521. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/011-malformed-header.json +0 -27
  522. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/012-missing-expires-param.json +0 -26
  523. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/013-expires-le-created.json +0 -27
  524. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/014-missing-nonce-param.json +0 -27
  525. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/015-signature-invalid.json +0 -28
  526. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/016-replayed-nonce.json +0 -35
  527. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/017-key-revoked.json +0 -38
  528. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +0 -28
  529. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/019-signature-without-signature-input.json +0 -26
  530. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/020-rate-abuse.json +0 -34
  531. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +0 -31
  532. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/022-multi-valued-content-type.json +0 -31
  533. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +0 -32
  534. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/024-unquoted-string-param.json +0 -31
  535. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +0 -43
  536. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/026-non-ascii-host.json +0 -31
  537. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +0 -25
  538. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +0 -26
  539. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/001-basic-post.json +0 -30
  540. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -31
  541. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/003-es256-post.json +0 -30
  542. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/004-multiple-signature-labels.json +0 -26
  543. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/005-default-port-stripped.json +0 -30
  544. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/006-dot-segment-path.json +0 -30
  545. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -30
  546. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -30
  547. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +0 -30
  548. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +0 -30
  549. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/011-ipv6-authority.json +0 -30
  550. package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +0 -30
  551. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/README.md +0 -211
  552. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/keys.json +0 -61
  553. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -26
  554. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -26
  555. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -26
  556. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -26
  557. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -26
  558. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -25
  559. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -26
  560. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -26
  561. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -26
  562. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -26
  563. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -25
  564. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -26
  565. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -26
  566. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -26
  567. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -26
  568. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -37
  569. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -32
  570. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -33
  571. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -32
  572. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -41
  573. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -26
  574. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/001-basic-post.json +0 -24
  575. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/002-es256-post.json +0 -24
  576. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -24
  577. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -24
  578. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -24
  579. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -24
  580. package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -25
  581. package/compliance/cache/3.1.0-beta.7/universal/billing-gate-dispatch.yaml +0 -450
  582. package/compliance/cache/3.1.0-beta.7/universal/canonical-format-validate-input.yaml +0 -640
  583. package/compliance/cache/3.1.0-beta.7/universal/capability-discovery.yaml +0 -125
  584. package/compliance/cache/3.1.0-beta.7/universal/collection-lists-pagination-integrity.yaml +0 -306
  585. package/compliance/cache/3.1.0-beta.7/universal/comply-controller-mode-gate.yaml +0 -141
  586. package/compliance/cache/3.1.0-beta.7/universal/content-standards-pagination-integrity.yaml +0 -326
  587. package/compliance/cache/3.1.0-beta.7/universal/deterministic-testing.yaml +0 -1430
  588. package/compliance/cache/3.1.0-beta.7/universal/error-compliance-signals.yaml +0 -377
  589. package/compliance/cache/3.1.0-beta.7/universal/error-compliance.yaml +0 -528
  590. package/compliance/cache/3.1.0-beta.7/universal/fictional-entities.yaml +0 -307
  591. package/compliance/cache/3.1.0-beta.7/universal/get-media-buys-pagination-integrity.yaml +0 -160
  592. package/compliance/cache/3.1.0-beta.7/universal/get-signals-pagination-integrity.yaml +0 -211
  593. package/compliance/cache/3.1.0-beta.7/universal/idempotency.yaml +0 -861
  594. package/compliance/cache/3.1.0-beta.7/universal/notification-config-event-scope.yaml +0 -119
  595. package/compliance/cache/3.1.0-beta.7/universal/notification-config-lifecycle.yaml +0 -337
  596. package/compliance/cache/3.1.0-beta.7/universal/notification-config-rejections.yaml +0 -107
  597. package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity-creative-formats.yaml +0 -265
  598. package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity-list-accounts.yaml +0 -245
  599. package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity.yaml +0 -263
  600. package/compliance/cache/3.1.0-beta.7/universal/property-lists-pagination-integrity.yaml +0 -307
  601. package/compliance/cache/3.1.0-beta.7/universal/read-tool-idempotency.yaml +0 -405
  602. package/compliance/cache/3.1.0-beta.7/universal/runner-output-contract.yaml +0 -1266
  603. package/compliance/cache/3.1.0-beta.7/universal/schema-validation-signals.yaml +0 -181
  604. package/compliance/cache/3.1.0-beta.7/universal/schema-validation.yaml +0 -548
  605. package/compliance/cache/3.1.0-beta.7/universal/security.yaml +0 -539
  606. package/compliance/cache/3.1.0-beta.7/universal/signed-requests.yaml +0 -217
  607. package/compliance/cache/3.1.0-beta.7/universal/stale-response-advisory.yaml +0 -295
  608. package/compliance/cache/3.1.0-beta.7/universal/storyboard-schema.yaml +0 -2136
  609. package/compliance/cache/3.1.0-beta.7/universal/v3-envelope-integrity.yaml +0 -117
  610. package/compliance/cache/3.1.0-beta.7/universal/version-negotiation.yaml +0 -130
  611. package/compliance/cache/3.1.0-beta.7/universal/webhook-emission.yaml +0 -411
  612. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-bulk-webhooks.yaml +0 -82
  613. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-product-webhooks.yaml +0 -83
  614. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-products.yaml +0 -151
  615. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-signal-webhooks.yaml +0 -83
  616. package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-signals.yaml +0 -149
  617. package/dist/lib/types/v3-1-beta/index.d.mts +0 -1
  618. package/dist/lib/types/v3-1-beta/index.d.ts +0 -1
  619. package/dist/lib/types/v3-1-beta/index.mjs +0 -1
  620. package/dist/lib/types/v3-1-beta/tools.generated.d.mts +0 -26788
  621. package/dist/lib/types/v3-1-beta/tools.generated.d.ts +0 -26788
  622. /package/dist/lib/{types/v3-1-beta/tools.generated.mjs → media-buy/action-types.mjs} +0 -0
@@ -1,633 +0,0 @@
1
- id: media_buy_seller/dependency_impairment
2
- version: "2.0.0"
3
- title: "Dependency impairment end-to-end — resource transition propagates to media buy health"
4
- category: media_buy_seller
5
- summary: "Forces a creative from approved → rejected on a non-terminal media buy, verifies the buy reflects health: impaired with a matching impairments[] entry, and recovers via assignment swap to a different creative (canonical recovery vector — re-approval of the same creative_id is uncommon in production)."
6
- track: media_buy
7
- required_tools:
8
- - get_products
9
- - create_media_buy
10
- - get_media_buys
11
- - sync_creatives
12
- - update_media_buy
13
- - comply_test_controller
14
-
15
- narrative: |
16
- Per the dependency-impairment surface ([adcp#2855](https://github.com/adcontextprotocol/adcp/issues/2855)
17
- and `core/impairment.json`), sellers MUST propagate resource-state transitions
18
- into the affected media buys. The compliance contract is `impairment.coherence`
19
- (adcp#2859) — a cross-resource invariant tying `media_buy.impairments[]` to the
20
- underlying resource state. The runner registers and grades this invariant via
21
- adcp-client#1801; this storyboard is what makes it run end-to-end instead of
22
- grading not_applicable.
23
-
24
- Five phases, exercised entirely against the comply test controller's sandbox:
25
-
26
- 1. **setup** — discover a product, create an active media buy, sync a creative
27
- and assign it to the buy's package. Capture media_buy_id, package_id, and
28
- creative_id for the rest of the run.
29
- 2. **baseline_healthy** — read the buy via get_media_buys. `health` MUST be
30
- `ok`, and `impairments[]` MUST be empty or absent. This establishes the
31
- pre-transition snapshot the impairment.coherence runner ledgers against.
32
- 3. **transition_offline** — call comply_test_controller force_creative_status
33
- to flip the creative to `rejected` with a rejection_reason. This is the
34
- resource-state transition the runner observes.
35
- 4. **verify_impaired** — read the buy again. `health` MUST be `impaired`, and
36
- `impairments[]` MUST contain an entry whose resource_type is `creative`,
37
- resource_id matches the rejected creative, package_ids contains the
38
- creative's package, transition.to is `rejected`, and the required
39
- fields (impairment_id, reason_code, observed_at) are populated. This
40
- closes the forward rule (every entry references a currently-offline
41
- resource) and the inverse rule (the offline resource referenced by a
42
- non-terminal buy appears in impairments[]) for this transition, and
43
- captures the health-iff rule in the `impaired` direction.
44
- 5. **swap_recovery** — sync a second creative (B, approved) and use
45
- `update_media_buy` with `packages[].creative_assignments` (replacement
46
- semantics — the new list fully replaces the old) to swap the package's
47
- binding from creative A (still rejected in the library) to creative B
48
- (approved). Read the buy and assert `health: ok` with `impairments[]`
49
- empty/absent. This is the canonical recovery vector in production —
50
- buyers rarely re-approve a rejected creative on the same ID; they swap
51
- to a replacement asset. Creative A's library status stays `rejected`,
52
- but it is no longer a dependency of any package on this buy, so the
53
- impairment clears.
54
-
55
- A seller that transitions a creative without propagating to the buy fails
56
- phase 4. A seller that holds stale `impairments[]` after the swap (where
57
- creative A is no longer referenced) fails phase 5. A seller that
58
- maintains a stale `health: impaired` with empty `impairments[]` (or vice
59
- versa) on a non-terminal buy fails the impairment.coherence runner
60
- invariant alongside the per-step assertions.
61
-
62
- **Same-ID re-approval as recovery vector.** Some sellers' review flows do
63
- support `rejected → approved` on the same creative_id (post-policy review
64
- reinstatement, takedown reversed). That's covered by the opt-in sibling
65
- scenario `media_buy_seller/dependency_impairment_reapprove_recovery`
66
- (filed at adcp#4682 as a secondary variant). Sellers without same-ID
67
- re-approval grade that sibling not_applicable; this scenario (swap) is
68
- the universal recovery path.
69
-
70
- **Capability gating.** Sellers whose
71
- `capabilities.media_buy.propagation_surfaces` does NOT include
72
- `"snapshot"` (e.g., `["webhook"]` or `["out_of_band"]`) grade this
73
- whole scenario not_applicable — their compliance contract is the
74
- webhook channel or the offline agreement, not the snapshot. Sellers
75
- declaring `["snapshot", "webhook"]` are graded on the snapshot surface
76
- here and on the webhook contract separately. See lifecycle.mdx §
77
- Compliance for the surface declaration.
78
-
79
- Audience-track and catalog-track variants are out of scope here — the
80
- comply test controller only ships force_creative_status today; the
81
- force_audience_status / force_catalog_item_status surface lands in a
82
- follow-up.
83
-
84
- agent:
85
- interaction_model: media_buy_seller
86
- capabilities:
87
- - sells_media
88
- - has_creative_library
89
- examples:
90
- - "Any media buy seller that exposes comply_test_controller and propagates creative state to buy.impairments[]"
91
-
92
- caller:
93
- role: buyer_agent
94
- example: "Pinnacle Agency (buyer)"
95
-
96
- prerequisites:
97
- description: |
98
- Seller MUST expose comply_test_controller with force_creative_status support.
99
- Sellers without the controller (or without force_creative_status) grade this
100
- scenario not_applicable — the cross-resource exercise requires deterministic
101
- resource transitions the buyer can drive directly.
102
- test_kit: "test-kits/acme-outdoor.yaml"
103
-
104
- phases:
105
- - id: setup
106
- title: "Create an active buy with a creative assignment"
107
- narrative: |
108
- Discover a product, create a media buy, sync one creative into the library
109
- with an inline assignment to the buy's first package. The buy's `health`
110
- starts as `ok` (default) and `impairments[]` is empty.
111
-
112
- steps:
113
- - id: get_products_brief
114
- title: "Discover a product"
115
- task: get_products
116
- schema_ref: "media-buy/get-products-request.json"
117
- response_schema_ref: "media-buy/get-products-response.json"
118
- doc_ref: "/media-buy/task-reference/get_products"
119
- comply_scenario: full_sales_flow
120
- stateful: false
121
- expected: |
122
- Return at least one product with a pricing option and at least one format_id.
123
- sample_request:
124
- buying_mode: "brief"
125
- brief: "Display inventory on outdoor lifestyle content for dependency-impairment testing."
126
- filters:
127
- is_fixed_price: true
128
- account:
129
- brand:
130
- domain: "acmeoutdoor.example"
131
- operator: "pinnacle-agency.example"
132
- context:
133
- correlation_id: "dependency_impairment--get_products"
134
- context_outputs:
135
- - path: "products[0].product_id"
136
- key: "product_id"
137
- - path: "products[0].pricing_options[0].pricing_option_id"
138
- key: "pricing_option_id"
139
- - path: "products[0].format_ids[0].agent_url"
140
- key: "format_agent_url"
141
- - path: "products[0].format_ids[0].id"
142
- key: "format_id"
143
- validations:
144
- - check: response_schema
145
- description: "Response matches get-products-response.json schema"
146
- - check: field_present
147
- path: "products[0].format_ids[0].id"
148
- description: "Product exposes at least one format_id for creative sync"
149
- - check: field_present
150
- path: "products[0].pricing_options[0].fixed_price"
151
- description: "The captured pricing option is fixed-price; fixed-price storyboards do not send bid_price"
152
-
153
- - id: create_buy
154
- title: "Create an active media buy"
155
- task: create_media_buy
156
- schema_ref: "media-buy/create-media-buy-request.json"
157
- response_schema_ref: "media-buy/create-media-buy-response.json"
158
- doc_ref: "/media-buy/task-reference/create_media_buy"
159
- comply_scenario: create_media_buy
160
- stateful: true
161
- expected: |
162
- Media buy created with media_buy_id and at least one package. Flight is
163
- forward-dated; status is pending_creatives or pending_start.
164
-
165
- sample_request:
166
- brand:
167
- domain: "acmeoutdoor.example"
168
- account:
169
- brand:
170
- domain: "acmeoutdoor.example"
171
- operator: "pinnacle-agency.example"
172
- idempotency_key: "$generate:uuid_v4#dependency_impairment_create_buy"
173
- start_time: "2026-11-01T00:00:00Z"
174
- end_time: "2026-11-30T23:59:59Z"
175
- packages:
176
- - product_id: "$context.product_id"
177
- budget: 5000
178
- pricing_option_id: "$context.pricing_option_id"
179
- context:
180
- correlation_id: "dependency_impairment--create_buy"
181
- context_outputs:
182
- - path: "media_buy_id"
183
- key: "media_buy_id"
184
- - path: "packages[0].package_id"
185
- key: "package_id"
186
- validations:
187
- - check: response_schema
188
- description: "Response matches create-media-buy-response.json schema"
189
- - check: field_present
190
- path: "media_buy_id"
191
- description: "Seller returns media_buy_id"
192
- - check: field_present
193
- path: "packages[0].package_id"
194
- description: "Seller returns package_id"
195
-
196
- - id: sync_creative
197
- title: "Sync a creative into the library"
198
- narrative: |
199
- Sync one creative into the seller's library. The creative enters
200
- through the seller's review flow but is not yet bound to a package —
201
- the next step does the assignment via update_media_buy.
202
- task: sync_creatives
203
- schema_ref: "creative/sync-creatives-request.json"
204
- response_schema_ref: "creative/sync-creatives-response.json"
205
- doc_ref: "/creative/task-reference/sync_creatives"
206
- comply_scenario: creative_sync
207
- stateful: true
208
- expected: |
209
- Creative accepted (action: created). Status is processing,
210
- pending_review, or approved.
211
-
212
- sample_request:
213
- account:
214
- brand:
215
- domain: "acmeoutdoor.example"
216
- operator: "pinnacle-agency.example"
217
- creatives:
218
- - creative_id: "acme_dep_banner_001"
219
- name: "Acme Outdoor dependency-test banner"
220
- format_id:
221
- agent_url: "$context.format_agent_url"
222
- id: "$context.format_id"
223
- assets:
224
- image:
225
- asset_type: "image"
226
- url: "https://cdn.pinnacle-agency.example/acme-dep-banner.png"
227
- width: 300
228
- height: 250
229
- mime_type: "image/png"
230
- idempotency_key: "$generate:uuid_v4#dependency_impairment_sync_creative"
231
- context:
232
- correlation_id: "dependency_impairment--sync_creative"
233
- context_outputs:
234
- - path: "creatives[0].creative_id"
235
- key: "creative_id"
236
- validations:
237
- - check: response_schema
238
- description: "Response matches sync-creatives-response.json schema"
239
- - check: field_present
240
- path: "creatives[0].creative_id"
241
- description: "Response echoes back the buyer-supplied creative_id"
242
-
243
- - id: assign_creative_to_package
244
- title: "Bind the creative to the package via update_media_buy"
245
- narrative: |
246
- The assignment is what makes the creative a dependency of the media
247
- buy — impairment.coherence ties the propagation rule to the creative
248
- ↔ package binding. The spec defines two equal canonical surfaces for
249
- the binding: inline `sync_creatives.assignments[]` and
250
- `update_media_buy.packages[].creative_assignments` (replacement
251
- semantics). This scenario uses the update_media_buy surface; the
252
- impairment contract is identical regardless of which path the buyer
253
- chose to establish the binding.
254
- task: update_media_buy
255
- schema_ref: "media-buy/update-media-buy-request.json"
256
- response_schema_ref: "media-buy/update-media-buy-response.json"
257
- doc_ref: "/media-buy/task-reference/update_media_buy"
258
- stateful: true
259
- expected: |
260
- Update accepted. The package's creative_assignments now contains
261
- the synced creative.
262
-
263
- sample_request:
264
- account:
265
- brand:
266
- domain: "acmeoutdoor.example"
267
- operator: "pinnacle-agency.example"
268
- media_buy_id: "$context.media_buy_id"
269
- packages:
270
- - package_id: "$context.package_id"
271
- creative_assignments:
272
- - creative_id: "acme_dep_banner_001"
273
- idempotency_key: "$generate:uuid_v4#dependency_impairment_assign_creative"
274
- context:
275
- correlation_id: "dependency_impairment--assign_creative"
276
- validations:
277
- - check: response_schema
278
- description: "Response matches update-media-buy-response.json schema"
279
-
280
- - id: force_creative_approved
281
- title: "Force the creative to approved baseline"
282
- narrative: |
283
- Use comply_test_controller force_creative_status to seed the creative
284
- at `approved` so the next phase observes a clean approved → rejected
285
- transition. Sellers with their own deterministic review flow may
286
- already land at approved; this call is the safe baseline that lets
287
- the rest of the storyboard depend on a known starting state.
288
- task: comply_test_controller
289
- schema_ref: "compliance/comply-test-controller-request.json"
290
- response_schema_ref: "compliance/comply-test-controller-response.json"
291
- doc_ref: "/building/implementation/comply-test-controller"
292
- comply_scenario: full_sales_flow
293
- stateful: true
294
- expected: |
295
- success: true. Creative is now at status: approved on the seller side.
296
-
297
- sample_request:
298
- account:
299
- sandbox: true
300
- scenario: "force_creative_status"
301
- params:
302
- creative_id: "acme_dep_banner_001"
303
- status: "approved"
304
- context:
305
- correlation_id: "dependency_impairment--force_creative_approved"
306
- validations:
307
- - check: response_schema
308
- description: "Response matches comply-test-controller-response.json schema"
309
- - check: field_value
310
- path: "success"
311
- allowed_values: [true]
312
- description: "Controller acknowledged the directive"
313
-
314
- - id: baseline_healthy
315
- title: "Baseline: buy reads as healthy, no impairments"
316
- narrative: |
317
- With the creative at approved and assigned, the buy MUST report
318
- `health: ok` and an empty (or absent) `impairments[]`. This is the
319
- pre-transition snapshot impairment.coherence ledgers against.
320
-
321
- steps:
322
- - id: get_buy_baseline
323
- title: "Read the buy — health: ok, impairments[] empty"
324
- task: get_media_buys
325
- schema_ref: "media-buy/get-media-buys-request.json"
326
- response_schema_ref: "media-buy/get-media-buys-response.json"
327
- doc_ref: "/media-buy/task-reference/get_media_buys"
328
- comply_scenario: media_buy_lifecycle
329
- stateful: true
330
- expected: |
331
- The buy is returned with health: ok and impairments[] empty or absent.
332
-
333
- sample_request:
334
- account:
335
- brand:
336
- domain: "acmeoutdoor.example"
337
- operator: "pinnacle-agency.example"
338
- media_buy_ids:
339
- - "$context.media_buy_id"
340
- context:
341
- correlation_id: "dependency_impairment--get_buy_baseline"
342
- validations:
343
- - check: response_schema
344
- description: "Response matches get-media-buys-response.json schema"
345
- - check: field_value
346
- path: "media_buys[0].media_buy_id"
347
- value: "$context.media_buy_id"
348
- description: "Seller returns the buy by media_buy_id"
349
- - check: field_value
350
- path: "media_buys[0].health"
351
- allowed_values: ["ok"]
352
- description: "Buy health is ok in the baseline snapshot (health-iff rule, ok direction)"
353
- - check: field_value_or_absent
354
- path: "media_buys[0].impairments"
355
- value: []
356
- description: "impairments[] is empty (or absent) in the baseline — no resources are offline yet"
357
-
358
- - id: transition_offline
359
- title: "Force the creative to rejected"
360
- narrative: |
361
- The seller transitions the creative from approved → rejected via
362
- comply_test_controller. This is the resource-state transition that the
363
- seller MUST propagate to every non-terminal buy referencing the creative.
364
-
365
- steps:
366
- - id: force_creative_rejected
367
- title: "comply_test_controller force_creative_status → rejected"
368
- task: comply_test_controller
369
- schema_ref: "compliance/comply-test-controller-request.json"
370
- response_schema_ref: "compliance/comply-test-controller-response.json"
371
- doc_ref: "/building/implementation/comply-test-controller"
372
- comply_scenario: creative_lifecycle
373
- stateful: true
374
- expected: |
375
- success: true. Creative is now at status: rejected. The seller has
376
- observed the transition; the next get_media_buys read MUST reflect
377
- the impairment on the affected buy.
378
-
379
- sample_request:
380
- account:
381
- sandbox: true
382
- scenario: "force_creative_status"
383
- params:
384
- creative_id: "acme_dep_banner_001"
385
- status: "rejected"
386
- rejection_reason: "Dependency-impairment scenario: forcing approved → rejected to exercise impairment.coherence."
387
- context:
388
- correlation_id: "dependency_impairment--force_creative_rejected"
389
- validations:
390
- - check: response_schema
391
- description: "Response matches comply-test-controller-response.json schema"
392
- - check: field_value
393
- path: "success"
394
- allowed_values: [true]
395
- description: "Controller acknowledged the rejection directive"
396
-
397
- - id: verify_impaired
398
- title: "Buy reads as impaired with a matching impairments[] entry"
399
- narrative: |
400
- After the rejection, the buy MUST report `health: impaired` and
401
- `impairments[]` MUST contain an entry whose resource_type is `creative`,
402
- resource_id matches the rejected creative, package_ids contains the
403
- creative's package, and transition.to is `rejected`. This closes the
404
- forward + inverse rules for this transition; the impairment.coherence
405
- invariant grades the cross-resource match.
406
-
407
- steps:
408
- - id: get_buy_impaired
409
- title: "Read the buy — health: impaired, impairment entry present"
410
- task: get_media_buys
411
- schema_ref: "media-buy/get-media-buys-request.json"
412
- response_schema_ref: "media-buy/get-media-buys-response.json"
413
- doc_ref: "/media-buy/task-reference/get_media_buys"
414
- comply_scenario: media_buy_lifecycle
415
- stateful: true
416
- expected: |
417
- The buy is returned with:
418
- - health: impaired
419
- - impairments[] containing at least one entry where
420
- resource_type: creative, resource_id: acme_dep_banner_001,
421
- package_ids includes the buy's package, transition.to: rejected.
422
-
423
- sample_request:
424
- account:
425
- brand:
426
- domain: "acmeoutdoor.example"
427
- operator: "pinnacle-agency.example"
428
- media_buy_ids:
429
- - "$context.media_buy_id"
430
- context:
431
- correlation_id: "dependency_impairment--get_buy_impaired"
432
- validations:
433
- - check: response_schema
434
- description: "Response matches get-media-buys-response.json schema"
435
- - check: field_value
436
- path: "media_buys[0].health"
437
- allowed_values: ["impaired"]
438
- description: "Buy health flipped to impaired after the creative was rejected (health-iff rule, impaired direction)"
439
- - check: field_present
440
- path: "media_buys[0].impairments[0]"
441
- description: "Buy reports at least one impairment entry (inverse rule)"
442
- - check: field_value
443
- path: "media_buys[0].impairments[0].resource_type"
444
- allowed_values: ["creative"]
445
- description: "Impairment entry's resource_type is creative"
446
- - check: field_value
447
- path: "media_buys[0].impairments[0].resource_id"
448
- value: "acme_dep_banner_001"
449
- description: "Impairment entry's resource_id matches the rejected creative (forward rule)"
450
- - check: field_value
451
- path: "media_buys[0].impairments[0].package_ids[0]"
452
- value: "$context.package_id"
453
- description: "Impairment entry's package_ids[] contains the buy's package — without this, a seller could list a different package and still pass the impairment-present check"
454
- - check: field_value
455
- path: "media_buys[0].impairments[0].transition.to"
456
- allowed_values: ["rejected"]
457
- description: "Impairment entry's transition.to is rejected"
458
- - check: field_present
459
- path: "media_buys[0].impairments[0].impairment_id"
460
- description: "Impairment carries the required impairment_id (notification_id for state-event webhooks; see snapshot-and-log Rule 1)"
461
- - check: field_present
462
- path: "media_buys[0].impairments[0].reason_code"
463
- description: "Impairment carries a reason_code (required per impairment.json) — buyer needs this to route remediation"
464
- - check: field_present
465
- path: "media_buys[0].impairments[0].observed_at"
466
- description: "Impairment carries observed_at (required per impairment.json) — buyer needs this to reconcile webhook ordering against the snapshot"
467
-
468
- - id: swap_recovery
469
- title: "Recover via assignment swap — different creative replaces the rejected one"
470
- narrative: |
471
- Sync a second creative (B) into the library as approved, then use
472
- update_media_buy to swap the package's creative_assignments from
473
- creative A (still rejected) to creative B. Re-read the buy and verify
474
- health returns to ok with impairments[] cleared. Creative A's library
475
- status stays rejected — the seller is NOT required to re-approve it
476
- — but A is no longer a dependency of any package on this buy, so the
477
- impairment clears.
478
-
479
- This is the production-canonical recovery path. Buyers rarely re-approve
480
- a rejected creative on the same ID; they ship a corrected asset under
481
- a new ID and update assignments. The same-ID re-approval path is
482
- covered separately by an opt-in sibling scenario (#4682 secondary
483
- variant) for sellers whose review flow supports it.
484
-
485
- steps:
486
- - id: sync_replacement_creative
487
- title: "Sync replacement creative B (approved baseline)"
488
- narrative: |
489
- Add a second creative to the library WITHOUT assigning it to the
490
- package yet. The package's current binding is still to creative A
491
- (rejected). The next step uses update_media_buy to do the swap.
492
- task: sync_creatives
493
- schema_ref: "creative/sync-creatives-request.json"
494
- response_schema_ref: "creative/sync-creatives-response.json"
495
- doc_ref: "/creative/task-reference/sync_creatives"
496
- comply_scenario: creative_sync
497
- stateful: true
498
- expected: |
499
- Replacement creative accepted (action: created). No assignment yet
500
- — the package's binding remains on creative A until the next step.
501
-
502
- sample_request:
503
- account:
504
- brand:
505
- domain: "acmeoutdoor.example"
506
- operator: "pinnacle-agency.example"
507
- creatives:
508
- - creative_id: "acme_dep_banner_002"
509
- name: "Acme Outdoor dependency-test replacement banner"
510
- format_id:
511
- agent_url: "$context.format_agent_url"
512
- id: "$context.format_id"
513
- assets:
514
- image:
515
- asset_type: "image"
516
- url: "https://cdn.pinnacle-agency.example/acme-dep-banner-replacement.png"
517
- width: 300
518
- height: 250
519
- mime_type: "image/png"
520
- idempotency_key: "$generate:uuid_v4#dependency_impairment_sync_replacement"
521
- context:
522
- correlation_id: "dependency_impairment--sync_replacement_creative"
523
- validations:
524
- - check: response_schema
525
- description: "Response matches sync-creatives-response.json schema"
526
- - check: field_present
527
- path: "creatives[0].creative_id"
528
- description: "Replacement creative_id returned"
529
-
530
- - id: force_replacement_approved
531
- title: "Force replacement creative B to approved"
532
- narrative: |
533
- Baseline creative B at approved via comply_test_controller so the
534
- swap binds the package to an in-policy creative. Sellers whose
535
- deterministic flow already lands B at approved on sync grade this
536
- step a no-op; the call is the safe seed.
537
- task: comply_test_controller
538
- schema_ref: "compliance/comply-test-controller-request.json"
539
- response_schema_ref: "compliance/comply-test-controller-response.json"
540
- doc_ref: "/building/implementation/comply-test-controller"
541
- comply_scenario: creative_lifecycle
542
- stateful: true
543
- expected: |
544
- success: true. Replacement creative is now at status: approved.
545
-
546
- sample_request:
547
- account:
548
- sandbox: true
549
- scenario: "force_creative_status"
550
- params:
551
- creative_id: "acme_dep_banner_002"
552
- status: "approved"
553
- context:
554
- correlation_id: "dependency_impairment--force_replacement_approved"
555
- validations:
556
- - check: response_schema
557
- description: "Response matches comply-test-controller-response.json schema"
558
- - check: field_value
559
- path: "success"
560
- allowed_values: [true]
561
- description: "Controller acknowledged the directive"
562
-
563
- - id: swap_assignment
564
- title: "Swap the package's creative_assignments — replacement semantics"
565
- narrative: |
566
- update_media_buy with packages[].creative_assignments uses
567
- replacement semantics (per package-update.json) — the new list
568
- fully replaces the old. Provide ONLY creative B; creative A is
569
- unbound from the package and is no longer a dependency of this
570
- buy. The library's reject status on A is preserved.
571
- task: update_media_buy
572
- schema_ref: "media-buy/update-media-buy-request.json"
573
- response_schema_ref: "media-buy/update-media-buy-response.json"
574
- doc_ref: "/media-buy/task-reference/update_media_buy"
575
- comply_scenario: media_buy_lifecycle
576
- stateful: true
577
- expected: |
578
- The seller accepts the package update and the next get_media_buys
579
- reflects the new assignment with the impairment cleared.
580
-
581
- sample_request:
582
- account:
583
- brand:
584
- domain: "acmeoutdoor.example"
585
- operator: "pinnacle-agency.example"
586
- media_buy_id: "$context.media_buy_id"
587
- packages:
588
- - package_id: "$context.package_id"
589
- creative_assignments:
590
- - creative_id: "acme_dep_banner_002"
591
- idempotency_key: "$generate:uuid_v4#dependency_impairment_swap_assignment"
592
- context:
593
- correlation_id: "dependency_impairment--swap_assignment"
594
- validations:
595
- - check: response_schema
596
- description: "Response matches update-media-buy-response.json schema"
597
-
598
- - id: get_buy_recovered
599
- title: "Read the buy — health: ok, impairments[] cleared via swap"
600
- task: get_media_buys
601
- schema_ref: "media-buy/get-media-buys-request.json"
602
- response_schema_ref: "media-buy/get-media-buys-response.json"
603
- doc_ref: "/media-buy/task-reference/get_media_buys"
604
- comply_scenario: media_buy_lifecycle
605
- stateful: true
606
- expected: |
607
- health: ok, impairments[] empty/absent. Creative A is still
608
- rejected in the library (verifiable separately via list_creatives)
609
- but is no longer assigned to the package, so the impairment
610
- clears. A non-empty impairments[] here indicates the seller is
611
- holding stale state — the assignment swap should have removed
612
- creative A as a buy dependency.
613
-
614
- sample_request:
615
- account:
616
- brand:
617
- domain: "acmeoutdoor.example"
618
- operator: "pinnacle-agency.example"
619
- media_buy_ids:
620
- - "$context.media_buy_id"
621
- context:
622
- correlation_id: "dependency_impairment--get_buy_recovered"
623
- validations:
624
- - check: response_schema
625
- description: "Response matches get-media-buys-response.json schema"
626
- - check: field_value
627
- path: "media_buys[0].health"
628
- allowed_values: ["ok"]
629
- description: "Buy health returned to ok after assignment swap (health-iff rule, ok direction)"
630
- - check: field_value_or_absent
631
- path: "media_buys[0].impairments"
632
- value: []
633
- description: "impairments[] is empty (or absent) — seller cleared the stale A-entry when A stopped being a dependency. health-iff biconditional would fail with health: ok and a non-empty impairments[]."