@adcp/sdk 7.10.2 → 7.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (305) hide show
  1. package/compliance/cache/3.1.0-rc.2/domains/brand/index.yaml +160 -0
  2. package/compliance/cache/3.1.0-rc.2/domains/brand/scenarios/distributed_brand_resolution.yaml +415 -0
  3. package/compliance/cache/3.1.0-rc.2/domains/brand/scenarios/single_side_trust_extension.yaml +454 -0
  4. package/compliance/cache/3.1.0-rc.2/domains/creative/index.yaml +339 -0
  5. package/compliance/cache/3.1.0-rc.2/domains/creative/scenarios/billing_out_of_band.yaml +153 -0
  6. package/compliance/cache/3.1.0-rc.2/domains/creative/scenarios/canonical_supported_formats.yaml +212 -0
  7. package/compliance/cache/3.1.0-rc.2/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +389 -0
  8. package/compliance/cache/3.1.0-rc.2/domains/creative/scenarios/native_in_feed.yaml +543 -0
  9. package/compliance/cache/3.1.0-rc.2/domains/governance/index.yaml +682 -0
  10. package/compliance/cache/3.1.0-rc.2/domains/media-buy/index.yaml +789 -0
  11. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/audience_buy_flow.yaml +380 -0
  12. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/available_actions.yaml +565 -0
  13. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/billing_finality_delivery.yaml +354 -0
  14. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/canonical_formats.yaml +861 -0
  15. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/clicks_buy_flow.yaml +264 -0
  16. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/completed_views_buy_flow.yaml +344 -0
  17. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/create_media_buy_async.yaml +234 -0
  18. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +419 -0
  19. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/creative_reception.yaml +247 -0
  20. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/delivery_reporting.yaml +357 -0
  21. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/dependency_impairment.yaml +633 -0
  22. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/dependency_impairment_cardinality.yaml +800 -0
  23. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/event_dedup_flow.yaml +399 -0
  24. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +309 -0
  25. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/governance_approved.yaml +214 -0
  26. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/governance_conditions.yaml +199 -0
  27. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/governance_denied.yaml +204 -0
  28. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/governance_denied_recovery.yaml +252 -0
  29. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/invalid_transitions.yaml +289 -0
  30. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/inventory_list_no_match.yaml +148 -0
  31. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/inventory_list_targeting.yaml +276 -0
  32. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/measurement_accountability.yaml +244 -0
  33. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/measurement_terms_rejected.yaml +203 -0
  34. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/package_correlation_legacy_fallback.yaml +113 -0
  35. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/pending_creatives_to_start.yaml +292 -0
  36. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +500 -0
  37. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/performance_buy_flow.yaml +428 -0
  38. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +470 -0
  39. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/product_signal_targeting.yaml +373 -0
  40. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/proposal_finalize.yaml +399 -0
  41. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +264 -0
  42. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/proposal_not_found_errors.yaml +257 -0
  43. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/provenance_audit_observation.yaml +333 -0
  44. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/provenance_enforcement.yaml +517 -0
  45. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/provenance_truth_of_claim.yaml +294 -0
  46. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/reach_buy_flow.yaml +823 -0
  47. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +360 -0
  48. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/refine_products.yaml +148 -0
  49. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/vendor_metric_accountability.yaml +293 -0
  50. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +307 -0
  51. package/compliance/cache/3.1.0-rc.2/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +576 -0
  52. package/compliance/cache/3.1.0-rc.2/domains/media-buy/state-machine.yaml +442 -0
  53. package/compliance/cache/3.1.0-rc.2/domains/signals/index.yaml +266 -0
  54. package/compliance/cache/3.1.0-rc.2/domains/sponsored-intelligence/index.yaml +256 -0
  55. package/compliance/cache/3.1.0-rc.2/index.json +356 -0
  56. package/compliance/cache/3.1.0-rc.2/protocols/brand/index.yaml +160 -0
  57. package/compliance/cache/3.1.0-rc.2/protocols/brand/scenarios/distributed_brand_resolution.yaml +415 -0
  58. package/compliance/cache/3.1.0-rc.2/protocols/brand/scenarios/single_side_trust_extension.yaml +454 -0
  59. package/compliance/cache/3.1.0-rc.2/protocols/creative/index.yaml +339 -0
  60. package/compliance/cache/3.1.0-rc.2/protocols/creative/scenarios/billing_out_of_band.yaml +153 -0
  61. package/compliance/cache/3.1.0-rc.2/protocols/creative/scenarios/canonical_supported_formats.yaml +212 -0
  62. package/compliance/cache/3.1.0-rc.2/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +389 -0
  63. package/compliance/cache/3.1.0-rc.2/protocols/creative/scenarios/native_in_feed.yaml +543 -0
  64. package/compliance/cache/3.1.0-rc.2/protocols/governance/index.yaml +682 -0
  65. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/index.yaml +789 -0
  66. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/audience_buy_flow.yaml +380 -0
  67. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/available_actions.yaml +565 -0
  68. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/billing_finality_delivery.yaml +354 -0
  69. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/canonical_formats.yaml +861 -0
  70. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/clicks_buy_flow.yaml +264 -0
  71. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +344 -0
  72. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/create_media_buy_async.yaml +234 -0
  73. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +419 -0
  74. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/creative_reception.yaml +247 -0
  75. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/delivery_reporting.yaml +357 -0
  76. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/dependency_impairment.yaml +633 -0
  77. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/dependency_impairment_cardinality.yaml +800 -0
  78. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/event_dedup_flow.yaml +399 -0
  79. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +309 -0
  80. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/governance_approved.yaml +214 -0
  81. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/governance_conditions.yaml +199 -0
  82. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/governance_denied.yaml +204 -0
  83. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/governance_denied_recovery.yaml +252 -0
  84. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/invalid_transitions.yaml +289 -0
  85. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/inventory_list_no_match.yaml +148 -0
  86. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/inventory_list_targeting.yaml +276 -0
  87. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/measurement_accountability.yaml +244 -0
  88. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +203 -0
  89. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/package_correlation_legacy_fallback.yaml +113 -0
  90. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +292 -0
  91. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +500 -0
  92. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/performance_buy_flow.yaml +428 -0
  93. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +470 -0
  94. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/product_signal_targeting.yaml +373 -0
  95. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/proposal_finalize.yaml +399 -0
  96. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +264 -0
  97. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +257 -0
  98. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/provenance_audit_observation.yaml +333 -0
  99. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/provenance_enforcement.yaml +517 -0
  100. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/provenance_truth_of_claim.yaml +294 -0
  101. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/reach_buy_flow.yaml +823 -0
  102. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +360 -0
  103. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/refine_products.yaml +148 -0
  104. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +293 -0
  105. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +307 -0
  106. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +576 -0
  107. package/compliance/cache/3.1.0-rc.2/protocols/media-buy/state-machine.yaml +442 -0
  108. package/compliance/cache/3.1.0-rc.2/protocols/signals/index.yaml +266 -0
  109. package/compliance/cache/3.1.0-rc.2/protocols/sponsored-intelligence/index.yaml +256 -0
  110. package/compliance/cache/3.1.0-rc.2/specialisms/audience-sync/index.yaml +313 -0
  111. package/compliance/cache/3.1.0-rc.2/specialisms/brand-rights/index.yaml +350 -0
  112. package/compliance/cache/3.1.0-rc.2/specialisms/brand-rights/scenarios/governance_denied.yaml +226 -0
  113. package/compliance/cache/3.1.0-rc.2/specialisms/collection-lists/index.yaml +359 -0
  114. package/compliance/cache/3.1.0-rc.2/specialisms/content-standards/index.yaml +572 -0
  115. package/compliance/cache/3.1.0-rc.2/specialisms/creative-ad-server/index.yaml +409 -0
  116. package/compliance/cache/3.1.0-rc.2/specialisms/creative-generative/generative-seller.yaml +807 -0
  117. package/compliance/cache/3.1.0-rc.2/specialisms/creative-generative/index.yaml +758 -0
  118. package/compliance/cache/3.1.0-rc.2/specialisms/creative-template/index.yaml +510 -0
  119. package/compliance/cache/3.1.0-rc.2/specialisms/governance-aware-seller/index.yaml +143 -0
  120. package/compliance/cache/3.1.0-rc.2/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +117 -0
  121. package/compliance/cache/3.1.0-rc.2/specialisms/governance-delivery-monitor/index.yaml +441 -0
  122. package/compliance/cache/3.1.0-rc.2/specialisms/governance-spend-authority/denied.yaml +221 -0
  123. package/compliance/cache/3.1.0-rc.2/specialisms/governance-spend-authority/index.yaml +330 -0
  124. package/compliance/cache/3.1.0-rc.2/specialisms/property-lists/index.yaml +482 -0
  125. package/compliance/cache/3.1.0-rc.2/specialisms/sales-broadcast-tv/index.yaml +738 -0
  126. package/compliance/cache/3.1.0-rc.2/specialisms/sales-catalog-driven/index.yaml +840 -0
  127. package/compliance/cache/3.1.0-rc.2/specialisms/sales-guaranteed/index.yaml +601 -0
  128. package/compliance/cache/3.1.0-rc.2/specialisms/sales-non-guaranteed/index.yaml +546 -0
  129. package/compliance/cache/3.1.0-rc.2/specialisms/sales-proposal-mode/index.yaml +586 -0
  130. package/compliance/cache/3.1.0-rc.2/specialisms/sales-social/index.yaml +919 -0
  131. package/compliance/cache/3.1.0-rc.2/specialisms/signal-marketplace/index.yaml +424 -0
  132. package/compliance/cache/3.1.0-rc.2/specialisms/signal-marketplace/scenarios/governance_denied.yaml +210 -0
  133. package/compliance/cache/3.1.0-rc.2/specialisms/signal-owned/index.yaml +317 -0
  134. package/compliance/cache/3.1.0-rc.2/specialisms/sponsored-intelligence/index.yaml +59 -0
  135. package/compliance/cache/3.1.0-rc.2/test-kits/acme-outdoor-live.yaml +78 -0
  136. package/compliance/cache/3.1.0-rc.2/test-kits/acme-outdoor.yaml +223 -0
  137. package/compliance/cache/3.1.0-rc.2/test-kits/billing-gate-runner.yaml +115 -0
  138. package/compliance/cache/3.1.0-rc.2/test-kits/bistro-oranje.yaml +126 -0
  139. package/compliance/cache/3.1.0-rc.2/test-kits/distributed-brand-runner.yaml +281 -0
  140. package/compliance/cache/3.1.0-rc.2/test-kits/nova-motors.yaml +262 -0
  141. package/compliance/cache/3.1.0-rc.2/test-kits/osei-natural.yaml +126 -0
  142. package/compliance/cache/3.1.0-rc.2/test-kits/parallel-dispatch-runner.yaml +196 -0
  143. package/compliance/cache/3.1.0-rc.2/test-kits/rate-limit-trip-runner.yaml +172 -0
  144. package/compliance/cache/3.1.0-rc.2/test-kits/signed-requests-runner.yaml +155 -0
  145. package/compliance/cache/3.1.0-rc.2/test-kits/single-side-trust-runner.yaml +294 -0
  146. package/compliance/cache/3.1.0-rc.2/test-kits/substitution-observer-runner.yaml +688 -0
  147. package/compliance/cache/3.1.0-rc.2/test-kits/summit-foods.yaml +125 -0
  148. package/compliance/cache/3.1.0-rc.2/test-kits/webhook-receiver-runner.yaml +265 -0
  149. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/001-minimal-plan.json +43 -0
  150. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/002-full-plan.json +217 -0
  151. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/003-bookkeeping-stripped.json +60 -0
  152. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/004a-human-review-omitted.json +43 -0
  153. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/004b-human-review-explicit-null.json +49 -0
  154. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/005a-policy-categories-order-1.json +53 -0
  155. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/005b-policy-categories-order-2.json +57 -0
  156. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/006a-ext-trace-v1.json +49 -0
  157. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/006b-ext-trace-v2.json +53 -0
  158. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/007-unicode-objectives.json +43 -0
  159. package/compliance/cache/3.1.0-rc.2/test-vectors/plan-hash/008-numeric-canonicalization.json +65 -0
  160. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/README.md +220 -0
  161. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/canonicalization.json +241 -0
  162. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/keys.json +60 -0
  163. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/001-no-signature-header.json +24 -0
  164. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/002-wrong-tag.json +26 -0
  165. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/003-expired-signature.json +26 -0
  166. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/004-window-too-long.json +26 -0
  167. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/005-alg-not-allowed.json +26 -0
  168. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/006-missing-covered-component.json +26 -0
  169. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/007-missing-content-digest.json +26 -0
  170. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/008-unknown-keyid.json +26 -0
  171. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +27 -0
  172. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/010-content-digest-mismatch.json +33 -0
  173. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/011-malformed-header.json +27 -0
  174. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/012-missing-expires-param.json +26 -0
  175. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/013-expires-le-created.json +27 -0
  176. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/014-missing-nonce-param.json +27 -0
  177. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/015-signature-invalid.json +28 -0
  178. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/016-replayed-nonce.json +35 -0
  179. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/017-key-revoked.json +38 -0
  180. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +28 -0
  181. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/019-signature-without-signature-input.json +26 -0
  182. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/020-rate-abuse.json +34 -0
  183. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +31 -0
  184. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/022-multi-valued-content-type.json +31 -0
  185. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +32 -0
  186. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/024-unquoted-string-param.json +31 -0
  187. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +43 -0
  188. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/026-non-ascii-host.json +31 -0
  189. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +25 -0
  190. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +26 -0
  191. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/001-basic-post.json +30 -0
  192. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/002-post-with-content-digest.json +31 -0
  193. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/003-es256-post.json +30 -0
  194. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/004-multiple-signature-labels.json +26 -0
  195. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/005-default-port-stripped.json +30 -0
  196. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/006-dot-segment-path.json +30 -0
  197. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/007-query-byte-preserved.json +30 -0
  198. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/008-percent-encoded-path.json +30 -0
  199. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +30 -0
  200. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +30 -0
  201. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/011-ipv6-authority.json +30 -0
  202. package/compliance/cache/3.1.0-rc.2/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +30 -0
  203. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/README.md +211 -0
  204. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/keys.json +61 -0
  205. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/001-wrong-tag.json +26 -0
  206. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/002-expired-signature.json +26 -0
  207. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/003-window-too-long.json +26 -0
  208. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +26 -0
  209. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/005-missing-authority-component.json +26 -0
  210. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/006-missing-content-digest.json +25 -0
  211. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/007-unknown-keyid.json +26 -0
  212. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +26 -0
  213. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +26 -0
  214. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +26 -0
  215. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/011-signature-without-input.json +25 -0
  216. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/012-missing-expires-param.json +26 -0
  217. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/013-expires-le-created.json +26 -0
  218. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +26 -0
  219. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/015-signature-invalid.json +26 -0
  220. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/016-replayed-nonce.json +37 -0
  221. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/017-key-revoked.json +32 -0
  222. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/018-rate-abuse.json +33 -0
  223. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/019-revocation-stale.json +32 -0
  224. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +41 -0
  225. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +26 -0
  226. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/001-basic-post.json +24 -0
  227. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/002-es256-post.json +24 -0
  228. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +24 -0
  229. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/004-default-port-stripped.json +24 -0
  230. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +24 -0
  231. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +24 -0
  232. package/compliance/cache/3.1.0-rc.2/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +25 -0
  233. package/compliance/cache/3.1.0-rc.2/universal/billing-gate-dispatch.yaml +450 -0
  234. package/compliance/cache/3.1.0-rc.2/universal/canonical-format-validate-input.yaml +640 -0
  235. package/compliance/cache/3.1.0-rc.2/universal/capability-discovery.yaml +125 -0
  236. package/compliance/cache/3.1.0-rc.2/universal/collection-lists-pagination-integrity.yaml +306 -0
  237. package/compliance/cache/3.1.0-rc.2/universal/comply-controller-mode-gate.yaml +141 -0
  238. package/compliance/cache/3.1.0-rc.2/universal/content-standards-pagination-integrity.yaml +326 -0
  239. package/compliance/cache/3.1.0-rc.2/universal/deterministic-testing.yaml +1430 -0
  240. package/compliance/cache/3.1.0-rc.2/universal/error-compliance-signals.yaml +377 -0
  241. package/compliance/cache/3.1.0-rc.2/universal/error-compliance.yaml +528 -0
  242. package/compliance/cache/3.1.0-rc.2/universal/fictional-entities.yaml +307 -0
  243. package/compliance/cache/3.1.0-rc.2/universal/get-media-buys-pagination-integrity.yaml +160 -0
  244. package/compliance/cache/3.1.0-rc.2/universal/get-signals-pagination-integrity.yaml +210 -0
  245. package/compliance/cache/3.1.0-rc.2/universal/idempotency.yaml +861 -0
  246. package/compliance/cache/3.1.0-rc.2/universal/notification-config-event-scope.yaml +119 -0
  247. package/compliance/cache/3.1.0-rc.2/universal/notification-config-lifecycle.yaml +337 -0
  248. package/compliance/cache/3.1.0-rc.2/universal/notification-config-rejections.yaml +107 -0
  249. package/compliance/cache/3.1.0-rc.2/universal/pagination-integrity-creative-formats.yaml +265 -0
  250. package/compliance/cache/3.1.0-rc.2/universal/pagination-integrity-list-accounts.yaml +245 -0
  251. package/compliance/cache/3.1.0-rc.2/universal/pagination-integrity.yaml +263 -0
  252. package/compliance/cache/3.1.0-rc.2/universal/property-lists-pagination-integrity.yaml +307 -0
  253. package/compliance/cache/3.1.0-rc.2/universal/read-tool-idempotency.yaml +405 -0
  254. package/compliance/cache/3.1.0-rc.2/universal/runner-output-contract.yaml +1285 -0
  255. package/compliance/cache/3.1.0-rc.2/universal/schema-validation-signals.yaml +181 -0
  256. package/compliance/cache/3.1.0-rc.2/universal/schema-validation.yaml +548 -0
  257. package/compliance/cache/3.1.0-rc.2/universal/security.yaml +539 -0
  258. package/compliance/cache/3.1.0-rc.2/universal/signed-requests.yaml +217 -0
  259. package/compliance/cache/3.1.0-rc.2/universal/stale-response-advisory.yaml +295 -0
  260. package/compliance/cache/3.1.0-rc.2/universal/storyboard-schema.yaml +2194 -0
  261. package/compliance/cache/3.1.0-rc.2/universal/v3-envelope-integrity.yaml +117 -0
  262. package/compliance/cache/3.1.0-rc.2/universal/version-negotiation.yaml +130 -0
  263. package/compliance/cache/3.1.0-rc.2/universal/webhook-emission.yaml +411 -0
  264. package/compliance/cache/3.1.0-rc.2/universal/wholesale-feed-bulk-webhooks.yaml +82 -0
  265. package/compliance/cache/3.1.0-rc.2/universal/wholesale-feed-product-webhooks.yaml +83 -0
  266. package/compliance/cache/3.1.0-rc.2/universal/wholesale-feed-products.yaml +151 -0
  267. package/compliance/cache/3.1.0-rc.2/universal/wholesale-feed-signal-webhooks.yaml +83 -0
  268. package/compliance/cache/3.1.0-rc.2/universal/wholesale-feed-signals.yaml +149 -0
  269. package/dist/lib/index.d.ts +1 -1
  270. package/dist/lib/index.d.ts.map +1 -1
  271. package/dist/lib/index.js +9 -5
  272. package/dist/lib/index.js.map +1 -1
  273. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  274. package/dist/lib/testing/storyboard/default-invariants.js +30 -1
  275. package/dist/lib/testing/storyboard/default-invariants.js.map +1 -1
  276. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  277. package/dist/lib/testing/storyboard/runner.js +84 -21
  278. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  279. package/dist/lib/testing/storyboard/types.d.ts +21 -0
  280. package/dist/lib/testing/storyboard/types.d.ts.map +1 -1
  281. package/dist/lib/testing/storyboard/types.js.map +1 -1
  282. package/dist/lib/testing/types.d.ts +9 -0
  283. package/dist/lib/testing/types.d.ts.map +1 -1
  284. package/dist/lib/types/schemas.generated.d.ts +6707 -12040
  285. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  286. package/dist/lib/types/schemas.generated.js +1 -1
  287. package/dist/lib/types/schemas.generated.js.map +1 -1
  288. package/dist/lib/utils/signal-id-builders.d.ts +19 -0
  289. package/dist/lib/utils/signal-id-builders.d.ts.map +1 -1
  290. package/dist/lib/utils/signal-id-builders.js +30 -0
  291. package/dist/lib/utils/signal-id-builders.js.map +1 -1
  292. package/dist/lib/utils/tool-request-schemas.d.ts.map +1 -1
  293. package/dist/lib/utils/tool-request-schemas.js +3 -0
  294. package/dist/lib/utils/tool-request-schemas.js.map +1 -1
  295. package/dist/lib/v2/projection/constants.d.ts +28 -0
  296. package/dist/lib/v2/projection/constants.d.ts.map +1 -0
  297. package/dist/lib/v2/projection/constants.js +31 -0
  298. package/dist/lib/v2/projection/constants.js.map +1 -0
  299. package/dist/lib/v2/projection/registry.d.ts.map +1 -1
  300. package/dist/lib/v2/projection/registry.js +9 -4
  301. package/dist/lib/v2/projection/registry.js.map +1 -1
  302. package/dist/lib/version.d.ts +3 -3
  303. package/dist/lib/version.js +3 -3
  304. package/package.json +1 -1
  305. package/skills/SHAPE-GOTCHAS.md +5 -0
