@adcp/sdk 6.9.0 → 6.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/bin/adcp.js +285 -5
  2. package/compliance/cache/3.0.6.previous/domains/brand/index.yaml +163 -0
  3. package/compliance/cache/3.0.6.previous/domains/creative/index.yaml +412 -0
  4. package/compliance/cache/3.0.6.previous/domains/governance/index.yaml +683 -0
  5. package/compliance/cache/3.0.6.previous/domains/media-buy/creative-reception.yaml +247 -0
  6. package/compliance/cache/3.0.6.previous/domains/media-buy/index.yaml +769 -0
  7. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/create_media_buy_async.yaml +232 -0
  8. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
  9. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/delivery_reporting.yaml +205 -0
  10. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/governance_approved.yaml +211 -0
  11. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/governance_conditions.yaml +196 -0
  12. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/governance_denied.yaml +192 -0
  13. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/governance_denied_recovery.yaml +244 -0
  14. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/invalid_transitions.yaml +284 -0
  15. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
  16. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/inventory_list_targeting.yaml +271 -0
  17. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/measurement_terms_rejected.yaml +195 -0
  18. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
  19. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/proposal_finalize.yaml +243 -0
  20. package/compliance/cache/3.0.6.previous/domains/media-buy/scenarios/refine_products.yaml +148 -0
  21. package/compliance/cache/3.0.6.previous/domains/media-buy/state-machine.yaml +442 -0
  22. package/compliance/cache/3.0.6.previous/domains/signals/index.yaml +266 -0
  23. package/compliance/cache/3.0.6.previous/domains/sponsored-intelligence/index.yaml +256 -0
  24. package/compliance/cache/3.0.6.previous/index.json +324 -0
  25. package/compliance/cache/3.0.6.previous/protocols/brand/index.yaml +163 -0
  26. package/compliance/cache/3.0.6.previous/protocols/creative/index.yaml +412 -0
  27. package/compliance/cache/3.0.6.previous/protocols/governance/index.yaml +683 -0
  28. package/compliance/cache/3.0.6.previous/protocols/media-buy/creative-reception.yaml +247 -0
  29. package/compliance/cache/3.0.6.previous/protocols/media-buy/index.yaml +769 -0
  30. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/create_media_buy_async.yaml +232 -0
  31. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
  32. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/delivery_reporting.yaml +205 -0
  33. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/governance_approved.yaml +211 -0
  34. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/governance_conditions.yaml +196 -0
  35. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/governance_denied.yaml +192 -0
  36. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/governance_denied_recovery.yaml +244 -0
  37. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/invalid_transitions.yaml +284 -0
  38. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
  39. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/inventory_list_targeting.yaml +271 -0
  40. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +195 -0
  41. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
  42. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/proposal_finalize.yaml +243 -0
  43. package/compliance/cache/3.0.6.previous/protocols/media-buy/scenarios/refine_products.yaml +148 -0
  44. package/compliance/cache/3.0.6.previous/protocols/media-buy/state-machine.yaml +442 -0
  45. package/compliance/cache/3.0.6.previous/protocols/signals/index.yaml +266 -0
  46. package/compliance/cache/3.0.6.previous/protocols/sponsored-intelligence/index.yaml +256 -0
  47. package/compliance/cache/3.0.6.previous/specialisms/audience-sync/index.yaml +280 -0
  48. package/compliance/cache/3.0.6.previous/specialisms/brand-rights/index.yaml +350 -0
  49. package/compliance/cache/3.0.6.previous/specialisms/brand-rights/scenarios/governance_denied.yaml +204 -0
  50. package/compliance/cache/3.0.6.previous/specialisms/collection-lists/index.yaml +359 -0
  51. package/compliance/cache/3.0.6.previous/specialisms/content-standards/index.yaml +572 -0
  52. package/compliance/cache/3.0.6.previous/specialisms/creative-ad-server/index.yaml +383 -0
  53. package/compliance/cache/3.0.6.previous/specialisms/creative-generative/generative-seller.yaml +758 -0
  54. package/compliance/cache/3.0.6.previous/specialisms/creative-generative/index.yaml +746 -0
  55. package/compliance/cache/3.0.6.previous/specialisms/creative-template/index.yaml +413 -0
  56. package/compliance/cache/3.0.6.previous/specialisms/governance-aware-seller/index.yaml +136 -0
  57. package/compliance/cache/3.0.6.previous/specialisms/governance-delivery-monitor/index.yaml +441 -0
  58. package/compliance/cache/3.0.6.previous/specialisms/governance-spend-authority/denied.yaml +221 -0
  59. package/compliance/cache/3.0.6.previous/specialisms/governance-spend-authority/index.yaml +330 -0
  60. package/compliance/cache/3.0.6.previous/specialisms/property-lists/index.yaml +482 -0
  61. package/compliance/cache/3.0.6.previous/specialisms/sales-broadcast-tv/index.yaml +689 -0
  62. package/compliance/cache/3.0.6.previous/specialisms/sales-catalog-driven/index.yaml +779 -0
  63. package/compliance/cache/3.0.6.previous/specialisms/sales-guaranteed/index.yaml +504 -0
  64. package/compliance/cache/3.0.6.previous/specialisms/sales-non-guaranteed/index.yaml +428 -0
  65. package/compliance/cache/3.0.6.previous/specialisms/sales-proposal-mode/index.yaml +520 -0
  66. package/compliance/cache/3.0.6.previous/specialisms/sales-social/index.yaml +584 -0
  67. package/compliance/cache/3.0.6.previous/specialisms/signal-marketplace/index.yaml +415 -0
  68. package/compliance/cache/3.0.6.previous/specialisms/signal-marketplace/scenarios/governance_denied.yaml +207 -0
  69. package/compliance/cache/3.0.6.previous/specialisms/signal-owned/index.yaml +316 -0
  70. package/compliance/cache/3.0.6.previous/test-kits/acme-outdoor.yaml +210 -0
  71. package/compliance/cache/3.0.6.previous/test-kits/bistro-oranje.yaml +126 -0
  72. package/compliance/cache/3.0.6.previous/test-kits/nova-motors.yaml +262 -0
  73. package/compliance/cache/3.0.6.previous/test-kits/osei-natural.yaml +126 -0
  74. package/compliance/cache/3.0.6.previous/test-kits/signed-requests-runner.yaml +155 -0
  75. package/compliance/cache/3.0.6.previous/test-kits/substitution-observer-runner.yaml +690 -0
  76. package/compliance/cache/3.0.6.previous/test-kits/summit-foods.yaml +125 -0
  77. package/compliance/cache/3.0.6.previous/test-kits/webhook-receiver-runner.yaml +265 -0
  78. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/001-minimal-plan.json +43 -0
  79. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/002-full-plan.json +217 -0
  80. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/003-bookkeeping-stripped.json +60 -0
  81. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/004a-human-review-omitted.json +43 -0
  82. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/004b-human-review-explicit-null.json +49 -0
  83. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/005a-policy-categories-order-1.json +53 -0
  84. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/005b-policy-categories-order-2.json +57 -0
  85. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/006a-ext-trace-v1.json +49 -0
  86. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/006b-ext-trace-v2.json +53 -0
  87. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/007-unicode-objectives.json +43 -0
  88. package/compliance/cache/3.0.6.previous/test-vectors/plan-hash/008-numeric-canonicalization.json +65 -0
  89. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/README.md +219 -0
  90. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/canonicalization.json +241 -0
  91. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/keys.json +60 -0
  92. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/001-no-signature-header.json +24 -0
  93. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/002-wrong-tag.json +26 -0
  94. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/003-expired-signature.json +26 -0
  95. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/004-window-too-long.json +26 -0
  96. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/005-alg-not-allowed.json +26 -0
  97. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/006-missing-covered-component.json +26 -0
  98. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/007-missing-content-digest.json +26 -0
  99. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/008-unknown-keyid.json +26 -0
  100. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +27 -0
  101. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/010-content-digest-mismatch.json +33 -0
  102. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/011-malformed-header.json +27 -0
  103. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/012-missing-expires-param.json +26 -0
  104. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/013-expires-le-created.json +27 -0
  105. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/014-missing-nonce-param.json +27 -0
  106. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/015-signature-invalid.json +28 -0
  107. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/016-replayed-nonce.json +35 -0
  108. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/017-key-revoked.json +38 -0
  109. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +28 -0
  110. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/019-signature-without-signature-input.json +26 -0
  111. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/020-rate-abuse.json +34 -0
  112. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +31 -0
  113. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/022-multi-valued-content-type.json +31 -0
  114. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +32 -0
  115. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/024-unquoted-string-param.json +31 -0
  116. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +43 -0
  117. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/026-non-ascii-host.json +31 -0
  118. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +25 -0
  119. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/001-basic-post.json +30 -0
  120. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/002-post-with-content-digest.json +31 -0
  121. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/003-es256-post.json +30 -0
  122. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/004-multiple-signature-labels.json +26 -0
  123. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/005-default-port-stripped.json +30 -0
  124. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/006-dot-segment-path.json +30 -0
  125. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/007-query-byte-preserved.json +30 -0
  126. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/008-percent-encoded-path.json +30 -0
  127. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +30 -0
  128. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +30 -0
  129. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/011-ipv6-authority.json +30 -0
  130. package/compliance/cache/3.0.6.previous/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +30 -0
  131. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/README.md +211 -0
  132. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/keys.json +61 -0
  133. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/001-wrong-tag.json +26 -0
  134. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/002-expired-signature.json +26 -0
  135. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/003-window-too-long.json +26 -0
  136. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +26 -0
  137. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/005-missing-authority-component.json +26 -0
  138. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/006-missing-content-digest.json +25 -0
  139. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/007-unknown-keyid.json +26 -0
  140. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +26 -0
  141. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +26 -0
  142. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +26 -0
  143. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/011-signature-without-input.json +25 -0
  144. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/012-missing-expires-param.json +26 -0
  145. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/013-expires-le-created.json +26 -0
  146. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +26 -0
  147. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/015-signature-invalid.json +26 -0
  148. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/016-replayed-nonce.json +37 -0
  149. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/017-key-revoked.json +32 -0
  150. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/018-rate-abuse.json +33 -0
  151. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/019-revocation-stale.json +32 -0
  152. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +41 -0
  153. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +26 -0
  154. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/001-basic-post.json +24 -0
  155. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/002-es256-post.json +24 -0
  156. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +24 -0
  157. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/004-default-port-stripped.json +24 -0
  158. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +24 -0
  159. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +24 -0
  160. package/compliance/cache/3.0.6.previous/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +25 -0
  161. package/compliance/cache/3.0.6.previous/universal/capability-discovery.yaml +125 -0
  162. package/compliance/cache/3.0.6.previous/universal/collection-lists-pagination-integrity.yaml +306 -0
  163. package/compliance/cache/3.0.6.previous/universal/content-standards-pagination-integrity.yaml +326 -0
  164. package/compliance/cache/3.0.6.previous/universal/deterministic-testing.yaml +1343 -0
  165. package/compliance/cache/3.0.6.previous/universal/error-compliance.yaml +474 -0
  166. package/compliance/cache/3.0.6.previous/universal/fictional-entities.yaml +307 -0
  167. package/compliance/cache/3.0.6.previous/universal/get-media-buys-pagination-integrity.yaml +160 -0
  168. package/compliance/cache/3.0.6.previous/universal/get-signals-pagination-integrity.yaml +211 -0
  169. package/compliance/cache/3.0.6.previous/universal/idempotency.yaml +593 -0
  170. package/compliance/cache/3.0.6.previous/universal/pagination-integrity-creative-formats.yaml +258 -0
  171. package/compliance/cache/3.0.6.previous/universal/pagination-integrity-list-accounts.yaml +262 -0
  172. package/compliance/cache/3.0.6.previous/universal/pagination-integrity.yaml +263 -0
  173. package/compliance/cache/3.0.6.previous/universal/property-lists-pagination-integrity.yaml +307 -0
  174. package/compliance/cache/3.0.6.previous/universal/runner-output-contract.yaml +358 -0
  175. package/compliance/cache/3.0.6.previous/universal/schema-validation.yaml +526 -0
  176. package/compliance/cache/3.0.6.previous/universal/security.yaml +431 -0
  177. package/compliance/cache/3.0.6.previous/universal/signed-requests.yaml +205 -0
  178. package/compliance/cache/3.0.6.previous/universal/storyboard-schema.yaml +1176 -0
  179. package/compliance/cache/3.0.6.previous/universal/v3-envelope-integrity.yaml +106 -0
  180. package/compliance/cache/3.0.6.previous/universal/webhook-emission.yaml +337 -0
  181. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  182. package/dist/lib/server/create-adcp-server.d.ts +33 -0
  183. package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
  184. package/dist/lib/server/create-adcp-server.js +127 -1
  185. package/dist/lib/server/create-adcp-server.js.map +1 -1
  186. package/dist/lib/server/credential-policy.d.ts +221 -0
  187. package/dist/lib/server/credential-policy.d.ts.map +1 -0
  188. package/dist/lib/server/credential-policy.js +260 -0
  189. package/dist/lib/server/credential-policy.js.map +1 -0
  190. package/dist/lib/server/decisioning/async-outcome.d.ts +17 -0
  191. package/dist/lib/server/decisioning/async-outcome.d.ts.map +1 -1
  192. package/dist/lib/server/decisioning/async-outcome.js +23 -18
  193. package/dist/lib/server/decisioning/async-outcome.js.map +1 -1
  194. package/dist/lib/server/decisioning/context.d.ts +8 -2
  195. package/dist/lib/server/decisioning/context.d.ts.map +1 -1
  196. package/dist/lib/server/decisioning/index.d.ts +1 -0
  197. package/dist/lib/server/decisioning/index.d.ts.map +1 -1
  198. package/dist/lib/server/decisioning/index.js.map +1 -1
  199. package/dist/lib/server/decisioning/runtime/from-platform.js +6 -4
  200. package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
  201. package/dist/lib/server/decisioning/runtime/postgres-task-registry.d.ts.map +1 -1
  202. package/dist/lib/server/decisioning/runtime/postgres-task-registry.js +5 -2
  203. package/dist/lib/server/decisioning/runtime/postgres-task-registry.js.map +1 -1
  204. package/dist/lib/server/decisioning/runtime/task-registry.d.ts +5 -0
  205. package/dist/lib/server/decisioning/runtime/task-registry.d.ts.map +1 -1
  206. package/dist/lib/server/decisioning/runtime/task-registry.js +4 -1
  207. package/dist/lib/server/decisioning/runtime/task-registry.js.map +1 -1
  208. package/dist/lib/server/decisioning/runtime/to-context.d.ts.map +1 -1
  209. package/dist/lib/server/decisioning/runtime/to-context.js +10 -2
  210. package/dist/lib/server/decisioning/runtime/to-context.js.map +1 -1
  211. package/dist/lib/server/dynamic-registry.d.ts +219 -0
  212. package/dist/lib/server/dynamic-registry.d.ts.map +1 -0
  213. package/dist/lib/server/dynamic-registry.js +245 -0
  214. package/dist/lib/server/dynamic-registry.js.map +1 -0
  215. package/dist/lib/server/index.d.ts +8 -0
  216. package/dist/lib/server/index.d.ts.map +1 -1
  217. package/dist/lib/server/index.js +15 -4
  218. package/dist/lib/server/index.js.map +1 -1
  219. package/dist/lib/server/operational-platform.d.ts +239 -0
  220. package/dist/lib/server/operational-platform.d.ts.map +1 -0
  221. package/dist/lib/server/operational-platform.js +94 -0
  222. package/dist/lib/server/operational-platform.js.map +1 -0
  223. package/dist/lib/server/test-controller.d.ts +2 -0
  224. package/dist/lib/server/test-controller.d.ts.map +1 -1
  225. package/dist/lib/server/test-controller.js +6 -11
  226. package/dist/lib/server/test-controller.js.map +1 -1
  227. package/dist/lib/server/wire-safe.d.ts +211 -0
  228. package/dist/lib/server/wire-safe.d.ts.map +1 -0
  229. package/dist/lib/server/wire-safe.js +231 -0
  230. package/dist/lib/server/wire-safe.js.map +1 -0
  231. package/dist/lib/server/wire-spec-fields.generated.d.ts +168 -0
  232. package/dist/lib/server/wire-spec-fields.generated.d.ts.map +1 -0
  233. package/dist/lib/server/wire-spec-fields.generated.js +172 -0
  234. package/dist/lib/server/wire-spec-fields.generated.js.map +1 -0
  235. package/dist/lib/testing/compliance/index.d.ts +2 -0
  236. package/dist/lib/testing/compliance/index.d.ts.map +1 -1
  237. package/dist/lib/testing/compliance/index.js +6 -1
  238. package/dist/lib/testing/compliance/index.js.map +1 -1
  239. package/dist/lib/testing/compliance/summary.d.ts +77 -0
  240. package/dist/lib/testing/compliance/summary.d.ts.map +1 -0
  241. package/dist/lib/testing/compliance/summary.js +176 -0
  242. package/dist/lib/testing/compliance/summary.js.map +1 -0
  243. package/dist/lib/testing/comply-controller.d.ts +2 -0
  244. package/dist/lib/testing/comply-controller.d.ts.map +1 -1
  245. package/dist/lib/testing/comply-controller.js.map +1 -1
  246. package/dist/lib/testing/storyboard/compliance.d.ts +26 -0
  247. package/dist/lib/testing/storyboard/compliance.d.ts.map +1 -1
  248. package/dist/lib/testing/storyboard/compliance.js +51 -0
  249. package/dist/lib/testing/storyboard/compliance.js.map +1 -1
  250. package/dist/lib/testing/storyboard/index.d.ts +2 -2
  251. package/dist/lib/testing/storyboard/index.d.ts.map +1 -1
  252. package/dist/lib/testing/storyboard/index.js +4 -2
  253. package/dist/lib/testing/storyboard/index.js.map +1 -1
  254. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  255. package/dist/lib/testing/storyboard/runner.js +58 -5
  256. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  257. package/dist/lib/version.d.ts +3 -3
  258. package/dist/lib/version.d.ts.map +1 -1
  259. package/dist/lib/version.js +3 -3
  260. package/dist/lib/version.js.map +1 -1
  261. package/package.json +2 -2
