@adcp/sdk 14.0.0-beta.0 → 14.0.0-beta.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 (140) hide show
  1. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/account/get-account-financials-request.json +610 -0
  2. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/account/get-account-financials-response.json +1055 -0
  3. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/account/list-accounts-request.json +629 -0
  4. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/account/list-accounts-response.json +1558 -0
  5. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/account/report-usage-request.json +702 -0
  6. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/account/report-usage-response.json +309 -0
  7. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/account/sync-accounts-request.json +1113 -0
  8. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/account/sync-accounts-response.json +1567 -0
  9. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/account/sync-governance-request.json +662 -0
  10. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/account/sync-governance-response.json +921 -0
  11. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/creative/list-creatives-request.json +992 -0
  12. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/creative/list-creatives-response.json +5965 -0
  13. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/creative/sync-creatives-request.json +3936 -0
  14. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/creative/sync-creatives-response.json +3859 -0
  15. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/manifest.json +206 -0
  16. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/accept-proposal-request.json +601 -0
  17. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/accept-proposal-response.json +4799 -0
  18. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/buy-products-request.json +4107 -0
  19. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/buy-products-response.json +4799 -0
  20. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/control-media-buy-request.json +3365 -0
  21. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/control-media-buy-response.json +656 -0
  22. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/decline-proposals-request.json +334 -0
  23. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/decline-proposals-response.json +271 -0
  24. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/get-media-buy-delivery-request.json +1236 -0
  25. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/get-media-buy-delivery-response.json +2861 -0
  26. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/get-media-buys-request.json +678 -0
  27. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/get-media-buys-response.json +10861 -0
  28. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/list-products-request.json +4229 -0
  29. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/list-products-response.json +3824 -0
  30. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/log-event-request.json +421 -0
  31. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/log-event-response.json +394 -0
  32. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/media-buy-delivery-webhook-result.json +1366 -0
  33. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/provide-performance-feedback-request.json +884 -0
  34. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/provide-performance-feedback-response.json +422 -0
  35. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/refine-proposals-request.json +4335 -0
  36. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/refine-proposals-response.json +7328 -0
  37. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/request-proposals-request.json +4307 -0
  38. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/request-proposals-response.json +7105 -0
  39. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/sync-audiences-request.json +760 -0
  40. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/sync-audiences-response.json +541 -0
  41. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/sync-catalogs-request.json +1142 -0
  42. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/sync-catalogs-response.json +1153 -0
  43. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/sync-event-sources-request.json +743 -0
  44. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/sync-event-sources-response.json +619 -0
  45. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/account/get-account-financials-request.json +544 -0
  46. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/account/list-accounts-request.json +557 -0
  47. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/account/report-usage-request.json +617 -0
  48. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/account/sync-accounts-request.json +984 -0
  49. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/account/sync-governance-request.json +581 -0
  50. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/creative/list-creatives-request.json +878 -0
  51. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/creative/sync-creatives-request.json +3456 -0
  52. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/manifest.json +175 -0
  53. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/media-buy/accept-proposal-request.json +498 -0
  54. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/media-buy/buy-products-request.json +3675 -0
  55. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/media-buy/control-media-buy-request.json +3030 -0
  56. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/media-buy/decline-proposals-request.json +282 -0
  57. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/media-buy/get-media-buy-delivery-request.json +1136 -0
  58. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/media-buy/get-media-buys-request.json +597 -0
  59. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/media-buy/list-products-request.json +3780 -0
  60. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/media-buy/log-event-request.json +386 -0
  61. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/media-buy/provide-performance-feedback-request.json +784 -0
  62. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/media-buy/refine-proposals-request.json +3878 -0
  63. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/media-buy/request-proposals-request.json +3852 -0
  64. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/media-buy/sync-audiences-request.json +682 -0
  65. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/media-buy/sync-catalogs-request.json +1016 -0
  66. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/media-buy/sync-event-sources-request.json +660 -0
  67. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/protocol/get-adcp-capabilities-request.json +51 -0
  68. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/protocol/get-task-status-request.json +534 -0
  69. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/protocol/list-tasks-request.json +692 -0
  70. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/model-context/protocol/sync-agent-notification-configs-request.json +129 -0
  71. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/protocol/get-adcp-capabilities-request.json +58 -0
  72. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/protocol/get-adcp-capabilities-response.json +8069 -0
  73. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/protocol/get-task-status-request.json +601 -0
  74. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/protocol/get-task-status-response.json +612 -0
  75. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/protocol/list-tasks-request.json +775 -0
  76. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/protocol/list-tasks-response.json +483 -0
  77. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/protocol/sync-agent-notification-configs-request.json +155 -0
  78. package/dist/lib/schemas-data/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/protocol/sync-agent-notification-configs-response.json +382 -0
  79. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  80. package/dist/lib/server/create-adcp-server.d.mts +27 -0
  81. package/dist/lib/server/create-adcp-server.d.ts +27 -0
  82. package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
  83. package/dist/lib/server/create-adcp-server.js +120 -4
  84. package/dist/lib/server/create-adcp-server.js.map +1 -1
  85. package/dist/lib/server/create-adcp-server.mjs +121 -6
  86. package/dist/lib/server/create-adcp-server.mjs.map +1 -1
  87. package/dist/lib/server/decisioning/context.d.mts +6 -0
  88. package/dist/lib/server/decisioning/context.d.ts +6 -0
  89. package/dist/lib/server/decisioning/context.d.ts.map +1 -1
  90. package/dist/lib/server/decisioning/context.js.map +1 -1
  91. package/dist/lib/server/decisioning/index.d.mts +1 -1
  92. package/dist/lib/server/decisioning/index.d.ts +1 -1
  93. package/dist/lib/server/decisioning/index.d.ts.map +1 -1
  94. package/dist/lib/server/decisioning/index.js.map +1 -1
  95. package/dist/lib/server/decisioning/index.mjs.map +1 -1
  96. package/dist/lib/server/decisioning/platform.d.mts +21 -6
  97. package/dist/lib/server/decisioning/platform.d.ts +21 -6
  98. package/dist/lib/server/decisioning/platform.d.ts.map +1 -1
  99. package/dist/lib/server/decisioning/platform.js.map +1 -1
  100. package/dist/lib/server/decisioning/runtime/from-platform.d.ts.map +1 -1
  101. package/dist/lib/server/decisioning/runtime/from-platform.js +201 -18
  102. package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
  103. package/dist/lib/server/decisioning/runtime/from-platform.mjs +203 -19
  104. package/dist/lib/server/decisioning/runtime/from-platform.mjs.map +1 -1
  105. package/dist/lib/server/decisioning/runtime/to-context.d.ts.map +1 -1
  106. package/dist/lib/server/decisioning/runtime/to-context.js +6 -0
  107. package/dist/lib/server/decisioning/runtime/to-context.js.map +1 -1
  108. package/dist/lib/server/decisioning/runtime/to-context.mjs +6 -0
  109. package/dist/lib/server/decisioning/runtime/to-context.mjs.map +1 -1
  110. package/dist/lib/server/decisioning/runtime/validate-platform.d.ts.map +1 -1
  111. package/dist/lib/server/decisioning/runtime/validate-platform.js +35 -4
  112. package/dist/lib/server/decisioning/runtime/validate-platform.js.map +1 -1
  113. package/dist/lib/server/decisioning/runtime/validate-platform.mjs +35 -4
  114. package/dist/lib/server/decisioning/runtime/validate-platform.mjs.map +1 -1
  115. package/dist/lib/server/decisioning/specialisms/sales.d.mts +39 -0
  116. package/dist/lib/server/decisioning/specialisms/sales.d.ts +39 -0
  117. package/dist/lib/server/decisioning/specialisms/sales.d.ts.map +1 -1
  118. package/dist/lib/server/decisioning/specialisms/sales.js.map +1 -1
  119. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  120. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  121. package/dist/lib/validation/schema-loader.d.mts +2 -0
  122. package/dist/lib/validation/schema-loader.d.ts +2 -0
  123. package/dist/lib/validation/schema-loader.d.ts.map +1 -1
  124. package/dist/lib/validation/schema-loader.js +31 -0
  125. package/dist/lib/validation/schema-loader.js.map +1 -1
  126. package/dist/lib/validation/schema-loader.mjs +30 -0
  127. package/dist/lib/validation/schema-loader.mjs.map +1 -1
  128. package/dist/lib/version.d.mts +3 -3
  129. package/dist/lib/version.d.ts +3 -3
  130. package/dist/lib/version.js +3 -3
  131. package/dist/lib/version.js.map +1 -1
  132. package/dist/lib/version.mjs +3 -3
  133. package/dist/lib/version.mjs.map +1 -1
  134. package/docs/guides/BUILD-AN-AGENT.md +10 -1
  135. package/docs/guides/MEDIA-BUY-3.2-COMPATIBILITY.md +119 -0
  136. package/docs/llms.txt +1 -1
  137. package/docs/migration-12-to-14.md +8 -0
  138. package/docs/migration-13-to-14.md +30 -4
  139. package/docs/releases/14.0.0-beta.0.md +19 -1
  140. package/package.json +2 -1
