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