@@ -0,0 +1,584 @@
1
+ id: sales_social
2
+ version: "1.0.0"
3
+ title: "Social platform"
4
+ protocol: media-buy
5
+ category: sales_social
6
+ summary: "Social media platform that accepts audience segments, native creatives, and conversion events from buyer agents."
7
+ track: audiences
8
+ required_tools:
9
+ - sync_audiences
10
+ - sync_catalogs
11
+ - sync_creatives
12
+ - sync_event_sources
13
+
14
+ # Cross-step assertion (adcp#2664). status.monotonic rejects resource
15
+ # status transitions observed across steps that aren't on the spec
16
+ # lifecycle graph — e.g. approved → processing on a creative asset or
17
+ # active → pending_creatives on a media_buy.
18
+ invariants:
19
+ - status.monotonic
20
+
21
+ narrative: |
22
+ You run a social media platform — Snap, Meta, TikTok, Pinterest, or any walled garden that
23
+ sells advertising through audience-based targeting and native creative formats. A buyer agent
24
+ connects to set up an account, push audience segments, sync native creatives, track conversion
25
+ events, and monitor spend.
26
+
27
+ Unlike open-web media buys, social platforms require the buyer to push assets into the
28
+ platform's environment. Audiences are activated via sync_audiences, creatives are pushed via
29
+ sync_creatives in platform-native formats, and conversion events flow back via log_event.
30
+
31
+ This storyboard covers the social platform integration from the buyer's perspective:
32
+ account setup, audience activation, native creative push, event tracking, and financial
33
+ monitoring.
34
+
35
+ agent:
36
+ interaction_model: media_buy_seller
37
+ capabilities:
38
+ - sells_media
39
+ - accepts_briefs
40
+ - supports_non_guaranteed
41
+ examples:
42
+ - "Snap"
43
+ - "Meta"
44
+ - "TikTok"
45
+ - "Pinterest"
46
+
47
+ caller:
48
+ role: buyer_agent
49
+ example: "Scope3 (DSP)"
50
+
51
+ prerequisites:
52
+ description: |
53
+ The caller needs a brand identity, operator credentials, audience segment definitions,
54
+ and native creative assets. The test kit provides a sample brand with creative assets
55
+ suitable for social formats.
56
+ test_kit: "test-kits/acme-outdoor.yaml"
57
+
58
+ phases:
59
+ - id: capability_discovery
60
+ title: "Capability discovery"
61
+ narrative: |
62
+ The buyer calls get_adcp_capabilities to confirm the agent supports media buying before syncing audiences and native creatives.
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 media_buy in supported_protocols, confirming the agent sells media.
78
+ sample_request:
79
+ context:
80
+ correlation_id: "sales_social--get_capabilities"
81
+ validations:
82
+ - check: response_schema
83
+ description: "Response matches get-adcp-capabilities-response.json schema"
84
+ - check: field_present
85
+ path: "supported_protocols"
86
+ description: "Agent declares supported protocols"
87
+
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: "sales_social--get_capabilities"
94
+ description: "Context correlation_id returned unchanged"
95
+ - id: account_setup
96
+ title: "Account setup"
97
+ narrative: |
98
+ The buyer establishes an account with the social platform and verifies its status.
99
+ Social platforms often require advertiser verification before accepting ad spend.
100
+
101
+ steps:
102
+ - id: sync_accounts
103
+ title: "Register advertiser account"
104
+ narrative: |
105
+ The buyer registers their brand and operator with the social platform. The platform
106
+ provisions an advertiser account and returns its status. Social platforms may require
107
+ identity verification before the account goes active.
108
+ task: sync_accounts
109
+ schema_ref: "account/sync-accounts-request.json"
110
+ response_schema_ref: "account/sync-accounts-response.json"
111
+ doc_ref: "/accounts/tasks/sync_accounts"
112
+ stateful: true
113
+ expected: |
114
+ Return the advertiser account with:
115
+ - account_id: platform's identifier
116
+ - status: active or pending_approval (if verification required)
117
+ - account_scope: how the platform scopes this relationship
118
+
119
+ sample_request:
120
+ accounts:
121
+ - brand:
122
+ domain: "acmeoutdoor.example"
123
+ operator: "pinnacle-agency.example"
124
+ billing: "operator"
125
+
126
+ idempotency_key: "$generate:uuid_v4#sales_social_account_setup_sync_accounts"
127
+ context:
128
+ correlation_id: "sales_social--sync_accounts"
129
+ validations:
130
+ - check: response_schema
131
+ description: "Response matches sync-accounts-response.json schema"
132
+ - check: field_present
133
+ path: "accounts[0].account_id"
134
+ description: "Account has a platform-assigned ID"
135
+
136
+ - check: field_present
137
+ path: "context"
138
+ description: "Response echoes back the context object"
139
+ - check: field_value
140
+ path: "context.correlation_id"
141
+ value: "sales_social--sync_accounts"
142
+ description: "Context correlation_id returned unchanged"
143
+ - id: list_accounts
144
+ title: "Verify account status"
145
+ narrative: |
146
+ The buyer checks which accounts exist on the platform and their current status.
147
+ This confirms the account is active and shows any pending setup requirements.
148
+ task: list_accounts
149
+ schema_ref: "account/list-accounts-request.json"
150
+ response_schema_ref: "account/list-accounts-response.json"
151
+ doc_ref: "/accounts/tasks/list_accounts"
152
+ stateful: true
153
+ # Explicit-mode social platforms (Snap, Meta, TikTok) pre-provision
154
+ # advertiser accounts out-of-band — `sync_accounts` is intentionally
155
+ # missing_tool, with `list_accounts` as the canonical alternative.
156
+ # Declaring the substitution here lets the runner waive the
157
+ # downstream missing_tool cascade when list_accounts passes.
158
+ # See adcontextprotocol/adcp#3734.
159
+ provides_state_for: sync_accounts
160
+ expected: |
161
+ Return accounts matching the query:
162
+ - accounts array with status, account_id, brand, operator
163
+ - Active accounts ready for ad operations
164
+ - Pending accounts with accounts[].setup.url populated if verification is needed
165
+
166
+ sample_request:
167
+ context:
168
+ correlation_id: "sales_social--list_accounts"
169
+ validations:
170
+ - check: response_schema
171
+ description: "Response matches list-accounts-response.json schema"
172
+ - check: field_present
173
+ path: "accounts"
174
+ description: "Response contains accounts array"
175
+
176
+ - check: field_present
177
+ path: "context"
178
+ description: "Response echoes back the context object"
179
+ - check: field_value
180
+ path: "context.correlation_id"
181
+ value: "sales_social--list_accounts"
182
+ description: "Context correlation_id returned unchanged"
183
+ - id: audience_sync
184
+ title: "Audience activation"
185
+ narrative: |
186
+ The buyer pushes audience segments to the platform. Social platforms use these segments
187
+ for targeting — the buyer defines who to reach, and the platform matches against its
188
+ user base.
189
+
190
+ steps:
191
+ - id: sync_audiences
192
+ title: "Push audience segments"
193
+ narrative: |
194
+ The buyer syncs audience segment definitions to the platform. Each segment includes
195
+ targeting criteria that the platform evaluates against its user graph. The platform
196
+ returns match rates and segment status.
197
+ task: sync_audiences
198
+ schema_ref: "media-buy/sync-audiences-request.json"
199
+ response_schema_ref: "media-buy/sync-audiences-response.json"
200
+ doc_ref: "/media-buy/task-reference/sync_audiences"
201
+ comply_scenario: sync_audiences
202
+ stateful: true
203
+ expected: |
204
+ Accept and process audience segments:
205
+ - Per-segment status: active, processing, or rejected
206
+ - Match rate estimates where available
207
+ - Platform-assigned segment IDs
208
+
209
+ sample_request:
210
+ account:
211
+ brand:
212
+ domain: "acmeoutdoor.example"
213
+ operator: "pinnacle-agency.example"
214
+ audiences:
215
+ - audience_id: "outdoor_enthusiasts_25_54"
216
+ name: "Outdoor enthusiasts 25-54"
217
+ description: "Adults 25-54 interested in hiking, camping, and outdoor gear"
218
+
219
+ idempotency_key: "$generate:uuid_v4#sales_social_audience_sync_sync_audiences"
220
+ context:
221
+ correlation_id: "sales_social--sync_audiences"
222
+ validations:
223
+ - check: response_schema
224
+ description: "Response matches sync-audiences-response.json schema"
225
+
226
+ - check: field_present
227
+ path: "context"
228
+ description: "Response echoes back the context object"
229
+ - check: field_value
230
+ path: "context.correlation_id"
231
+ value: "sales_social--sync_audiences"
232
+ description: "Context correlation_id returned unchanged"
233
+ - id: creative_push
234
+ title: "Native creative sync"
235
+ narrative: |
236
+ The buyer pushes native creative assets to the platform. Social platforms render ads
237
+ in their native format — the buyer provides assets (images, headlines, descriptions)
238
+ and the platform assembles them into the native ad unit.
239
+
240
+ steps:
241
+ - id: sync_creatives
242
+ title: "Push native creative assets"
243
+ narrative: |
244
+ The buyer syncs creative assets for native ad formats. The platform validates
245
+ each creative against its format requirements and returns per-creative status.
246
+ task: sync_creatives
247
+ schema_ref: "creative/sync-creatives-request.json"
248
+ response_schema_ref: "creative/sync-creatives-response.json"
249
+ doc_ref: "/creative/task-reference/sync_creatives"
250
+ comply_scenario: creative_sync
251
+ stateful: true
252
+ expected: |
253
+ Accept and validate native creatives:
254
+ - Per-creative action: created or updated
255
+ - Per-creative status: accepted, pending_review, or rejected
256
+ - Validation errors for rejected creatives
257
+
258
+ sample_request:
259
+ account:
260
+ brand:
261
+ domain: "acmeoutdoor.example"
262
+ operator: "pinnacle-agency.example"
263
+ creatives:
264
+ - creative_id: "native_trail_pro"
265
+ name: "Trail Pro 3000 - Native"
266
+ format_id:
267
+ agent_url: "https://social-platform.example.com"
268
+ id: "native_feed"
269
+ assets:
270
+ image:
271
+ asset_type: "image"
272
+ url: "https://cdn.pinnacle-agency.example/trail-pro-native.png"
273
+ width: 1200
274
+ height: 628
275
+ mime_type: "image/png"
276
+ headline:
277
+ asset_type: "text"
278
+ content: "Trail Pro 3000 — Built for the Summit"
279
+
280
+ idempotency_key: "$generate:uuid_v4#sales_social_creative_push_sync_creatives"
281
+ context:
282
+ correlation_id: "sales_social--sync_creatives"
283
+ validations:
284
+ - check: response_schema
285
+ description: "Response matches sync-creatives-response.json schema"
286
+
287
+ - check: field_present
288
+ path: "context"
289
+ description: "Response echoes back the context object"
290
+ - check: field_value
291
+ path: "context.correlation_id"
292
+ value: "sales_social--sync_creatives"
293
+ description: "Context correlation_id returned unchanged"
294
+ - id: catalog_driven_dynamic_ads
295
+ title: "Catalog-driven dynamic product ads"
296
+ narrative: |
297
+ Social platforms routinely ship dynamic product ads (Snap Dynamic Ads, Meta DPA,
298
+ TikTok Dynamic Showcase): the buyer pushes a product catalog and the platform
299
+ renders per-impression creative pulling product images, titles, and tracker URLs
300
+ from catalog items. The creative template references catalog-item macros
301
+ (`{SKU}`, `{GTIN}`) whose values resolve to the specific item shown at
302
+ impression time.
303
+
304
+ This phase exercises the catalog-acceptance leg of that flow: push a small inline
305
+ product catalog (with `content_id_type: "sku"` declared so macro resolution binds
306
+ to the right field), then push a DPA creative template using the AdCP-native
307
+ `product_carousel_3_to_10` format on `creative.adcontextprotocol.org`. Real
308
+ social-platform formats (Meta `native_carousel`, Snap dynamic ad set, TikTok
309
+ dynamic showcase) are platform-specific refinements tracked as follow-ups on
310
+ #2640; the AdCP-native format is the interop baseline.
311
+
312
+ Runtime substitution-safety checks (that the emitted tracker URLs percent-encode
313
+ the macro values per `docs/creative/universal-macros#substitution-safety-catalog-item-macros`)
314
+ require the substitution-observer contract tracked in #2638; phases gated on
315
+ that contract activate when runners advertise it.
316
+
317
+ steps:
318
+ - id: sync_product_catalog
319
+ title: "Push a product catalog"
320
+ narrative: |
321
+ The buyer pushes a small inline product catalog — the shape social platforms
322
+ accept for dynamic product ads. Your platform validates each item and
323
+ returns per-item approval status.
324
+ task: sync_catalogs
325
+ schema_ref: "media-buy/sync-catalogs-request.json"
326
+ response_schema_ref: "media-buy/sync-catalogs-response.json"
327
+ doc_ref: "/media-buy/task-reference/sync_catalogs"
328
+ stateful: true
329
+ expected: |
330
+ Return per-catalog results with catalog_id, action, item_count, and
331
+ items_approved counts.
332
+
333
+ sample_request:
334
+ account:
335
+ brand:
336
+ domain: "acmeoutdoor.example"
337
+ operator: "pinnacle-agency.example"
338
+ catalogs:
339
+ - catalog_id: "acme_gear_spring_2026"
340
+ type: "product"
341
+ content_id_type: "sku"
342
+ name: "Acme Outdoor — Spring 2026 Gear"
343
+ items:
344
+ - item_id: "trail_pro_3000"
345
+ title: "Trail Pro 3000 Backpack"
346
+ description: "65L expedition pack with torso-length adjustment."
347
+ url: "https://acmeoutdoor.example/gear/trail-pro-3000"
348
+ image_url: "https://cdn.acmeoutdoor.example/gear/trail-pro-3000.jpg"
349
+ price:
350
+ amount: 289.00
351
+ currency: "USD"
352
+ - item_id: "summit_tent_2p"
353
+ title: "Summit 2P Ultralight Tent"
354
+ description: "2-person four-season tent, 1.8kg packed."
355
+ url: "https://acmeoutdoor.example/gear/summit-tent-2p"
356
+ image_url: "https://cdn.acmeoutdoor.example/gear/summit-tent-2p.jpg"
357
+ price:
358
+ amount: 549.00
359
+ currency: "USD"
360
+
361
+ idempotency_key: "$generate:uuid_v4#sales_social_catalog_driven_dynamic_ads_sync_product_catalog"
362
+ context:
363
+ correlation_id: "sales_social--sync_product_catalog"
364
+ validations:
365
+ - check: response_schema
366
+ description: "Response matches sync-catalogs-response.json schema"
367
+ - check: field_present
368
+ path: "catalogs[0].catalog_id"
369
+ description: "Catalog has an ID"
370
+ - check: field_present
371
+ path: "catalogs[0].item_count"
372
+ description: "Catalog reports item count"
373
+ - check: field_present
374
+ path: "context"
375
+ description: "Response echoes back the context object"
376
+ - check: field_value
377
+ path: "context.correlation_id"
378
+ value: "sales_social--sync_product_catalog"
379
+ description: "Context correlation_id returned unchanged"
380
+
381
+ - id: sync_dpa_creative
382
+ title: "Push a dynamic product ad creative with catalog-item macros"
383
+ narrative: |
384
+ The buyer pushes a creative template whose tracker URLs reference
385
+ catalog-item macros (`{SKU}`, `{GTIN}`). At impression time, your platform
386
+ substitutes each catalog item's values into the template to render the
387
+ per-impression ad.
388
+
389
+ The template uses the AdCP-native `product_carousel_3_to_10` format
390
+ (see `docs/creative/channels/carousels.mdx`). Per #2620, values substituted
391
+ into URL contexts MUST be percent-encoded such that only RFC 3986 unreserved
392
+ characters remain unescaped; nested macro expansion is prohibited. This step
393
+ validates that the template is accepted into the library; runtime
394
+ substitution validation is tracked under #2638.
395
+ task: sync_creatives
396
+ schema_ref: "creative/sync-creatives-request.json"
397
+ response_schema_ref: "creative/sync-creatives-response.json"
398
+ doc_ref: "/creative/task-reference/sync_creatives"
399
+ comply_scenario: creative_sync
400
+ stateful: true
401
+ expected: |
402
+ Accept the DPA creative template. Per-creative action: created or updated.
403
+
404
+ sample_request:
405
+ account:
406
+ brand:
407
+ domain: "acmeoutdoor.example"
408
+ operator: "pinnacle-agency.example"
409
+ creatives:
410
+ - creative_id: "acme_dpa_spring_2026"
411
+ name: "Acme Outdoor — Spring DPA template"
412
+ format_id:
413
+ agent_url: "https://creative.adcontextprotocol.org"
414
+ id: "product_carousel_3_to_10"
415
+ assets:
416
+ impression_pixel:
417
+ asset_type: "url"
418
+ url: "https://track.acmeoutdoor.example/imp?sku={SKU}&gtin={GTIN}&mb={MEDIA_BUY_ID}"
419
+ click_url:
420
+ asset_type: "url"
421
+ url: "https://track.acmeoutdoor.example/click?sku={SKU}"
422
+
423
+ idempotency_key: "$generate:uuid_v4#sales_social_catalog_driven_dynamic_ads_sync_dpa_creative"
424
+ context:
425
+ correlation_id: "sales_social--sync_dpa_creative"
426
+ validations:
427
+ - check: response_schema
428
+ description: "Response matches sync-creatives-response.json schema"
429
+ - check: field_present
430
+ path: "context"
431
+ description: "Response echoes back the context object"
432
+ - check: field_value
433
+ path: "context.correlation_id"
434
+ value: "sales_social--sync_dpa_creative"
435
+ description: "Context correlation_id returned unchanged"
436
+ - id: event_setup
437
+ title: "Event source setup"
438
+ narrative: |
439
+ Before sending conversion events, the buyer registers the event sources the platform
440
+ should expect events from — a website pixel, a mobile SDK, or a server-to-server feed.
441
+ The platform returns setup instructions and binds the event_source_id that later
442
+ log_event calls will reference.
443
+
444
+ steps:
445
+ - id: sync_event_sources
446
+ title: "Register conversion event sources"
447
+ narrative: |
448
+ The buyer tells the platform where conversion events will come from. The
449
+ platform records each event_source_id, returns integration code, and will
450
+ accept log_event calls that reference it.
451
+ task: sync_event_sources
452
+ schema_ref: "media-buy/sync-event-sources-request.json"
453
+ response_schema_ref: "media-buy/sync-event-sources-response.json"
454
+ doc_ref: "/media-buy/task-reference/sync_event_sources"
455
+ stateful: true
456
+ expected: |
457
+ Return event sources with:
458
+ - event_source_id and seller_id
459
+ - setup.snippet: integration code (JavaScript pixel, HTML tag, or pixel URL)
460
+ - setup.instructions: human-readable integration guide
461
+ - action: created or updated
462
+
463
+ sample_request:
464
+ account:
465
+ brand:
466
+ domain: "acmeoutdoor.example"
467
+ operator: "pinnacle-agency.example"
468
+ event_sources:
469
+ - event_source_id: "acmeoutdoor_website"
470
+ name: "Acme Outdoor Website"
471
+ event_types: ["purchase", "add_to_cart", "page_view", "lead"]
472
+ allowed_domains: ["acmeoutdoor.example"]
473
+
474
+ idempotency_key: "$generate:uuid_v4#sales_social_event_setup_sync_event_sources"
475
+ context:
476
+ correlation_id: "sales_social--sync_event_sources"
477
+ validations:
478
+ - check: response_schema
479
+ description: "Response matches sync-event-sources-response.json schema"
480
+ - check: field_present
481
+ path: "event_sources[0].setup.snippet"
482
+ description: "Event source includes setup snippet"
483
+
484
+ - check: field_present
485
+ path: "context"
486
+ description: "Response echoes back the context object"
487
+ - check: field_value
488
+ path: "context.correlation_id"
489
+ value: "sales_social--sync_event_sources"
490
+ description: "Context correlation_id returned unchanged"
491
+ - id: event_logging
492
+ title: "Conversion event tracking"
493
+ narrative: |
494
+ The buyer sends conversion events back to the platform for measurement and optimization.
495
+ Events include purchases, signups, and other post-click actions that the platform uses
496
+ to optimize delivery and report on campaign performance.
497
+
498
+ steps:
499
+ - id: log_event
500
+ title: "Send conversion events"
501
+ narrative: |
502
+ The buyer logs conversion events that occurred after ad exposure. The platform
503
+ records these events for attribution, reporting, and delivery optimization.
504
+ task: log_event
505
+ schema_ref: "media-buy/log-event-request.json"
506
+ response_schema_ref: "media-buy/log-event-response.json"
507
+ doc_ref: "/media-buy/task-reference/log_event"
508
+ stateful: true
509
+ expected: |
510
+ Acknowledge the events:
511
+ - Per-event status: accepted or rejected
512
+ - Event IDs for deduplication
513
+ - Attribution window validation
514
+
515
+ sample_request:
516
+ account:
517
+ brand:
518
+ domain: "acmeoutdoor.example"
519
+ operator: "pinnacle-agency.example"
520
+ event_source_id: "acmeoutdoor_website"
521
+ events:
522
+ - event_type: "purchase"
523
+ event_id: "evt_trail_pro_001"
524
+ event_time: "2026-04-05T14:30:00Z"
525
+ value: 149.99
526
+ currency: "USD"
527
+
528
+ idempotency_key: "$generate:uuid_v4#sales_social_event_logging_log_event"
529
+ context:
530
+ correlation_id: "sales_social--log_event"
531
+ validations:
532
+ - check: response_schema
533
+ description: "Response matches log-event-response.json schema"
534
+
535
+ - check: field_present
536
+ path: "context"
537
+ description: "Response echoes back the context object"
538
+ - check: field_value
539
+ path: "context.correlation_id"
540
+ value: "sales_social--log_event"
541
+ description: "Context correlation_id returned unchanged"
542
+ - id: financials
543
+ title: "Account financials"
544
+ narrative: |
545
+ The buyer checks account financials — spending, balance, and payment status. This is
546
+ essential for budget monitoring across multiple social platforms.
547
+
548
+ steps:
549
+ - id: get_account_financials
550
+ title: "Check account spending and balance"
551
+ narrative: |
552
+ The buyer retrieves financial information for the advertiser account. The platform
553
+ returns current spend, remaining balance, and payment status.
554
+ task: get_account_financials
555
+ schema_ref: "account/get-account-financials-request.json"
556
+ response_schema_ref: "account/get-account-financials-response.json"
557
+ doc_ref: "/accounts/tasks/get_account_financials"
558
+ stateful: true
559
+ expected: |
560
+ Return account financial data:
561
+ - Current spend to date
562
+ - Remaining balance or credit
563
+ - Payment status and terms
564
+ - Budget utilization metrics
565
+
566
+ sample_request:
567
+ account:
568
+ brand:
569
+ domain: "acmeoutdoor.example"
570
+ operator: "pinnacle-agency.example"
571
+
572
+ context:
573
+ correlation_id: "sales_social--get_account_financials"
574
+ validations:
575
+ - check: response_schema
576
+ description: "Response matches get-account-financials-response.json schema"
577
+
578
+ - check: field_present
579
+ path: "context"
580
+ description: "Response echoes back the context object"
581
+ - check: field_value
582
+ path: "context.correlation_id"
583
+ value: "sales_social--get_account_financials"
584
+ description: "Context correlation_id returned unchanged"