@@ -0,0 +1,1558 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/account/list-accounts-response.json",
4
+ "type": "object",
5
+ "allOf": [
6
+ {
7
+ "$ref": "#/$defs/external:core~1version-envelope.json"
8
+ },
9
+ {
10
+ "$ref": "#/$defs/external:core~1protocol-envelope.json"
11
+ }
12
+ ],
13
+ "properties": {
14
+ "accounts": {
15
+ "type": "array",
16
+ "items": {
17
+ "$ref": "#/$defs/external:core~1account-with-authorization.json"
18
+ }
19
+ },
20
+ "errors": {
21
+ "type": "array",
22
+ "items": {
23
+ "$ref": "#/$defs/external:core~1error.json"
24
+ }
25
+ },
26
+ "pagination": {
27
+ "$ref": "#/$defs/external:core~1pagination-response.json"
28
+ },
29
+ "context": {
30
+ "$ref": "#/$defs/external:core~1context.json"
31
+ },
32
+ "ext": {
33
+ "$ref": "#/$defs/external:core~1ext.json"
34
+ }
35
+ },
36
+ "required": [
37
+ "accounts"
38
+ ],
39
+ "additionalProperties": true,
40
+ "$defs": {
41
+ "external:core/version-envelope.json": {
42
+ "type": "object",
43
+ "properties": {
44
+ "adcp_version": {
45
+ "type": "string",
46
+ "pattern": "^(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[a-zA-Z0-9](?:[a-zA-Z0-9.-]*[a-zA-Z0-9])?)?$"
47
+ },
48
+ "adcp_major_version": {
49
+ "type": "integer",
50
+ "deprecated": true,
51
+ "minimum": 1,
52
+ "maximum": 99
53
+ }
54
+ }
55
+ },
56
+ "external:core/protocol-envelope.json": {
57
+ "type": "object",
58
+ "properties": {
59
+ "context_id": {
60
+ "type": "string"
61
+ },
62
+ "context": {
63
+ "$ref": "#/$defs/external:core~1context.json"
64
+ },
65
+ "task_id": {
66
+ "type": "string",
67
+ "x-entity": "task"
68
+ },
69
+ "status": {
70
+ "$ref": "#/$defs/external:enums~1task-status.json"
71
+ },
72
+ "message": {
73
+ "type": "string"
74
+ },
75
+ "timestamp": {
76
+ "type": "string",
77
+ "format": "date-time"
78
+ },
79
+ "replayed": {
80
+ "type": "boolean",
81
+ "default": false
82
+ },
83
+ "adcp_error": {
84
+ "$ref": "#/$defs/external:core~1error.json"
85
+ },
86
+ "push_notification_config": {
87
+ "$ref": "#/$defs/external:core~1push-notification-config.json"
88
+ },
89
+ "governance_context": {
90
+ "type": "string",
91
+ "minLength": 1,
92
+ "maxLength": 4096,
93
+ "pattern": "^[\\x20-\\x7E]+$"
94
+ },
95
+ "payload": {
96
+ "type": "object",
97
+ "x-adcp-open-payload": true,
98
+ "additionalProperties": true
99
+ }
100
+ },
101
+ "required": [
102
+ "status"
103
+ ],
104
+ "additionalProperties": true,
105
+ "not": {
106
+ "anyOf": [
107
+ {
108
+ "required": [
109
+ "task_status"
110
+ ]
111
+ },
112
+ {
113
+ "required": [
114
+ "response_status"
115
+ ]
116
+ }
117
+ ]
118
+ },
119
+ "notes": [
120
+ "Task response schemas (e.g., get-products-response.json) define ONLY the body fields; protocol-layer fields live on this envelope.",
121
+ "Transport serialization (normative):",
122
+ " - MCP: envelope fields and task-body fields are siblings at the root of the tool response. The `payload` object is NOT serialized as a nested key — its body fields are flattened to the root alongside `status`, `context_id`, `context`, etc. This matches MCP's native `structuredContent` convention and is what shipping SDKs (@adcp/client) emit. Conformant MCP receivers parse from the flat root; receivers that expect a nested `payload` key MUST migrate.",
123
+ " - A2A 1.0 with the AdCP profile extension: `task.status.state` carries the transport invocation lifecycle used to select the extraction location; `task.contextId` carries `context_id`, while `task.id` is an independent A2A transport identifier. The complete AdCP response, including its protocol-level `status` and any application-layer `task_id`, is canonically carried in `task.artifacts[0].parts[].DataPart` on final states; `task.status.message.parts[].DataPart` is the fallback container used only for interim A2A states (working, native submitted, input-required) where no final artifact has been emitted yet. For a structured AdCP business rejection or Submitted response, A2A is `completed` while the DataPart carries `status: rejected` or `status: submitted` because the handler invocation succeeded. An AdCP `task_id` MUST NOT be copied into artifact metadata or inferred from `task.id`. Receivers MUST prefer artifacts when present and MUST NOT overwrite a DataPart's status with the A2A state. See `a2a-profile-extension.mdx` and `a2a-response-extraction.mdx` for the full binding and extraction algorithm.",
124
+ " - REST: envelope fields MAY ride on HTTP headers (e.g., `X-AdCP-Status`, `X-AdCP-Context-Id`) or as JSON body siblings; body fields appear at the JSON body root. Implementers choosing the header path SHOULD also mirror to body siblings for non-streaming callers.",
125
+ "Across all three: envelope and body fields are conceptually a single response object. A task response schema MAY declare body fields with the same name as envelope fields (e.g., `errors[]` body-level for per-record validation results vs envelope-level for fatal task failure) and the two MUST be treated as distinct fields by name within their respective namespaces — see `error-handling.mdx#envelope-vs-payload-errors-the-two-layer-model`.",
126
+ "`status` is REQUIRED on the conceptual AdCP response across all transports. On MCP and REST it appears as a sibling field at the JSON root (or `structuredContent` root for MCP). On A2A it is carried inside the authoritative DataPart alongside the task body; `task.status.state` separately carries the A2A transport lifecycle and selects where that DataPart is found. Receivers MUST preserve the DataPart status when present. The schema-level `required: [status]` enforces the post-extraction AdCP shape. `payload` remains intentionally NOT required — it is a documentary grouping construct, never a required wire field. See `mcp-guide.mdx` and `a2a-guide.mdx` for the wire-level patterns receivers MUST implement.",
127
+ "Receivers MUST handle absence of an envelope field (e.g., `replayed` omitted) as the field's documented default — see each field's `default` clause."
128
+ ]
129
+ },
130
+ "external:core/context.json": {
131
+ "type": "object",
132
+ "additionalProperties": true
133
+ },
134
+ "external:enums/task-status.json": {
135
+ "type": "string",
136
+ "enum": [
137
+ "submitted",
138
+ "working",
139
+ "input-required",
140
+ "completed",
141
+ "canceled",
142
+ "failed",
143
+ "rejected",
144
+ "auth-required",
145
+ "unknown"
146
+ ]
147
+ },
148
+ "external:core/error.json": {
149
+ "type": "object",
150
+ "properties": {
151
+ "code": {
152
+ "type": "string",
153
+ "minLength": 1,
154
+ "maxLength": 64
155
+ },
156
+ "message": {
157
+ "type": "string"
158
+ },
159
+ "field": {
160
+ "type": "string"
161
+ },
162
+ "suggestion": {
163
+ "type": "string"
164
+ },
165
+ "retry_after": {
166
+ "type": "number",
167
+ "minimum": 1,
168
+ "maximum": 3600
169
+ },
170
+ "issues": {
171
+ "type": "array",
172
+ "items": {
173
+ "type": "object",
174
+ "properties": {
175
+ "pointer": {
176
+ "type": "string"
177
+ },
178
+ "message": {
179
+ "type": "string"
180
+ },
181
+ "keyword": {
182
+ "type": "string"
183
+ },
184
+ "schemaPath": {
185
+ "type": "string"
186
+ },
187
+ "schema_id": {
188
+ "type": "string"
189
+ },
190
+ "discriminator": {
191
+ "type": "array",
192
+ "items": {
193
+ "type": "object",
194
+ "properties": {
195
+ "property_name": {
196
+ "type": "string"
197
+ },
198
+ "value": {
199
+ "type": [
200
+ "string",
201
+ "number",
202
+ "boolean",
203
+ "null"
204
+ ]
205
+ }
206
+ },
207
+ "required": [
208
+ "property_name",
209
+ "value"
210
+ ],
211
+ "additionalProperties": false
212
+ }
213
+ }
214
+ },
215
+ "required": [
216
+ "pointer",
217
+ "message",
218
+ "keyword"
219
+ ],
220
+ "additionalProperties": true
221
+ }
222
+ },
223
+ "details": {
224
+ "type": "object",
225
+ "additionalProperties": true
226
+ },
227
+ "recovery": {
228
+ "type": "string",
229
+ "enum": [
230
+ "transient",
231
+ "correctable",
232
+ "terminal"
233
+ ]
234
+ },
235
+ "source": {
236
+ "type": "string",
237
+ "enum": [
238
+ "producer",
239
+ "sdk"
240
+ ]
241
+ },
242
+ "sdk_id": {
243
+ "type": "string"
244
+ }
245
+ },
246
+ "required": [
247
+ "code",
248
+ "message"
249
+ ],
250
+ "additionalProperties": true
251
+ },
252
+ "external:core/push-notification-config.json": {
253
+ "type": "object",
254
+ "properties": {
255
+ "url": {
256
+ "type": "string",
257
+ "format": "uri"
258
+ },
259
+ "operation_id": {
260
+ "type": "string",
261
+ "minLength": 1,
262
+ "maxLength": 255,
263
+ "pattern": "^[A-Za-z0-9_.:-]{1,255}$"
264
+ },
265
+ "token": {
266
+ "type": "string",
267
+ "minLength": 16,
268
+ "maxLength": 4096
269
+ },
270
+ "authentication": {
271
+ "type": "object",
272
+ "deprecated": true,
273
+ "properties": {
274
+ "schemes": {
275
+ "type": "array",
276
+ "items": {
277
+ "$ref": "#/$defs/external:enums~1auth-scheme.json"
278
+ },
279
+ "minItems": 1,
280
+ "maxItems": 1
281
+ },
282
+ "credentials": {
283
+ "type": "string",
284
+ "minLength": 32
285
+ }
286
+ },
287
+ "required": [
288
+ "schemes",
289
+ "credentials"
290
+ ],
291
+ "additionalProperties": false
292
+ }
293
+ },
294
+ "required": [
295
+ "url"
296
+ ]
297
+ },
298
+ "external:enums/auth-scheme.json": {
299
+ "deprecated": true,
300
+ "type": "string",
301
+ "enum": [
302
+ "Bearer",
303
+ "HMAC-SHA256"
304
+ ]
305
+ },
306
+ "external:core/account-with-authorization.json": {
307
+ "allOf": [
308
+ {
309
+ "$ref": "#/$defs/external:core~1account.json"
310
+ },
311
+ {
312
+ "type": "object",
313
+ "properties": {
314
+ "authorization": {
315
+ "$ref": "#/$defs/external:core~1account-authorization.json"
316
+ }
317
+ }
318
+ }
319
+ ]
320
+ },
321
+ "external:core/account.json": {
322
+ "type": "object",
323
+ "properties": {
324
+ "account_id": {
325
+ "type": "string",
326
+ "x-entity": "account"
327
+ },
328
+ "name": {
329
+ "type": "string"
330
+ },
331
+ "advertiser": {
332
+ "type": "string"
333
+ },
334
+ "billing_proxy": {
335
+ "type": "string"
336
+ },
337
+ "status": {
338
+ "$ref": "#/$defs/external:enums~1account-status.json"
339
+ },
340
+ "brand": {
341
+ "$ref": "#/$defs/external:core~1brand-ref.json"
342
+ },
343
+ "operator": {
344
+ "type": "string",
345
+ "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$",
346
+ "x-entity": "operator"
347
+ },
348
+ "operator_unit": {
349
+ "$ref": "#/$defs/external:core~1operator-unit.json"
350
+ },
351
+ "revision": {
352
+ "type": "integer",
353
+ "minimum": 1
354
+ },
355
+ "identity_change": {
356
+ "$ref": "#/$defs/external:core~1account-identity-change.json"
357
+ },
358
+ "currency": {
359
+ "type": "string",
360
+ "pattern": "^[A-Z]{3}$"
361
+ },
362
+ "timezone": {
363
+ "type": "string",
364
+ "minLength": 1
365
+ },
366
+ "billing": {
367
+ "$ref": "#/$defs/external:enums~1billing-party.json"
368
+ },
369
+ "billing_entity": {
370
+ "$ref": "#/$defs/external:core~1business-entity.json"
371
+ },
372
+ "destination_billing_entity": {
373
+ "not": {}
374
+ },
375
+ "rate_card": {
376
+ "type": "string"
377
+ },
378
+ "payment_terms": {
379
+ "$ref": "#/$defs/external:enums~1payment-terms.json"
380
+ },
381
+ "credit_limit": {
382
+ "type": "object",
383
+ "properties": {
384
+ "amount": {
385
+ "type": "number",
386
+ "minimum": 0
387
+ },
388
+ "currency": {
389
+ "type": "string",
390
+ "pattern": "^[A-Z]{3}$"
391
+ }
392
+ },
393
+ "required": [
394
+ "amount",
395
+ "currency"
396
+ ]
397
+ },
398
+ "setup": {
399
+ "type": "object",
400
+ "properties": {
401
+ "url": {
402
+ "type": "string",
403
+ "format": "uri"
404
+ },
405
+ "message": {
406
+ "type": "string"
407
+ },
408
+ "expires_at": {
409
+ "type": "string",
410
+ "format": "date-time"
411
+ }
412
+ },
413
+ "required": [
414
+ "message"
415
+ ],
416
+ "additionalProperties": true
417
+ },
418
+ "account_scope": {
419
+ "$ref": "#/$defs/external:enums~1account-scope.json"
420
+ },
421
+ "governance_agents": {
422
+ "type": "array",
423
+ "items": {
424
+ "type": "object",
425
+ "properties": {
426
+ "url": {
427
+ "type": "string",
428
+ "format": "uri",
429
+ "pattern": "^https://"
430
+ }
431
+ },
432
+ "required": [
433
+ "url"
434
+ ],
435
+ "additionalProperties": false
436
+ },
437
+ "minItems": 1,
438
+ "maxItems": 1
439
+ },
440
+ "reporting_bucket": {
441
+ "type": "object",
442
+ "properties": {
443
+ "protocol": {
444
+ "$ref": "#/$defs/external:enums~1cloud-storage-protocol.json"
445
+ },
446
+ "bucket": {
447
+ "type": "string",
448
+ "minLength": 3,
449
+ "maxLength": 63,
450
+ "pattern": "^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$"
451
+ },
452
+ "prefix": {
453
+ "type": "string",
454
+ "maxLength": 512,
455
+ "pattern": "^[a-zA-Z0-9/_.-]+$"
456
+ },
457
+ "region": {
458
+ "type": "string",
459
+ "maxLength": 64,
460
+ "pattern": "^[a-z0-9-]+$"
461
+ },
462
+ "format": {
463
+ "type": "string",
464
+ "enum": [
465
+ "jsonl",
466
+ "csv",
467
+ "parquet",
468
+ "avro",
469
+ "orc"
470
+ ],
471
+ "default": "jsonl"
472
+ },
473
+ "compression": {
474
+ "type": "string",
475
+ "enum": [
476
+ "gzip",
477
+ "none"
478
+ ],
479
+ "default": "gzip"
480
+ },
481
+ "file_retention_days": {
482
+ "type": "integer",
483
+ "minimum": 1
484
+ },
485
+ "setup_instructions": {
486
+ "type": "string",
487
+ "format": "uri",
488
+ "pattern": "^https://"
489
+ }
490
+ },
491
+ "required": [
492
+ "protocol",
493
+ "bucket",
494
+ "file_retention_days"
495
+ ],
496
+ "additionalProperties": false
497
+ },
498
+ "sandbox": {
499
+ "type": "boolean"
500
+ },
501
+ "notification_configs": {
502
+ "type": "array",
503
+ "items": {
504
+ "$ref": "#/$defs/external:core~1notification-config.json"
505
+ },
506
+ "maxItems": 16
507
+ },
508
+ "webhook_activity": {
509
+ "type": "array",
510
+ "items": {
511
+ "$ref": "#/$defs/external:core~1webhook-activity-record.json"
512
+ },
513
+ "maxItems": 200
514
+ },
515
+ "ext": {
516
+ "$ref": "#/$defs/external:core~1ext.json"
517
+ }
518
+ },
519
+ "required": [
520
+ "account_id",
521
+ "name",
522
+ "status"
523
+ ],
524
+ "not": {
525
+ "required": [
526
+ "destination_billing_entity"
527
+ ]
528
+ },
529
+ "additionalProperties": true,
530
+ "dependentRequired": {
531
+ "identity_change": [
532
+ "revision"
533
+ ]
534
+ }
535
+ },
536
+ "external:enums/account-status.json": {
537
+ "type": "string",
538
+ "enum": [
539
+ "active",
540
+ "pending_approval",
541
+ "rejected",
542
+ "payment_required",
543
+ "suspended",
544
+ "closed"
545
+ ]
546
+ },
547
+ "external:core/brand-ref.json": {
548
+ "type": "object",
549
+ "properties": {
550
+ "domain": {
551
+ "type": "string",
552
+ "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$"
553
+ },
554
+ "brand_id": {
555
+ "$ref": "#/$defs/external:core~1brand-id.json"
556
+ },
557
+ "countries": {
558
+ "type": "array",
559
+ "items": {
560
+ "type": "string",
561
+ "pattern": "^[A-Z]{2}$"
562
+ },
563
+ "minItems": 1,
564
+ "uniqueItems": true
565
+ },
566
+ "industries": {
567
+ "type": "array",
568
+ "items": {
569
+ "type": "string"
570
+ }
571
+ },
572
+ "data_subject_contestation": {
573
+ "type": "object",
574
+ "properties": {
575
+ "url": {
576
+ "type": "string",
577
+ "format": "uri",
578
+ "pattern": "^https://"
579
+ },
580
+ "email": {
581
+ "type": "string",
582
+ "format": "email"
583
+ },
584
+ "languages": {
585
+ "type": "array",
586
+ "items": {
587
+ "type": "string"
588
+ }
589
+ }
590
+ },
591
+ "anyOf": [
592
+ {
593
+ "required": [
594
+ "url"
595
+ ]
596
+ },
597
+ {
598
+ "required": [
599
+ "email"
600
+ ]
601
+ }
602
+ ],
603
+ "additionalProperties": false
604
+ },
605
+ "brand_kit_override": {
606
+ "type": "object",
607
+ "properties": {
608
+ "logo": {
609
+ "$ref": "#/$defs/external:core~1assets~1image-asset.json"
610
+ },
611
+ "colors": {
612
+ "type": "object",
613
+ "properties": {
614
+ "primary": {
615
+ "type": "string",
616
+ "pattern": "^#[0-9a-fA-F]{6}$"
617
+ },
618
+ "secondary": {
619
+ "type": "string",
620
+ "pattern": "^#[0-9a-fA-F]{6}$"
621
+ },
622
+ "accent": {
623
+ "type": "string",
624
+ "pattern": "^#[0-9a-fA-F]{6}$"
625
+ }
626
+ },
627
+ "additionalProperties": true
628
+ },
629
+ "voice": {
630
+ "type": "string"
631
+ },
632
+ "tagline": {
633
+ "type": "string"
634
+ }
635
+ },
636
+ "additionalProperties": true
637
+ }
638
+ },
639
+ "required": [
640
+ "domain"
641
+ ],
642
+ "additionalProperties": false
643
+ },
644
+ "external:core/brand-id.json": {
645
+ "type": "string",
646
+ "pattern": "^[a-z0-9_]+$",
647
+ "x-entity": "advertiser_brand"
648
+ },
649
+ "external:core/assets/image-asset.json": {
650
+ "type": "object",
651
+ "properties": {
652
+ "asset_type": {
653
+ "type": "string",
654
+ "const": "image"
655
+ },
656
+ "url": {
657
+ "type": "string",
658
+ "format": "uri"
659
+ },
660
+ "width": {
661
+ "type": "integer",
662
+ "minimum": 1
663
+ },
664
+ "height": {
665
+ "type": "integer",
666
+ "minimum": 1
667
+ },
668
+ "pixel_ratio": {
669
+ "type": "number",
670
+ "exclusiveMinimum": 0
671
+ },
672
+ "format": {
673
+ "type": "string"
674
+ },
675
+ "alt_text": {
676
+ "type": "string",
677
+ "x-accessibility": true
678
+ },
679
+ "provenance": {
680
+ "$ref": "#/$defs/external:core~1provenance.json"
681
+ }
682
+ },
683
+ "required": [
684
+ "asset_type",
685
+ "url",
686
+ "width",
687
+ "height"
688
+ ],
689
+ "additionalProperties": true
690
+ },
691
+ "external:core/provenance.json": {
692
+ "type": "object",
693
+ "properties": {
694
+ "digital_source_type": {
695
+ "$ref": "#/$defs/external:enums~1digital-source-type.json"
696
+ },
697
+ "synthetic_depiction": {
698
+ "type": "boolean"
699
+ },
700
+ "ai_tool": {
701
+ "type": "object",
702
+ "properties": {
703
+ "name": {
704
+ "type": "string"
705
+ },
706
+ "version": {
707
+ "type": "string"
708
+ },
709
+ "provider": {
710
+ "type": "string"
711
+ }
712
+ },
713
+ "required": [
714
+ "name"
715
+ ]
716
+ },
717
+ "human_oversight": {
718
+ "type": "string",
719
+ "enum": [
720
+ "none",
721
+ "prompt_only",
722
+ "selected",
723
+ "edited",
724
+ "directed"
725
+ ]
726
+ },
727
+ "declared_by": {
728
+ "type": "object",
729
+ "properties": {
730
+ "agent_url": {
731
+ "type": "string",
732
+ "format": "uri"
733
+ },
734
+ "role": {
735
+ "type": "string",
736
+ "enum": [
737
+ "creator",
738
+ "advertiser",
739
+ "agency",
740
+ "platform",
741
+ "tool"
742
+ ]
743
+ }
744
+ },
745
+ "required": [
746
+ "role"
747
+ ]
748
+ },
749
+ "declared_at": {
750
+ "type": "string",
751
+ "format": "date-time"
752
+ },
753
+ "created_time": {
754
+ "type": "string",
755
+ "format": "date-time"
756
+ },
757
+ "c2pa": {
758
+ "type": "object",
759
+ "properties": {
760
+ "manifest_url": {
761
+ "type": "string",
762
+ "format": "uri"
763
+ }
764
+ },
765
+ "required": [
766
+ "manifest_url"
767
+ ]
768
+ },
769
+ "embedded_provenance": {
770
+ "type": "array",
771
+ "minItems": 1,
772
+ "items": {
773
+ "type": "object",
774
+ "properties": {
775
+ "method": {
776
+ "$ref": "#/$defs/external:enums~1embedded-provenance-method.json"
777
+ },
778
+ "standard": {
779
+ "type": "string"
780
+ },
781
+ "provider": {
782
+ "type": "string"
783
+ },
784
+ "verify_agent": {
785
+ "type": "object",
786
+ "properties": {
787
+ "agent_url": {
788
+ "type": "string",
789
+ "format": "uri",
790
+ "pattern": "^https://"
791
+ },
792
+ "feature_id": {
793
+ "type": "string"
794
+ }
795
+ },
796
+ "required": [
797
+ "agent_url"
798
+ ],
799
+ "additionalProperties": false
800
+ },
801
+ "embedded_at": {
802
+ "type": "string",
803
+ "format": "date-time"
804
+ }
805
+ },
806
+ "required": [
807
+ "method",
808
+ "provider"
809
+ ]
810
+ }
811
+ },
812
+ "watermarks": {
813
+ "type": "array",
814
+ "minItems": 1,
815
+ "items": {
816
+ "type": "object",
817
+ "properties": {
818
+ "media_type": {
819
+ "$ref": "#/$defs/external:enums~1watermark-media-type.json"
820
+ },
821
+ "provider": {
822
+ "type": "string"
823
+ },
824
+ "verify_agent": {
825
+ "type": "object",
826
+ "properties": {
827
+ "agent_url": {
828
+ "type": "string",
829
+ "format": "uri",
830
+ "pattern": "^https://"
831
+ },
832
+ "feature_id": {
833
+ "type": "string"
834
+ }
835
+ },
836
+ "required": [
837
+ "agent_url"
838
+ ],
839
+ "additionalProperties": false
840
+ },
841
+ "c2pa_action": {
842
+ "$ref": "#/$defs/external:enums~1c2pa-watermark-action.json"
843
+ },
844
+ "embedded_at": {
845
+ "type": "string",
846
+ "format": "date-time"
847
+ }
848
+ },
849
+ "required": [
850
+ "media_type",
851
+ "provider"
852
+ ]
853
+ }
854
+ },
855
+ "disclosure": {
856
+ "type": "object",
857
+ "properties": {
858
+ "required": {
859
+ "type": "boolean"
860
+ },
861
+ "jurisdictions": {
862
+ "type": "array",
863
+ "items": {
864
+ "type": "object",
865
+ "properties": {
866
+ "country": {
867
+ "type": "string"
868
+ },
869
+ "region": {
870
+ "type": "string"
871
+ },
872
+ "regulation": {
873
+ "type": "string"
874
+ },
875
+ "label_text": {
876
+ "type": "string"
877
+ },
878
+ "render_guidance": {
879
+ "type": "object",
880
+ "minProperties": 1,
881
+ "properties": {
882
+ "persistence": {
883
+ "$ref": "#/$defs/external:enums~1disclosure-persistence.json"
884
+ },
885
+ "min_duration_ms": {
886
+ "type": "integer",
887
+ "minimum": 1
888
+ },
889
+ "positions": {
890
+ "type": "array",
891
+ "items": {
892
+ "$ref": "#/$defs/external:enums~1disclosure-position.json"
893
+ },
894
+ "minItems": 1,
895
+ "uniqueItems": true
896
+ },
897
+ "ext": {
898
+ "$ref": "#/$defs/external:core~1ext.json"
899
+ }
900
+ }
901
+ }
902
+ },
903
+ "required": [
904
+ "country",
905
+ "regulation"
906
+ ]
907
+ },
908
+ "minItems": 1
909
+ }
910
+ },
911
+ "required": [
912
+ "required"
913
+ ]
914
+ },
915
+ "verification": {
916
+ "type": "array",
917
+ "minItems": 1,
918
+ "items": {
919
+ "type": "object",
920
+ "properties": {
921
+ "verified_by": {
922
+ "type": "string"
923
+ },
924
+ "verified_time": {
925
+ "type": "string",
926
+ "format": "date-time"
927
+ },
928
+ "result": {
929
+ "type": "string",
930
+ "enum": [
931
+ "authentic",
932
+ "ai_generated",
933
+ "ai_modified",
934
+ "inconclusive"
935
+ ]
936
+ },
937
+ "confidence": {
938
+ "type": "number",
939
+ "minimum": 0,
940
+ "maximum": 1
941
+ },
942
+ "details_url": {
943
+ "type": "string",
944
+ "format": "uri"
945
+ }
946
+ },
947
+ "required": [
948
+ "verified_by",
949
+ "result"
950
+ ]
951
+ }
952
+ },
953
+ "ext": {
954
+ "$ref": "#/$defs/external:core~1ext.json"
955
+ }
956
+ }
957
+ },
958
+ "external:enums/digital-source-type.json": {
959
+ "type": "string",
960
+ "enum": [
961
+ "digital_capture",
962
+ "digital_creation",
963
+ "trained_algorithmic_media",
964
+ "composite_with_trained_algorithmic_media",
965
+ "algorithmic_media",
966
+ "composite_capture",
967
+ "composite_synthetic",
968
+ "human_edits",
969
+ "data_driven_media"
970
+ ]
971
+ },
972
+ "external:enums/embedded-provenance-method.json": {
973
+ "type": "string",
974
+ "enum": [
975
+ "manifest_wrapper",
976
+ "provenance_markers"
977
+ ]
978
+ },
979
+ "external:enums/watermark-media-type.json": {
980
+ "type": "string",
981
+ "enum": [
982
+ "audio",
983
+ "image",
984
+ "video",
985
+ "text"
986
+ ]
987
+ },
988
+ "external:enums/c2pa-watermark-action.json": {
989
+ "type": "string",
990
+ "enum": [
991
+ "c2pa.watermarked.bound",
992
+ "c2pa.watermarked.unbound"
993
+ ]
994
+ },
995
+ "external:enums/disclosure-persistence.json": {
996
+ "type": "string",
997
+ "enum": [
998
+ "continuous",
999
+ "initial",
1000
+ "flexible"
1001
+ ]
1002
+ },
1003
+ "external:enums/disclosure-position.json": {
1004
+ "type": "string",
1005
+ "enum": [
1006
+ "prominent",
1007
+ "footer",
1008
+ "audio",
1009
+ "subtitle",
1010
+ "overlay",
1011
+ "end_card",
1012
+ "pre_roll",
1013
+ "companion"
1014
+ ]
1015
+ },
1016
+ "external:core/ext.json": {
1017
+ "type": "object",
1018
+ "additionalProperties": true
1019
+ },
1020
+ "external:core/operator-unit.json": {
1021
+ "x-entity": "operator_unit",
1022
+ "type": "object",
1023
+ "properties": {
1024
+ "id": {
1025
+ "type": "string",
1026
+ "minLength": 1,
1027
+ "maxLength": 255,
1028
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$"
1029
+ },
1030
+ "name": {
1031
+ "type": "string",
1032
+ "minLength": 1,
1033
+ "maxLength": 200
1034
+ }
1035
+ },
1036
+ "required": [
1037
+ "id"
1038
+ ],
1039
+ "additionalProperties": false
1040
+ },
1041
+ "external:core/account-identity-change.json": {
1042
+ "oneOf": [
1043
+ {
1044
+ "type": "object",
1045
+ "properties": {
1046
+ "status": {
1047
+ "type": "string",
1048
+ "const": "pending_approval"
1049
+ },
1050
+ "requested_operator_identity": {
1051
+ "$ref": "#/$defs/external:core~1operator-identity.json"
1052
+ },
1053
+ "requested_at": {
1054
+ "type": "string",
1055
+ "format": "date-time"
1056
+ }
1057
+ },
1058
+ "required": [
1059
+ "status",
1060
+ "requested_operator_identity"
1061
+ ],
1062
+ "additionalProperties": false
1063
+ },
1064
+ {
1065
+ "type": "object",
1066
+ "properties": {
1067
+ "status": {
1068
+ "type": "string",
1069
+ "const": "rejected"
1070
+ },
1071
+ "requested_operator_identity": {
1072
+ "$ref": "#/$defs/external:core~1operator-identity.json"
1073
+ },
1074
+ "requested_at": {
1075
+ "type": "string",
1076
+ "format": "date-time"
1077
+ },
1078
+ "reason": {
1079
+ "type": "string",
1080
+ "minLength": 1,
1081
+ "maxLength": 1000
1082
+ }
1083
+ },
1084
+ "required": [
1085
+ "status",
1086
+ "requested_operator_identity",
1087
+ "reason"
1088
+ ],
1089
+ "additionalProperties": false
1090
+ }
1091
+ ]
1092
+ },
1093
+ "external:core/operator-identity.json": {
1094
+ "type": "object",
1095
+ "properties": {
1096
+ "operator": {
1097
+ "type": "string",
1098
+ "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$",
1099
+ "x-entity": "operator"
1100
+ },
1101
+ "operator_unit": {
1102
+ "$ref": "#/$defs/external:core~1operator-unit.json"
1103
+ }
1104
+ },
1105
+ "required": [
1106
+ "operator"
1107
+ ],
1108
+ "additionalProperties": false
1109
+ },
1110
+ "external:enums/billing-party.json": {
1111
+ "type": "string",
1112
+ "enum": [
1113
+ "operator",
1114
+ "agent",
1115
+ "advertiser"
1116
+ ]
1117
+ },
1118
+ "external:core/business-entity.json": {
1119
+ "type": "object",
1120
+ "properties": {
1121
+ "legal_name": {
1122
+ "type": "string",
1123
+ "maxLength": 200
1124
+ },
1125
+ "vat_id": {
1126
+ "type": "string",
1127
+ "pattern": "^[A-Z]{2}[A-Z0-9]{2,13}$"
1128
+ },
1129
+ "tax_id": {
1130
+ "type": "string",
1131
+ "maxLength": 30
1132
+ },
1133
+ "registration_number": {
1134
+ "type": "string",
1135
+ "maxLength": 50
1136
+ },
1137
+ "address": {
1138
+ "type": "object",
1139
+ "properties": {
1140
+ "street": {
1141
+ "type": "string",
1142
+ "maxLength": 200
1143
+ },
1144
+ "city": {
1145
+ "type": "string",
1146
+ "maxLength": 100
1147
+ },
1148
+ "postal_code": {
1149
+ "type": "string",
1150
+ "maxLength": 20
1151
+ },
1152
+ "region": {
1153
+ "type": "string",
1154
+ "maxLength": 100
1155
+ },
1156
+ "country": {
1157
+ "type": "string",
1158
+ "pattern": "^[A-Z]{2}$"
1159
+ }
1160
+ },
1161
+ "required": [
1162
+ "street",
1163
+ "city",
1164
+ "postal_code",
1165
+ "country"
1166
+ ],
1167
+ "additionalProperties": false
1168
+ },
1169
+ "contacts": {
1170
+ "type": "array",
1171
+ "items": {
1172
+ "type": "object",
1173
+ "properties": {
1174
+ "role": {
1175
+ "type": "string",
1176
+ "enum": [
1177
+ "billing",
1178
+ "legal",
1179
+ "creative",
1180
+ "general"
1181
+ ]
1182
+ },
1183
+ "name": {
1184
+ "type": "string",
1185
+ "maxLength": 200
1186
+ },
1187
+ "email": {
1188
+ "type": "string",
1189
+ "format": "email",
1190
+ "maxLength": 254
1191
+ },
1192
+ "phone": {
1193
+ "type": "string",
1194
+ "maxLength": 30
1195
+ }
1196
+ },
1197
+ "required": [
1198
+ "role"
1199
+ ],
1200
+ "additionalProperties": false
1201
+ },
1202
+ "maxItems": 10
1203
+ },
1204
+ "bank": {
1205
+ "type": "object",
1206
+ "writeOnly": true,
1207
+ "properties": {
1208
+ "account_holder": {
1209
+ "type": "string",
1210
+ "maxLength": 200
1211
+ },
1212
+ "iban": {
1213
+ "type": "string",
1214
+ "pattern": "^[A-Z]{2}[0-9]{2}[A-Z0-9]{4,30}$"
1215
+ },
1216
+ "bic": {
1217
+ "type": "string",
1218
+ "pattern": "^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$"
1219
+ },
1220
+ "routing_number": {
1221
+ "type": "string",
1222
+ "maxLength": 30
1223
+ },
1224
+ "account_number": {
1225
+ "type": "string",
1226
+ "maxLength": 30
1227
+ }
1228
+ },
1229
+ "required": [
1230
+ "account_holder"
1231
+ ],
1232
+ "additionalProperties": false
1233
+ },
1234
+ "ext": {
1235
+ "$ref": "#/$defs/external:core~1ext.json"
1236
+ }
1237
+ },
1238
+ "required": [
1239
+ "legal_name"
1240
+ ],
1241
+ "additionalProperties": false
1242
+ },
1243
+ "external:enums/payment-terms.json": {
1244
+ "type": "string",
1245
+ "enum": [
1246
+ "net_15",
1247
+ "net_30",
1248
+ "net_45",
1249
+ "net_60",
1250
+ "net_90",
1251
+ "prepay"
1252
+ ]
1253
+ },
1254
+ "external:enums/account-scope.json": {
1255
+ "type": "string",
1256
+ "enum": [
1257
+ "operator",
1258
+ "brand",
1259
+ "operator_brand",
1260
+ "agent"
1261
+ ]
1262
+ },
1263
+ "external:enums/cloud-storage-protocol.json": {
1264
+ "type": "string",
1265
+ "enum": [
1266
+ "s3",
1267
+ "gcs",
1268
+ "azure_blob"
1269
+ ]
1270
+ },
1271
+ "external:core/notification-config.json": {
1272
+ "type": "object",
1273
+ "properties": {
1274
+ "subscriber_id": {
1275
+ "type": "string",
1276
+ "minLength": 1,
1277
+ "maxLength": 64,
1278
+ "pattern": "^[A-Za-z0-9_.:-]{1,64}$"
1279
+ },
1280
+ "url": {
1281
+ "type": "string",
1282
+ "format": "uri"
1283
+ },
1284
+ "event_types": {
1285
+ "type": "array",
1286
+ "items": {
1287
+ "type": "string",
1288
+ "enum": [
1289
+ "creative.status_changed",
1290
+ "creative.assignment_changed",
1291
+ "indicators.changed",
1292
+ "creative.purged",
1293
+ "account.status_changed",
1294
+ "product.created",
1295
+ "product.updated",
1296
+ "product.priced",
1297
+ "product.removed",
1298
+ "signal.created",
1299
+ "signal.updated",
1300
+ "signal.priced",
1301
+ "signal.removed",
1302
+ "wholesale_feed.bulk_change"
1303
+ ]
1304
+ },
1305
+ "minItems": 1,
1306
+ "uniqueItems": true
1307
+ },
1308
+ "product_payload_view": {
1309
+ "type": "string",
1310
+ "enum": [
1311
+ "canonical",
1312
+ "legacy"
1313
+ ],
1314
+ "default": "legacy"
1315
+ },
1316
+ "authentication": {
1317
+ "type": "object",
1318
+ "deprecated": true,
1319
+ "properties": {
1320
+ "schemes": {
1321
+ "type": "array",
1322
+ "items": {
1323
+ "$ref": "#/$defs/external:enums~1auth-scheme.json"
1324
+ },
1325
+ "minItems": 1,
1326
+ "maxItems": 1
1327
+ },
1328
+ "credentials": {
1329
+ "type": "string",
1330
+ "minLength": 32
1331
+ }
1332
+ },
1333
+ "required": [
1334
+ "schemes"
1335
+ ],
1336
+ "additionalProperties": false
1337
+ },
1338
+ "active": {
1339
+ "type": "boolean",
1340
+ "default": true
1341
+ },
1342
+ "ext": {
1343
+ "$ref": "#/$defs/external:core~1ext.json"
1344
+ }
1345
+ },
1346
+ "required": [
1347
+ "subscriber_id",
1348
+ "url",
1349
+ "event_types"
1350
+ ],
1351
+ "allOf": [
1352
+ {
1353
+ "if": {
1354
+ "required": [
1355
+ "product_payload_view"
1356
+ ]
1357
+ },
1358
+ "then": {
1359
+ "properties": {
1360
+ "event_types": {
1361
+ "contains": {
1362
+ "enum": [
1363
+ "product.created",
1364
+ "product.updated",
1365
+ "product.priced",
1366
+ "product.removed"
1367
+ ]
1368
+ }
1369
+ }
1370
+ }
1371
+ }
1372
+ }
1373
+ ],
1374
+ "additionalProperties": false
1375
+ },
1376
+ "external:core/webhook-activity-record.json": {
1377
+ "type": "object",
1378
+ "properties": {
1379
+ "idempotency_key": {
1380
+ "type": "string"
1381
+ },
1382
+ "notification_id": {
1383
+ "type": "string",
1384
+ "minLength": 1,
1385
+ "maxLength": 255,
1386
+ "pattern": "^[A-Za-z0-9_.:-]{1,255}$"
1387
+ },
1388
+ "subscriber_id": {
1389
+ "type": "string"
1390
+ },
1391
+ "fired_at": {
1392
+ "type": "string",
1393
+ "format": "date-time"
1394
+ },
1395
+ "completed_at": {
1396
+ "type": [
1397
+ "string",
1398
+ "null"
1399
+ ],
1400
+ "format": "date-time"
1401
+ },
1402
+ "notification_type": {
1403
+ "$ref": "#/$defs/external:enums~1notification-type.json"
1404
+ },
1405
+ "sequence_number": {
1406
+ "type": "integer",
1407
+ "minimum": 0
1408
+ },
1409
+ "attempt": {
1410
+ "type": "integer",
1411
+ "minimum": 1
1412
+ },
1413
+ "status": {
1414
+ "type": "string",
1415
+ "enum": [
1416
+ "success",
1417
+ "failed",
1418
+ "timeout",
1419
+ "connection_error",
1420
+ "pending"
1421
+ ]
1422
+ },
1423
+ "url": {
1424
+ "type": "string",
1425
+ "format": "uri"
1426
+ },
1427
+ "http_status_code": {
1428
+ "type": [
1429
+ "integer",
1430
+ "null"
1431
+ ],
1432
+ "minimum": 100,
1433
+ "maximum": 599
1434
+ },
1435
+ "response_time_ms": {
1436
+ "type": [
1437
+ "integer",
1438
+ "null"
1439
+ ],
1440
+ "minimum": 0
1441
+ },
1442
+ "payload_size_bytes": {
1443
+ "type": "integer",
1444
+ "minimum": 0
1445
+ },
1446
+ "error_message": {
1447
+ "type": [
1448
+ "string",
1449
+ "null"
1450
+ ],
1451
+ "maxLength": 500
1452
+ },
1453
+ "ext": {
1454
+ "$ref": "#/$defs/external:core~1ext.json"
1455
+ }
1456
+ },
1457
+ "required": [
1458
+ "idempotency_key",
1459
+ "fired_at",
1460
+ "notification_type",
1461
+ "attempt",
1462
+ "status",
1463
+ "url"
1464
+ ],
1465
+ "additionalProperties": false
1466
+ },
1467
+ "external:enums/notification-type.json": {
1468
+ "type": "string",
1469
+ "enum": [
1470
+ "scheduled",
1471
+ "final",
1472
+ "delayed",
1473
+ "adjusted",
1474
+ "window_update",
1475
+ "impairment",
1476
+ "creative.status_changed",
1477
+ "creative.assignment_changed",
1478
+ "indicators.changed",
1479
+ "creative.purged",
1480
+ "account.status_changed",
1481
+ "product.created",
1482
+ "product.updated",
1483
+ "product.priced",
1484
+ "product.removed",
1485
+ "signal.created",
1486
+ "signal.updated",
1487
+ "signal.priced",
1488
+ "signal.removed",
1489
+ "wholesale_feed.bulk_change",
1490
+ "capabilities.changed"
1491
+ ]
1492
+ },
1493
+ "external:core/account-authorization.json": {
1494
+ "type": "object",
1495
+ "properties": {
1496
+ "allowed_tasks": {
1497
+ "type": "array",
1498
+ "items": {
1499
+ "type": "string",
1500
+ "pattern": "^[a-z][a-z0-9_]*$"
1501
+ },
1502
+ "uniqueItems": true
1503
+ },
1504
+ "field_scopes": {
1505
+ "type": "object",
1506
+ "additionalProperties": {
1507
+ "type": "array",
1508
+ "items": {
1509
+ "type": "string"
1510
+ },
1511
+ "uniqueItems": true
1512
+ }
1513
+ },
1514
+ "scope_name": {
1515
+ "anyOf": [
1516
+ {
1517
+ "type": "string",
1518
+ "enum": [
1519
+ "attestation_verifier"
1520
+ ]
1521
+ },
1522
+ {
1523
+ "type": "string",
1524
+ "pattern": "^custom:[a-z][a-z0-9_]*$"
1525
+ }
1526
+ ]
1527
+ },
1528
+ "read_only": {
1529
+ "type": "boolean",
1530
+ "default": false
1531
+ }
1532
+ },
1533
+ "required": [
1534
+ "allowed_tasks"
1535
+ ],
1536
+ "additionalProperties": true
1537
+ },
1538
+ "external:core/pagination-response.json": {
1539
+ "type": "object",
1540
+ "properties": {
1541
+ "has_more": {
1542
+ "type": "boolean"
1543
+ },
1544
+ "cursor": {
1545
+ "type": "string"
1546
+ },
1547
+ "total_count": {
1548
+ "type": "integer",
1549
+ "minimum": 0
1550
+ }
1551
+ },
1552
+ "required": [
1553
+ "has_more"
1554
+ ],
1555
+ "additionalProperties": false
1556
+ }
1557
+ }
1558
+ }