@@ -0,0 +1,226 @@
1
+ id: brand_rights/governance_denied
2
+ version: "1.0.0"
3
+ title: "Brand agent rejects rights acquisition when governance denies"
4
+ category: brand_rights
5
+ summary: "Verifies that a brand agent propagates GOVERNANCE_DENIED when the buyer's governance plan denies a rights license."
6
+ track: brand
7
+ required_tools:
8
+ - sync_governance
9
+ - get_rights
10
+ - acquire_rights
11
+
12
+ narrative: |
13
+ Acquiring rights is a spending event. The brand agent must consult the buyer's
14
+ governance agent before issuing a license and deny the acquisition when governance
15
+ returns denied. This keeps licensing authority consistent with media buy spending
16
+ authority — a buyer cannot commit to a generative campaign budget that exceeds the
17
+ plan even when the spending flows to a brand agent instead of a seller.
18
+
19
+ This scenario sets up a strict $50 governance plan, registers governance with the
20
+ brand agent via sync_governance, then attempts to acquire rights whose pricing
21
+ exceeds the plan. The brand agent must return the canonical denial shape — the
22
+ `AcquireRightsRejected` arm of the response (`rights_status: "rejected"` + `reason`)
23
+ — propagating the governance agent's findings in `reason`. Per the wire-placement
24
+ rule on `GOVERNANCE_DENIED`, when a task response defines a structured rejection arm,
25
+ the arm IS the canonical denial shape: sellers do NOT additionally emit
26
+ `GOVERNANCE_DENIED` in `errors[]` or `adcp_error`, and transport-level success
27
+ markers stay flipped to success. The schema enforces this — `AcquireRightsRejected`
28
+ declares `not: { required: [errors] }`, so dual-emission is already a schema violation.
29
+
30
+ By default, the governance agent is the training agent at test-agent.adcontextprotocol.org.
31
+ Override by supplying a different `governance_agent_url` in the run's initial context
32
+ (e.g., via `--context` on `adcp storyboard run` once the CLI supports it).
33
+
34
+ context:
35
+ governance_agent_url: "https://test-agent.adcontextprotocol.org"
36
+
37
+ agent:
38
+ interaction_model: brand_rights_holder
39
+ capabilities:
40
+ - rights_licensing
41
+ - governance_aware
42
+ examples:
43
+ - "Any brand rights agent that honors governance before licensing"
44
+
45
+ caller:
46
+ role: buyer_agent
47
+ example: "Pinnacle Agency (buyer)"
48
+
49
+ prerequisites:
50
+ description: |
51
+ A governance agent that supports sync_plans and check_governance, and a brand
52
+ agent that supports sync_governance + acquire_rights.
53
+ test_kit: "test-kits/acme-outdoor.yaml"
54
+
55
+ phases:
56
+ - id: governance_plan_setup
57
+ title: "Set up strict governance plan"
58
+ steps:
59
+ - id: sync_plans
60
+ title: "Create strict governance plan"
61
+ task: sync_plans
62
+ schema_ref: "governance/sync-plans-request.json"
63
+ response_schema_ref: "governance/sync-plans-response.json"
64
+ doc_ref: "/governance/campaign/tasks/sync_plans"
65
+ stateful: true
66
+ expected: |
67
+ The governance agent acknowledges the plan.
68
+ sample_request:
69
+ plans:
70
+ - plan_id: "comply-rights-gov-denied"
71
+ brand:
72
+ domain: "acmeoutdoor.example"
73
+ objectives: "Restricted plan — rights licensing test"
74
+ budget:
75
+ total: 50
76
+ currency: "USD"
77
+ reallocation_threshold: 25
78
+ flight:
79
+ start: "2026-04-01T00:00:00Z"
80
+ end: "2026-06-30T23:59:59Z"
81
+ countries: ["US"]
82
+ idempotency_key: "$generate:uuid_v4#brand_rights_governance_denied_governance_plan_setup_sync_plans"
83
+ validations:
84
+ - check: response_schema
85
+ description: "Response matches sync-plans-response.json schema"
86
+
87
+ - id: brand_agent_setup
88
+ title: "Register account and governance with the brand agent"
89
+ steps:
90
+ - id: sync_accounts
91
+ title: "Establish account with brand agent"
92
+ task: sync_accounts
93
+ schema_ref: "account/sync-accounts-request.json"
94
+ response_schema_ref: "account/sync-accounts-response.json"
95
+ doc_ref: "/accounts/tasks/sync_accounts"
96
+ stateful: true
97
+ expected: |
98
+ Brand agent returns the account with account_id active.
99
+ sample_request:
100
+ accounts:
101
+ - brand:
102
+ domain: "acmeoutdoor.example"
103
+ operator: "pinnacle-agency.example"
104
+ billing: "operator"
105
+ payment_terms: "net_30"
106
+ idempotency_key: "$generate:uuid_v4#brand_rights_governance_denied_brand_agent_setup_sync_accounts"
107
+ validations:
108
+ - check: response_schema
109
+ description: "Response matches sync-accounts-response.json schema"
110
+ - check: field_present
111
+ path: "accounts[0].account_id"
112
+ description: "Account has a platform-assigned ID"
113
+
114
+ - id: sync_governance
115
+ title: "Register governance agent with brand agent"
116
+ task: sync_governance
117
+ schema_ref: "account/sync-governance-request.json"
118
+ response_schema_ref: "account/sync-governance-response.json"
119
+ doc_ref: "/accounts/tasks/sync_governance"
120
+ stateful: true
121
+ expected: |
122
+ Brand agent acknowledges governance registration.
123
+ sample_request:
124
+ accounts:
125
+ - account:
126
+ brand:
127
+ domain: "acmeoutdoor.example"
128
+ operator: "pinnacle-agency.example"
129
+ governance_agents:
130
+ - url: "$context.governance_agent_url"
131
+ authentication:
132
+ schemes: ["Bearer"]
133
+ credentials: "gov-token-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
134
+ idempotency_key: "$generate:uuid_v4#brand_rights_governance_denied_brand_agent_setup_sync_governance"
135
+ validations:
136
+ - check: response_schema
137
+ description: "Response matches sync-governance-response.json schema"
138
+
139
+ - id: rights_denied
140
+ title: "Attempt rights acquisition — governance denies"
141
+ steps:
142
+ - id: get_rights_catalog
143
+ title: "Discover rights to license"
144
+ task: get_rights
145
+ schema_ref: "brand/get-rights-request.json"
146
+ response_schema_ref: "brand/get-rights-response.json"
147
+ doc_ref: "/brand-protocol/tasks/get_rights"
148
+ stateful: false
149
+ expected: |
150
+ Return rights available for licensing, each with pricing_options.
151
+ sample_request:
152
+ buyer:
153
+ domain: "pinnacle-agency.example"
154
+ query: "licensed commercial rights for a regional outdoor retail campaign"
155
+ uses:
156
+ - "commercial"
157
+ - "endorsement"
158
+ context_outputs:
159
+ - path: "rights[0].rights_id"
160
+ key: "rights_id"
161
+ - path: "rights[0].pricing_options[0].pricing_option_id"
162
+ key: "pricing_option_id"
163
+ validations:
164
+ - check: response_schema
165
+ description: "Response matches get-rights-response.json schema"
166
+
167
+ - id: acquire_rights_denied
168
+ title: "acquire_rights — governance denies via rejection arm"
169
+ task: acquire_rights
170
+ schema_ref: "brand/acquire-rights-request.json"
171
+ response_schema_ref: "brand/acquire-rights-response.json"
172
+ doc_ref: "/brand-protocol/tasks/acquire_rights"
173
+ expected_arm: "rejected"
174
+ stateful: true
175
+ expected: |
176
+ Brand agent returns the canonical denial shape for a task with a structured rejection arm:
177
+ AcquireRightsRejected (`rights_status: "rejected"` + `reason`, with `suggestions` optional). Per the
178
+ wire-placement rule on `GOVERNANCE_DENIED`, the spec-correct denial response carries no error
179
+ code on the wire — the rejection arm enforces `not: { required: [errors] }` at the schema layer,
180
+ so emitting `errors[]` alongside the rejection arm is already a schema violation. Transport-level
181
+ success markers MUST NOT be flipped (HTTP 200, MCP `isError: false`, A2A `succeeded`) — the task
182
+ ran successfully and produced a structured response.
183
+
184
+ sample_request:
185
+ account:
186
+ brand:
187
+ domain: "acmeoutdoor.example"
188
+ operator: "pinnacle-agency.example"
189
+ rights_id: "$context.rights_id"
190
+ pricing_option_id: "$context.pricing_option_id"
191
+ buyer:
192
+ domain: "pinnacle-agency.example"
193
+ campaign:
194
+ description: "Governance-denied rights acquisition probe"
195
+ uses:
196
+ - "likeness"
197
+ - "commercial"
198
+ start_date: "2026-04-01"
199
+ end_date: "2026-06-30"
200
+ revocation_webhook:
201
+ url: "https://pinnacle-agency.example/webhooks/revocation"
202
+ authentication:
203
+ schemes:
204
+ - "Bearer"
205
+ credentials: "pinnacle-revocation-webhook-secret-token"
206
+ idempotency_key: "$generate:uuid_v4#brand_rights_governance_denied_acquire_rights_denied"
207
+
208
+ context:
209
+ correlation_id: "brand_rights--governance_denied--acquire"
210
+ validations:
211
+ - check: response_schema
212
+ description: "Response matches acquire-rights-response.json (rejection arm validates against AcquireRightsRejected; the schema's `not: { required: [errors] }` rule rejects dual-emission)"
213
+ - check: field_value
214
+ path: "rights_status"
215
+ value: "rejected"
216
+ description: "Discriminator on the rejection arm — rights_status must be 'rejected'"
217
+ - check: field_present
218
+ path: "reason"
219
+ description: "Rejection arm carries the operator-readable reason (governance findings propagated verbatim per wire-placement guidance)"
220
+ - check: field_present
221
+ path: "context"
222
+ description: "Response echoes back the context object on the rejection arm"
223
+ - check: field_value
224
+ path: "context.correlation_id"
225
+ value: "brand_rights--governance_denied--acquire"
226
+ description: "Context correlation_id returned unchanged"
@@ -0,0 +1,359 @@
1
+ id: collection_lists
2
+ version: "1.0.0"
3
+ title: "Collection lists"
4
+ protocol: governance
5
+ category: collection_lists
6
+ summary: "Curated collection lists for program-level brand safety and content targeting — create, query, update, and delete lists of content programs (shows, series, podcasts)."
7
+ track: governance
8
+ required_tools:
9
+ - create_collection_list
10
+
11
+ # Cross-step assertion (adcp#2664). status.monotonic rejects resource
12
+ # status transitions observed across steps that aren't on the spec
13
+ # lifecycle graph. Silent on collection-list-only runs (no tracked
14
+ # lifecycle resource), but wired so phases that touch media_buy /
15
+ # account status are automatically gated.
16
+ invariants:
17
+ - status.monotonic
18
+
19
+ narrative: |
20
+ You run a governance agent that manages collection lists for brand safety. Unlike
21
+ property lists which operate on technical surfaces (domains, apps), collection lists
22
+ operate on content programs (shows, series, podcasts) identified by platform-independent
23
+ IDs like IMDb, Gracenote, or EIDR.
24
+
25
+ Buyers create inclusion and exclusion lists that define which programs their ads can
26
+ and cannot appear against. Your agent resolves the base collections and filters into a
27
+ concrete list of program identifiers that sellers can cache and enforce at bid time.
28
+
29
+ Collection lists are setup-time resources: the governance agent resolves them once and
30
+ sellers cache the result. Unlike property lists, there is no post-delivery validation
31
+ task yet — enforcement happens at serve time via the cached list, not via after-the-fact
32
+ compliance checks. This storyboard therefore exercises the full CRUD lifecycle (create,
33
+ query, update, delete) but does not test delivery validation.
34
+
35
+ agent:
36
+ interaction_model: governance_agent
37
+ capabilities:
38
+ - collection_lists
39
+ - brand_safety
40
+ examples:
41
+ - "IAS"
42
+ - "DoubleVerify"
43
+ - "GARM-aligned platforms"
44
+ - "Brand safety services"
45
+
46
+ caller:
47
+ role: buyer_agent
48
+ example: "Nova Motors (buyer)"
49
+
50
+ prerequisites:
51
+ description: |
52
+ The caller needs a brand identity and content-program knowledge (distribution IDs,
53
+ publisher identifiers, or genre taxonomies). The test kit provides a sample brand
54
+ with campaign context.
55
+ test_kit: "test-kits/nova-motors.yaml"
56
+
57
+ phases:
58
+ - id: capability_discovery
59
+ title: "Capability discovery"
60
+ narrative: |
61
+ The buyer calls get_adcp_capabilities to confirm the agent supports governance
62
+ before creating or fetching collection lists.
63
+
64
+ steps:
65
+ - id: get_capabilities
66
+ title: "Check agent capabilities"
67
+ narrative: |
68
+ Verify that the agent declares the expected protocol support before
69
+ proceeding with domain-specific operations.
70
+ task: get_adcp_capabilities
71
+ schema_ref: "protocol/get-adcp-capabilities-request.json"
72
+ response_schema_ref: "protocol/get-adcp-capabilities-response.json"
73
+ doc_ref: "/protocol/get_adcp_capabilities"
74
+ comply_scenario: capability_discovery
75
+ stateful: false
76
+ expected: |
77
+ Return capabilities declaring governance in supported_protocols, confirming
78
+ the agent provides governance services.
79
+ sample_request:
80
+ context:
81
+ correlation_id: "collection_lists--get_capabilities"
82
+ validations:
83
+ - check: response_schema
84
+ description: "Response matches get-adcp-capabilities-response.json schema"
85
+ - check: field_present
86
+ path: "supported_protocols"
87
+ description: "Agent declares supported protocols"
88
+ - check: field_present
89
+ path: "context"
90
+ description: "Response echoes back the context object"
91
+ - check: field_value
92
+ path: "context.correlation_id"
93
+ value: "collection_lists--get_capabilities"
94
+ description: "Context correlation_id returned unchanged"
95
+
96
+ - id: create_list
97
+ title: "Create collection lists"
98
+ narrative: |
99
+ The buyer creates an inclusion collection list for the campaign. The list defines
100
+ which content programs the brand is willing to advertise against, selected by
101
+ platform-independent distribution identifiers.
102
+
103
+ steps:
104
+ - id: create_inclusion_list
105
+ title: "Create an inclusion collection list"
106
+ narrative: |
107
+ The buyer creates an inclusion list of programs the brand considers safe to
108
+ advertise against, referenced by distribution IDs (e.g. IMDb) so the selection
109
+ is portable across publishers.
110
+ task: create_collection_list
111
+ schema_ref: "collection/create-collection-list-request.json"
112
+ response_schema_ref: "collection/create-collection-list-response.json"
113
+ doc_ref: "/governance/collection/tasks/collection_lists"
114
+ comply_scenario: governance_collection_lists
115
+ stateful: true
116
+ expected: |
117
+ Return the created collection list:
118
+ - list_id: platform-assigned identifier
119
+ - collection_count reflecting the resolved programs
120
+ - auth_token issued for sellers to fetch the list
121
+ - Timestamps populated
122
+
123
+ sample_request:
124
+ account:
125
+ brand:
126
+ domain: "novamotors.example"
127
+ operator: "pinnacle-agency.example"
128
+ brand:
129
+ domain: "novamotors.example"
130
+ name: "Nova Motors approved programs"
131
+ base_collections:
132
+ - selection_type: "distribution_ids"
133
+ identifiers:
134
+ - type: "imdb_id"
135
+ value: "tt9999901"
136
+ - type: "imdb_id"
137
+ value: "tt9999902"
138
+ - type: "imdb_id"
139
+ value: "tt9999903"
140
+ filters:
141
+ kinds: ["series"]
142
+
143
+ idempotency_key: "$generate:uuid_v4#collection_lists_create_list_create_inclusion_list"
144
+ context:
145
+ correlation_id: "collection_lists--create_inclusion_list"
146
+ context_outputs:
147
+ - path: "list.list_id"
148
+ key: "collection_list_id"
149
+
150
+ validations:
151
+ - check: response_schema
152
+ description: "Response matches create-collection-list-response.json schema"
153
+ - check: field_present
154
+ path: "list.list_id"
155
+ description: "Governance agent assigns list_id — must be echoed in get/update/delete"
156
+ - check: field_present
157
+ path: "auth_token"
158
+ description: "Agent issues an auth_token at creation time for seller fetches"
159
+ - check: field_present
160
+ path: "context"
161
+ description: "Response echoes back the context object"
162
+ - check: field_value
163
+ path: "context.correlation_id"
164
+ value: "collection_lists--create_inclusion_list"
165
+ description: "Context correlation_id returned unchanged"
166
+
167
+ - id: list_and_get
168
+ title: "Query collection lists"
169
+ narrative: |
170
+ The buyer lists all collection lists for the brand and retrieves a specific list
171
+ with resolved collections.
172
+
173
+ steps:
174
+ - id: list_collection_lists
175
+ title: "List all collection lists"
176
+ narrative: |
177
+ The buyer lists all collection lists for the brand. The response includes
178
+ list metadata without full resolved collection details.
179
+ task: list_collection_lists
180
+ schema_ref: "collection/list-collection-lists-request.json"
181
+ response_schema_ref: "collection/list-collection-lists-response.json"
182
+ doc_ref: "/governance/collection/tasks/collection_lists"
183
+ comply_scenario: governance_collection_lists
184
+ stateful: true
185
+ expected: |
186
+ Return collection list summaries:
187
+ - Array of lists with list_id, name, collection_count
188
+ - Includes the list created in the prior phase
189
+
190
+ sample_request:
191
+ account:
192
+ brand:
193
+ domain: "novamotors.example"
194
+ operator: "pinnacle-agency.example"
195
+ name_contains: "Nova Motors"
196
+
197
+ context:
198
+ correlation_id: "collection_lists--list_collection_lists"
199
+ validations:
200
+ - check: response_schema
201
+ description: "Response matches list-collection-lists-response.json schema"
202
+ - check: field_present
203
+ path: "context"
204
+ description: "Response echoes back the context object"
205
+ - check: field_value
206
+ path: "context.correlation_id"
207
+ value: "collection_lists--list_collection_lists"
208
+ description: "Context correlation_id returned unchanged"
209
+
210
+ - id: get_collection_list
211
+ title: "Get a specific collection list with resolved collections"
212
+ narrative: |
213
+ The buyer retrieves a specific collection list with resolve:true to confirm
214
+ the agent can materialize the programs the list references.
215
+ task: get_collection_list
216
+ schema_ref: "collection/get-collection-list-request.json"
217
+ response_schema_ref: "collection/get-collection-list-response.json"
218
+ doc_ref: "/governance/collection/tasks/collection_lists"
219
+ comply_scenario: governance_collection_lists
220
+ stateful: true
221
+ expected: |
222
+ Return the full collection list:
223
+ - list_id, name, collection_count
224
+ - Resolved collections with distribution_ids, content_rating, genre
225
+ - cache_valid_until timestamp for seller caching
226
+
227
+ sample_request:
228
+ list_id: "$context.collection_list_id"
229
+ resolve: true
230
+ account:
231
+ brand:
232
+ domain: "novamotors.example"
233
+ operator: "pinnacle-agency.example"
234
+
235
+ context:
236
+ correlation_id: "collection_lists--get_collection_list"
237
+ validations:
238
+ - check: response_schema
239
+ description: "Response matches get-collection-list-response.json schema"
240
+ - check: field_present
241
+ path: "list.list_id"
242
+ description: "List id returned"
243
+ - check: field_present
244
+ path: "collections"
245
+ description: "Resolved collections returned when resolve:true"
246
+ - check: field_present
247
+ path: "context"
248
+ description: "Response echoes back the context object"
249
+ - check: field_value
250
+ path: "context.correlation_id"
251
+ value: "collection_lists--get_collection_list"
252
+ description: "Context correlation_id returned unchanged"
253
+
254
+ - id: update_list
255
+ title: "Update collection lists"
256
+ narrative: |
257
+ The buyer modifies an existing collection list — replacing the base collections
258
+ as the campaign's content preferences evolve.
259
+
260
+ steps:
261
+ - id: update_collection_list
262
+ title: "Update a collection list"
263
+ narrative: |
264
+ The buyer replaces the base collections on an existing list with a new set
265
+ of distribution identifiers.
266
+ task: update_collection_list
267
+ schema_ref: "collection/update-collection-list-request.json"
268
+ response_schema_ref: "collection/update-collection-list-response.json"
269
+ doc_ref: "/governance/collection/tasks/collection_lists"
270
+ comply_scenario: governance_collection_lists
271
+ stateful: true
272
+ expected: |
273
+ Return the updated collection list:
274
+ - Same list_id
275
+ - Updated collection_count reflecting the replaced base collections
276
+ - Updated updated_at timestamp
277
+
278
+ sample_request:
279
+ list_id: "$context.collection_list_id"
280
+ account:
281
+ brand:
282
+ domain: "novamotors.example"
283
+ operator: "pinnacle-agency.example"
284
+ base_collections:
285
+ - selection_type: "distribution_ids"
286
+ identifiers:
287
+ - type: "imdb_id"
288
+ value: "tt9999901"
289
+ - type: "imdb_id"
290
+ value: "tt9999904"
291
+ - type: "imdb_id"
292
+ value: "tt9999905"
293
+ - type: "imdb_id"
294
+ value: "tt9999906"
295
+
296
+ idempotency_key: "$generate:uuid_v4#collection_lists_update_list_update_collection_list"
297
+ context:
298
+ correlation_id: "collection_lists--update_collection_list"
299
+ validations:
300
+ - check: response_schema
301
+ description: "Response matches update-collection-list-response.json schema"
302
+ - check: field_present
303
+ path: "list.list_id"
304
+ description: "Updated list retains its list_id"
305
+ - check: field_present
306
+ path: "context"
307
+ description: "Response echoes back the context object"
308
+ - check: field_value
309
+ path: "context.correlation_id"
310
+ value: "collection_lists--update_collection_list"
311
+ description: "Context correlation_id returned unchanged"
312
+
313
+ - id: delete_list
314
+ title: "Delete a collection list"
315
+ narrative: |
316
+ The buyer removes a collection list that is no longer needed. Deleting a list
317
+ revokes the associated auth_token.
318
+
319
+ steps:
320
+ - id: delete_collection_list
321
+ title: "Delete a collection list"
322
+ narrative: |
323
+ The buyer deletes a collection list. The governance agent removes the list
324
+ and returns confirmation.
325
+ task: delete_collection_list
326
+ schema_ref: "collection/delete-collection-list-request.json"
327
+ response_schema_ref: "collection/delete-collection-list-response.json"
328
+ doc_ref: "/governance/collection/tasks/collection_lists"
329
+ comply_scenario: governance_collection_lists
330
+ stateful: true
331
+ expected: |
332
+ Confirm deletion:
333
+ - deleted: true
334
+ - list_id: the deleted list
335
+
336
+ sample_request:
337
+ list_id: "$context.collection_list_id"
338
+ account:
339
+ brand:
340
+ domain: "novamotors.example"
341
+ operator: "pinnacle-agency.example"
342
+
343
+ idempotency_key: "$generate:uuid_v4#collection_lists_delete_list_delete_collection_list"
344
+ context:
345
+ correlation_id: "collection_lists--delete_collection_list"
346
+ validations:
347
+ - check: response_schema
348
+ description: "Response matches delete-collection-list-response.json schema"
349
+ - check: field_value
350
+ path: "deleted"
351
+ value: true
352
+ description: "Delete returns deleted: true"
353
+ - check: field_present
354
+ path: "context"
355
+ description: "Response echoes back the context object"
356
+ - check: field_value
357
+ path: "context.correlation_id"
358
+ value: "collection_lists--delete_collection_list"
359
+ description: "Context correlation_id returned unchanged"