@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,3859 @@
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/creative/sync-creatives-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
+ "creatives": {
21
+ "type": "array",
22
+ "items": {
23
+ "type": "object",
24
+ "properties": {
25
+ "creative_id": {
26
+ "type": "string",
27
+ "x-entity": "creative"
28
+ },
29
+ "account": {
30
+ "$ref": "#/$defs/external:core~1account.json"
31
+ },
32
+ "action": {
33
+ "$ref": "#/$defs/external:enums~1creative-action.json"
34
+ },
35
+ "status": {
36
+ "$ref": "#/$defs/external:enums~1creative-status.json"
37
+ },
38
+ "platform_id": {
39
+ "type": "string"
40
+ },
41
+ "localization": {
42
+ "$ref": "#/$defs/external:core~1creative-localization-readback.json",
43
+ "x-adcp-validation": {
44
+ "verifier_constraints": {
45
+ "lifecycle_source": "enclosing_creative.status",
46
+ "source_assets": "must_equal_request_creative.assets",
47
+ "accepted_localized_request": {
48
+ "actions": [
49
+ "created",
50
+ "updated",
51
+ "unchanged"
52
+ ],
53
+ "required_response_fields": [
54
+ "status",
55
+ "localization"
56
+ ],
57
+ "source_equal_properties": [
58
+ "locale_variant_id",
59
+ "locale"
60
+ ],
61
+ "target_match_key": "locale_variant_id",
62
+ "target_set": "exact",
63
+ "target_equal_properties": [
64
+ "locale"
65
+ ],
66
+ "localization_equal_properties": [
67
+ "default_locale_variant_id",
68
+ "unmatched_locale_action",
69
+ "locale_fallbacks"
70
+ ]
71
+ },
72
+ "forbidden_actions": [
73
+ "failed",
74
+ "deleted"
75
+ ]
76
+ },
77
+ "spec": "docs/creative/task-reference/sync_creatives.mdx#response"
78
+ }
79
+ },
80
+ "changes": {
81
+ "type": "array",
82
+ "items": {
83
+ "type": "string"
84
+ }
85
+ },
86
+ "errors": {
87
+ "type": "array",
88
+ "items": {
89
+ "$ref": "#/$defs/external:core~1error.json"
90
+ }
91
+ },
92
+ "warnings": {
93
+ "type": "array",
94
+ "items": {
95
+ "type": "string"
96
+ }
97
+ },
98
+ "preview_url": {
99
+ "type": "string",
100
+ "format": "uri"
101
+ },
102
+ "expires_at": {
103
+ "type": "string",
104
+ "format": "date-time"
105
+ },
106
+ "assigned_to": {
107
+ "type": "array",
108
+ "items": {
109
+ "type": "string"
110
+ }
111
+ },
112
+ "assignment_errors": {
113
+ "type": "object",
114
+ "patternProperties": {
115
+ "^[a-zA-Z0-9_-]+$": {
116
+ "type": "string"
117
+ }
118
+ },
119
+ "additionalProperties": true
120
+ }
121
+ },
122
+ "required": [
123
+ "creative_id",
124
+ "action"
125
+ ],
126
+ "additionalProperties": true,
127
+ "allOf": [
128
+ {
129
+ "if": {
130
+ "properties": {
131
+ "action": {
132
+ "enum": [
133
+ "failed",
134
+ "deleted"
135
+ ]
136
+ }
137
+ },
138
+ "required": [
139
+ "action"
140
+ ]
141
+ },
142
+ "then": {
143
+ "not": {
144
+ "anyOf": [
145
+ {
146
+ "required": [
147
+ "status"
148
+ ]
149
+ },
150
+ {
151
+ "required": [
152
+ "localization"
153
+ ]
154
+ }
155
+ ]
156
+ }
157
+ }
158
+ },
159
+ {
160
+ "if": {
161
+ "required": [
162
+ "localization"
163
+ ]
164
+ },
165
+ "then": {
166
+ "required": [
167
+ "status"
168
+ ]
169
+ }
170
+ }
171
+ ]
172
+ }
173
+ },
174
+ "sandbox": {
175
+ "type": "boolean"
176
+ },
177
+ "context": {
178
+ "$ref": "#/$defs/external:core~1context.json"
179
+ },
180
+ "ext": {
181
+ "$ref": "#/$defs/external:core~1ext.json"
182
+ }
183
+ },
184
+ "required": [
185
+ "creatives"
186
+ ],
187
+ "additionalProperties": true,
188
+ "not": {
189
+ "anyOf": [
190
+ {
191
+ "required": [
192
+ "errors"
193
+ ]
194
+ },
195
+ {
196
+ "required": [
197
+ "task_id"
198
+ ]
199
+ },
200
+ {
201
+ "required": [
202
+ "warnings"
203
+ ]
204
+ },
205
+ {
206
+ "properties": {
207
+ "status": {
208
+ "const": "submitted"
209
+ }
210
+ },
211
+ "required": [
212
+ "status"
213
+ ]
214
+ }
215
+ ]
216
+ }
217
+ },
218
+ {
219
+ "type": "object",
220
+ "properties": {
221
+ "errors": {
222
+ "type": "array",
223
+ "items": {
224
+ "$ref": "#/$defs/external:core~1error.json"
225
+ },
226
+ "minItems": 1
227
+ },
228
+ "context": {
229
+ "$ref": "#/$defs/external:core~1context.json"
230
+ },
231
+ "ext": {
232
+ "$ref": "#/$defs/external:core~1ext.json"
233
+ }
234
+ },
235
+ "required": [
236
+ "errors"
237
+ ],
238
+ "additionalProperties": true,
239
+ "not": {
240
+ "anyOf": [
241
+ {
242
+ "required": [
243
+ "creatives"
244
+ ]
245
+ },
246
+ {
247
+ "required": [
248
+ "dry_run"
249
+ ]
250
+ },
251
+ {
252
+ "required": [
253
+ "sandbox"
254
+ ]
255
+ },
256
+ {
257
+ "required": [
258
+ "task_id"
259
+ ]
260
+ },
261
+ {
262
+ "required": [
263
+ "warnings"
264
+ ]
265
+ },
266
+ {
267
+ "properties": {
268
+ "status": {
269
+ "const": "submitted"
270
+ }
271
+ },
272
+ "required": [
273
+ "status"
274
+ ]
275
+ }
276
+ ]
277
+ }
278
+ },
279
+ {
280
+ "type": "object",
281
+ "properties": {
282
+ "status": {
283
+ "type": "string",
284
+ "const": "submitted"
285
+ },
286
+ "task_id": {
287
+ "type": "string",
288
+ "x-entity": "task"
289
+ },
290
+ "message": {
291
+ "type": "string",
292
+ "maxLength": 2000
293
+ },
294
+ "errors": {
295
+ "type": "array",
296
+ "items": {
297
+ "$ref": "#/$defs/external:core~1error.json"
298
+ }
299
+ },
300
+ "context": {
301
+ "$ref": "#/$defs/external:core~1context.json"
302
+ },
303
+ "ext": {
304
+ "$ref": "#/$defs/external:core~1ext.json"
305
+ }
306
+ },
307
+ "required": [
308
+ "status",
309
+ "task_id"
310
+ ],
311
+ "additionalProperties": true,
312
+ "not": {
313
+ "anyOf": [
314
+ {
315
+ "required": [
316
+ "creatives"
317
+ ]
318
+ },
319
+ {
320
+ "required": [
321
+ "warnings"
322
+ ]
323
+ }
324
+ ]
325
+ }
326
+ }
327
+ ],
328
+ "properties": {},
329
+ "$defs": {
330
+ "external:core/version-envelope.json": {
331
+ "type": "object",
332
+ "properties": {
333
+ "adcp_version": {
334
+ "type": "string",
335
+ "pattern": "^(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[a-zA-Z0-9](?:[a-zA-Z0-9.-]*[a-zA-Z0-9])?)?$"
336
+ },
337
+ "adcp_major_version": {
338
+ "type": "integer",
339
+ "deprecated": true,
340
+ "minimum": 1,
341
+ "maximum": 99
342
+ }
343
+ }
344
+ },
345
+ "external:core/protocol-envelope.json": {
346
+ "type": "object",
347
+ "properties": {
348
+ "context_id": {
349
+ "type": "string"
350
+ },
351
+ "context": {
352
+ "$ref": "#/$defs/external:core~1context.json"
353
+ },
354
+ "task_id": {
355
+ "type": "string",
356
+ "x-entity": "task"
357
+ },
358
+ "status": {
359
+ "$ref": "#/$defs/external:enums~1task-status.json"
360
+ },
361
+ "message": {
362
+ "type": "string"
363
+ },
364
+ "timestamp": {
365
+ "type": "string",
366
+ "format": "date-time"
367
+ },
368
+ "replayed": {
369
+ "type": "boolean",
370
+ "default": false
371
+ },
372
+ "adcp_error": {
373
+ "$ref": "#/$defs/external:core~1error.json"
374
+ },
375
+ "push_notification_config": {
376
+ "$ref": "#/$defs/external:core~1push-notification-config.json"
377
+ },
378
+ "governance_context": {
379
+ "type": "string",
380
+ "minLength": 1,
381
+ "maxLength": 4096,
382
+ "pattern": "^[\\x20-\\x7E]+$"
383
+ },
384
+ "payload": {
385
+ "type": "object",
386
+ "x-adcp-open-payload": true,
387
+ "additionalProperties": true
388
+ }
389
+ },
390
+ "required": [
391
+ "status"
392
+ ],
393
+ "additionalProperties": true,
394
+ "not": {
395
+ "anyOf": [
396
+ {
397
+ "required": [
398
+ "task_status"
399
+ ]
400
+ },
401
+ {
402
+ "required": [
403
+ "response_status"
404
+ ]
405
+ }
406
+ ]
407
+ },
408
+ "notes": [
409
+ "Task response schemas (e.g., get-products-response.json) define ONLY the body fields; protocol-layer fields live on this envelope.",
410
+ "Transport serialization (normative):",
411
+ " - 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.",
412
+ " - 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.",
413
+ " - 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.",
414
+ "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`.",
415
+ "`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.",
416
+ "Receivers MUST handle absence of an envelope field (e.g., `replayed` omitted) as the field's documented default — see each field's `default` clause."
417
+ ]
418
+ },
419
+ "external:core/context.json": {
420
+ "type": "object",
421
+ "additionalProperties": true
422
+ },
423
+ "external:enums/task-status.json": {
424
+ "type": "string",
425
+ "enum": [
426
+ "submitted",
427
+ "working",
428
+ "input-required",
429
+ "completed",
430
+ "canceled",
431
+ "failed",
432
+ "rejected",
433
+ "auth-required",
434
+ "unknown"
435
+ ]
436
+ },
437
+ "external:core/error.json": {
438
+ "type": "object",
439
+ "properties": {
440
+ "code": {
441
+ "type": "string",
442
+ "minLength": 1,
443
+ "maxLength": 64
444
+ },
445
+ "message": {
446
+ "type": "string"
447
+ },
448
+ "field": {
449
+ "type": "string"
450
+ },
451
+ "suggestion": {
452
+ "type": "string"
453
+ },
454
+ "retry_after": {
455
+ "type": "number",
456
+ "minimum": 1,
457
+ "maximum": 3600
458
+ },
459
+ "issues": {
460
+ "type": "array",
461
+ "items": {
462
+ "type": "object",
463
+ "properties": {
464
+ "pointer": {
465
+ "type": "string"
466
+ },
467
+ "message": {
468
+ "type": "string"
469
+ },
470
+ "keyword": {
471
+ "type": "string"
472
+ },
473
+ "schemaPath": {
474
+ "type": "string"
475
+ },
476
+ "schema_id": {
477
+ "type": "string"
478
+ },
479
+ "discriminator": {
480
+ "type": "array",
481
+ "items": {
482
+ "type": "object",
483
+ "properties": {
484
+ "property_name": {
485
+ "type": "string"
486
+ },
487
+ "value": {
488
+ "type": [
489
+ "string",
490
+ "number",
491
+ "boolean",
492
+ "null"
493
+ ]
494
+ }
495
+ },
496
+ "required": [
497
+ "property_name",
498
+ "value"
499
+ ],
500
+ "additionalProperties": false
501
+ }
502
+ }
503
+ },
504
+ "required": [
505
+ "pointer",
506
+ "message",
507
+ "keyword"
508
+ ],
509
+ "additionalProperties": true
510
+ }
511
+ },
512
+ "details": {
513
+ "type": "object",
514
+ "additionalProperties": true
515
+ },
516
+ "recovery": {
517
+ "type": "string",
518
+ "enum": [
519
+ "transient",
520
+ "correctable",
521
+ "terminal"
522
+ ]
523
+ },
524
+ "source": {
525
+ "type": "string",
526
+ "enum": [
527
+ "producer",
528
+ "sdk"
529
+ ]
530
+ },
531
+ "sdk_id": {
532
+ "type": "string"
533
+ }
534
+ },
535
+ "required": [
536
+ "code",
537
+ "message"
538
+ ],
539
+ "additionalProperties": true
540
+ },
541
+ "external:core/push-notification-config.json": {
542
+ "type": "object",
543
+ "properties": {
544
+ "url": {
545
+ "type": "string",
546
+ "format": "uri"
547
+ },
548
+ "operation_id": {
549
+ "type": "string",
550
+ "minLength": 1,
551
+ "maxLength": 255,
552
+ "pattern": "^[A-Za-z0-9_.:-]{1,255}$"
553
+ },
554
+ "token": {
555
+ "type": "string",
556
+ "minLength": 16,
557
+ "maxLength": 4096
558
+ },
559
+ "authentication": {
560
+ "type": "object",
561
+ "deprecated": true,
562
+ "properties": {
563
+ "schemes": {
564
+ "type": "array",
565
+ "items": {
566
+ "$ref": "#/$defs/external:enums~1auth-scheme.json"
567
+ },
568
+ "minItems": 1,
569
+ "maxItems": 1
570
+ },
571
+ "credentials": {
572
+ "type": "string",
573
+ "minLength": 32
574
+ }
575
+ },
576
+ "required": [
577
+ "schemes",
578
+ "credentials"
579
+ ],
580
+ "additionalProperties": false
581
+ }
582
+ },
583
+ "required": [
584
+ "url"
585
+ ]
586
+ },
587
+ "external:enums/auth-scheme.json": {
588
+ "deprecated": true,
589
+ "type": "string",
590
+ "enum": [
591
+ "Bearer",
592
+ "HMAC-SHA256"
593
+ ]
594
+ },
595
+ "external:core/account.json": {
596
+ "type": "object",
597
+ "properties": {
598
+ "account_id": {
599
+ "type": "string",
600
+ "x-entity": "account"
601
+ },
602
+ "name": {
603
+ "type": "string"
604
+ },
605
+ "advertiser": {
606
+ "type": "string"
607
+ },
608
+ "billing_proxy": {
609
+ "type": "string"
610
+ },
611
+ "status": {
612
+ "$ref": "#/$defs/external:enums~1account-status.json"
613
+ },
614
+ "brand": {
615
+ "$ref": "#/$defs/external:core~1brand-ref.json"
616
+ },
617
+ "operator": {
618
+ "type": "string",
619
+ "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$",
620
+ "x-entity": "operator"
621
+ },
622
+ "operator_unit": {
623
+ "$ref": "#/$defs/external:core~1operator-unit.json"
624
+ },
625
+ "revision": {
626
+ "type": "integer",
627
+ "minimum": 1
628
+ },
629
+ "identity_change": {
630
+ "$ref": "#/$defs/external:core~1account-identity-change.json"
631
+ },
632
+ "currency": {
633
+ "type": "string",
634
+ "pattern": "^[A-Z]{3}$"
635
+ },
636
+ "timezone": {
637
+ "type": "string",
638
+ "minLength": 1
639
+ },
640
+ "billing": {
641
+ "$ref": "#/$defs/external:enums~1billing-party.json"
642
+ },
643
+ "billing_entity": {
644
+ "$ref": "#/$defs/external:core~1business-entity.json"
645
+ },
646
+ "destination_billing_entity": {
647
+ "not": {}
648
+ },
649
+ "rate_card": {
650
+ "type": "string"
651
+ },
652
+ "payment_terms": {
653
+ "$ref": "#/$defs/external:enums~1payment-terms.json"
654
+ },
655
+ "credit_limit": {
656
+ "type": "object",
657
+ "properties": {
658
+ "amount": {
659
+ "type": "number",
660
+ "minimum": 0
661
+ },
662
+ "currency": {
663
+ "type": "string",
664
+ "pattern": "^[A-Z]{3}$"
665
+ }
666
+ },
667
+ "required": [
668
+ "amount",
669
+ "currency"
670
+ ]
671
+ },
672
+ "setup": {
673
+ "type": "object",
674
+ "properties": {
675
+ "url": {
676
+ "type": "string",
677
+ "format": "uri"
678
+ },
679
+ "message": {
680
+ "type": "string"
681
+ },
682
+ "expires_at": {
683
+ "type": "string",
684
+ "format": "date-time"
685
+ }
686
+ },
687
+ "required": [
688
+ "message"
689
+ ],
690
+ "additionalProperties": true
691
+ },
692
+ "account_scope": {
693
+ "$ref": "#/$defs/external:enums~1account-scope.json"
694
+ },
695
+ "governance_agents": {
696
+ "type": "array",
697
+ "items": {
698
+ "type": "object",
699
+ "properties": {
700
+ "url": {
701
+ "type": "string",
702
+ "format": "uri",
703
+ "pattern": "^https://"
704
+ }
705
+ },
706
+ "required": [
707
+ "url"
708
+ ],
709
+ "additionalProperties": false
710
+ },
711
+ "minItems": 1,
712
+ "maxItems": 1
713
+ },
714
+ "reporting_bucket": {
715
+ "type": "object",
716
+ "properties": {
717
+ "protocol": {
718
+ "$ref": "#/$defs/external:enums~1cloud-storage-protocol.json"
719
+ },
720
+ "bucket": {
721
+ "type": "string",
722
+ "minLength": 3,
723
+ "maxLength": 63,
724
+ "pattern": "^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$"
725
+ },
726
+ "prefix": {
727
+ "type": "string",
728
+ "maxLength": 512,
729
+ "pattern": "^[a-zA-Z0-9/_.-]+$"
730
+ },
731
+ "region": {
732
+ "type": "string",
733
+ "maxLength": 64,
734
+ "pattern": "^[a-z0-9-]+$"
735
+ },
736
+ "format": {
737
+ "type": "string",
738
+ "enum": [
739
+ "jsonl",
740
+ "csv",
741
+ "parquet",
742
+ "avro",
743
+ "orc"
744
+ ],
745
+ "default": "jsonl"
746
+ },
747
+ "compression": {
748
+ "type": "string",
749
+ "enum": [
750
+ "gzip",
751
+ "none"
752
+ ],
753
+ "default": "gzip"
754
+ },
755
+ "file_retention_days": {
756
+ "type": "integer",
757
+ "minimum": 1
758
+ },
759
+ "setup_instructions": {
760
+ "type": "string",
761
+ "format": "uri",
762
+ "pattern": "^https://"
763
+ }
764
+ },
765
+ "required": [
766
+ "protocol",
767
+ "bucket",
768
+ "file_retention_days"
769
+ ],
770
+ "additionalProperties": false
771
+ },
772
+ "sandbox": {
773
+ "type": "boolean"
774
+ },
775
+ "notification_configs": {
776
+ "type": "array",
777
+ "items": {
778
+ "$ref": "#/$defs/external:core~1notification-config.json"
779
+ },
780
+ "maxItems": 16
781
+ },
782
+ "webhook_activity": {
783
+ "type": "array",
784
+ "items": {
785
+ "$ref": "#/$defs/external:core~1webhook-activity-record.json"
786
+ },
787
+ "maxItems": 200
788
+ },
789
+ "ext": {
790
+ "$ref": "#/$defs/external:core~1ext.json"
791
+ }
792
+ },
793
+ "required": [
794
+ "account_id",
795
+ "name",
796
+ "status"
797
+ ],
798
+ "not": {
799
+ "required": [
800
+ "destination_billing_entity"
801
+ ]
802
+ },
803
+ "additionalProperties": true,
804
+ "dependentRequired": {
805
+ "identity_change": [
806
+ "revision"
807
+ ]
808
+ }
809
+ },
810
+ "external:enums/account-status.json": {
811
+ "type": "string",
812
+ "enum": [
813
+ "active",
814
+ "pending_approval",
815
+ "rejected",
816
+ "payment_required",
817
+ "suspended",
818
+ "closed"
819
+ ]
820
+ },
821
+ "external:core/brand-ref.json": {
822
+ "type": "object",
823
+ "properties": {
824
+ "domain": {
825
+ "type": "string",
826
+ "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$"
827
+ },
828
+ "brand_id": {
829
+ "$ref": "#/$defs/external:core~1brand-id.json"
830
+ },
831
+ "countries": {
832
+ "type": "array",
833
+ "items": {
834
+ "type": "string",
835
+ "pattern": "^[A-Z]{2}$"
836
+ },
837
+ "minItems": 1,
838
+ "uniqueItems": true
839
+ },
840
+ "industries": {
841
+ "type": "array",
842
+ "items": {
843
+ "type": "string"
844
+ }
845
+ },
846
+ "data_subject_contestation": {
847
+ "type": "object",
848
+ "properties": {
849
+ "url": {
850
+ "type": "string",
851
+ "format": "uri",
852
+ "pattern": "^https://"
853
+ },
854
+ "email": {
855
+ "type": "string",
856
+ "format": "email"
857
+ },
858
+ "languages": {
859
+ "type": "array",
860
+ "items": {
861
+ "type": "string"
862
+ }
863
+ }
864
+ },
865
+ "anyOf": [
866
+ {
867
+ "required": [
868
+ "url"
869
+ ]
870
+ },
871
+ {
872
+ "required": [
873
+ "email"
874
+ ]
875
+ }
876
+ ],
877
+ "additionalProperties": false
878
+ },
879
+ "brand_kit_override": {
880
+ "type": "object",
881
+ "properties": {
882
+ "logo": {
883
+ "$ref": "#/$defs/external:core~1assets~1image-asset.json"
884
+ },
885
+ "colors": {
886
+ "type": "object",
887
+ "properties": {
888
+ "primary": {
889
+ "type": "string",
890
+ "pattern": "^#[0-9a-fA-F]{6}$"
891
+ },
892
+ "secondary": {
893
+ "type": "string",
894
+ "pattern": "^#[0-9a-fA-F]{6}$"
895
+ },
896
+ "accent": {
897
+ "type": "string",
898
+ "pattern": "^#[0-9a-fA-F]{6}$"
899
+ }
900
+ },
901
+ "additionalProperties": true
902
+ },
903
+ "voice": {
904
+ "type": "string"
905
+ },
906
+ "tagline": {
907
+ "type": "string"
908
+ }
909
+ },
910
+ "additionalProperties": true
911
+ }
912
+ },
913
+ "required": [
914
+ "domain"
915
+ ],
916
+ "additionalProperties": false
917
+ },
918
+ "external:core/brand-id.json": {
919
+ "type": "string",
920
+ "pattern": "^[a-z0-9_]+$",
921
+ "x-entity": "advertiser_brand"
922
+ },
923
+ "external:core/assets/image-asset.json": {
924
+ "type": "object",
925
+ "properties": {
926
+ "asset_type": {
927
+ "type": "string",
928
+ "const": "image"
929
+ },
930
+ "url": {
931
+ "type": "string",
932
+ "format": "uri"
933
+ },
934
+ "width": {
935
+ "type": "integer",
936
+ "minimum": 1
937
+ },
938
+ "height": {
939
+ "type": "integer",
940
+ "minimum": 1
941
+ },
942
+ "pixel_ratio": {
943
+ "type": "number",
944
+ "exclusiveMinimum": 0
945
+ },
946
+ "format": {
947
+ "type": "string"
948
+ },
949
+ "alt_text": {
950
+ "type": "string",
951
+ "x-accessibility": true
952
+ },
953
+ "provenance": {
954
+ "$ref": "#/$defs/external:core~1provenance.json"
955
+ }
956
+ },
957
+ "required": [
958
+ "asset_type",
959
+ "url",
960
+ "width",
961
+ "height"
962
+ ],
963
+ "additionalProperties": true
964
+ },
965
+ "external:core/provenance.json": {
966
+ "type": "object",
967
+ "properties": {
968
+ "digital_source_type": {
969
+ "$ref": "#/$defs/external:enums~1digital-source-type.json"
970
+ },
971
+ "synthetic_depiction": {
972
+ "type": "boolean"
973
+ },
974
+ "ai_tool": {
975
+ "type": "object",
976
+ "properties": {
977
+ "name": {
978
+ "type": "string"
979
+ },
980
+ "version": {
981
+ "type": "string"
982
+ },
983
+ "provider": {
984
+ "type": "string"
985
+ }
986
+ },
987
+ "required": [
988
+ "name"
989
+ ]
990
+ },
991
+ "human_oversight": {
992
+ "type": "string",
993
+ "enum": [
994
+ "none",
995
+ "prompt_only",
996
+ "selected",
997
+ "edited",
998
+ "directed"
999
+ ]
1000
+ },
1001
+ "declared_by": {
1002
+ "type": "object",
1003
+ "properties": {
1004
+ "agent_url": {
1005
+ "type": "string",
1006
+ "format": "uri"
1007
+ },
1008
+ "role": {
1009
+ "type": "string",
1010
+ "enum": [
1011
+ "creator",
1012
+ "advertiser",
1013
+ "agency",
1014
+ "platform",
1015
+ "tool"
1016
+ ]
1017
+ }
1018
+ },
1019
+ "required": [
1020
+ "role"
1021
+ ]
1022
+ },
1023
+ "declared_at": {
1024
+ "type": "string",
1025
+ "format": "date-time"
1026
+ },
1027
+ "created_time": {
1028
+ "type": "string",
1029
+ "format": "date-time"
1030
+ },
1031
+ "c2pa": {
1032
+ "type": "object",
1033
+ "properties": {
1034
+ "manifest_url": {
1035
+ "type": "string",
1036
+ "format": "uri"
1037
+ }
1038
+ },
1039
+ "required": [
1040
+ "manifest_url"
1041
+ ]
1042
+ },
1043
+ "embedded_provenance": {
1044
+ "type": "array",
1045
+ "minItems": 1,
1046
+ "items": {
1047
+ "type": "object",
1048
+ "properties": {
1049
+ "method": {
1050
+ "$ref": "#/$defs/external:enums~1embedded-provenance-method.json"
1051
+ },
1052
+ "standard": {
1053
+ "type": "string"
1054
+ },
1055
+ "provider": {
1056
+ "type": "string"
1057
+ },
1058
+ "verify_agent": {
1059
+ "type": "object",
1060
+ "properties": {
1061
+ "agent_url": {
1062
+ "type": "string",
1063
+ "format": "uri",
1064
+ "pattern": "^https://"
1065
+ },
1066
+ "feature_id": {
1067
+ "type": "string"
1068
+ }
1069
+ },
1070
+ "required": [
1071
+ "agent_url"
1072
+ ],
1073
+ "additionalProperties": false
1074
+ },
1075
+ "embedded_at": {
1076
+ "type": "string",
1077
+ "format": "date-time"
1078
+ }
1079
+ },
1080
+ "required": [
1081
+ "method",
1082
+ "provider"
1083
+ ]
1084
+ }
1085
+ },
1086
+ "watermarks": {
1087
+ "type": "array",
1088
+ "minItems": 1,
1089
+ "items": {
1090
+ "type": "object",
1091
+ "properties": {
1092
+ "media_type": {
1093
+ "$ref": "#/$defs/external:enums~1watermark-media-type.json"
1094
+ },
1095
+ "provider": {
1096
+ "type": "string"
1097
+ },
1098
+ "verify_agent": {
1099
+ "type": "object",
1100
+ "properties": {
1101
+ "agent_url": {
1102
+ "type": "string",
1103
+ "format": "uri",
1104
+ "pattern": "^https://"
1105
+ },
1106
+ "feature_id": {
1107
+ "type": "string"
1108
+ }
1109
+ },
1110
+ "required": [
1111
+ "agent_url"
1112
+ ],
1113
+ "additionalProperties": false
1114
+ },
1115
+ "c2pa_action": {
1116
+ "$ref": "#/$defs/external:enums~1c2pa-watermark-action.json"
1117
+ },
1118
+ "embedded_at": {
1119
+ "type": "string",
1120
+ "format": "date-time"
1121
+ }
1122
+ },
1123
+ "required": [
1124
+ "media_type",
1125
+ "provider"
1126
+ ]
1127
+ }
1128
+ },
1129
+ "disclosure": {
1130
+ "type": "object",
1131
+ "properties": {
1132
+ "required": {
1133
+ "type": "boolean"
1134
+ },
1135
+ "jurisdictions": {
1136
+ "type": "array",
1137
+ "items": {
1138
+ "type": "object",
1139
+ "properties": {
1140
+ "country": {
1141
+ "type": "string"
1142
+ },
1143
+ "region": {
1144
+ "type": "string"
1145
+ },
1146
+ "regulation": {
1147
+ "type": "string"
1148
+ },
1149
+ "label_text": {
1150
+ "type": "string"
1151
+ },
1152
+ "render_guidance": {
1153
+ "type": "object",
1154
+ "minProperties": 1,
1155
+ "properties": {
1156
+ "persistence": {
1157
+ "$ref": "#/$defs/external:enums~1disclosure-persistence.json"
1158
+ },
1159
+ "min_duration_ms": {
1160
+ "type": "integer",
1161
+ "minimum": 1
1162
+ },
1163
+ "positions": {
1164
+ "type": "array",
1165
+ "items": {
1166
+ "$ref": "#/$defs/external:enums~1disclosure-position.json"
1167
+ },
1168
+ "minItems": 1,
1169
+ "uniqueItems": true
1170
+ },
1171
+ "ext": {
1172
+ "$ref": "#/$defs/external:core~1ext.json"
1173
+ }
1174
+ }
1175
+ }
1176
+ },
1177
+ "required": [
1178
+ "country",
1179
+ "regulation"
1180
+ ]
1181
+ },
1182
+ "minItems": 1
1183
+ }
1184
+ },
1185
+ "required": [
1186
+ "required"
1187
+ ]
1188
+ },
1189
+ "verification": {
1190
+ "type": "array",
1191
+ "minItems": 1,
1192
+ "items": {
1193
+ "type": "object",
1194
+ "properties": {
1195
+ "verified_by": {
1196
+ "type": "string"
1197
+ },
1198
+ "verified_time": {
1199
+ "type": "string",
1200
+ "format": "date-time"
1201
+ },
1202
+ "result": {
1203
+ "type": "string",
1204
+ "enum": [
1205
+ "authentic",
1206
+ "ai_generated",
1207
+ "ai_modified",
1208
+ "inconclusive"
1209
+ ]
1210
+ },
1211
+ "confidence": {
1212
+ "type": "number",
1213
+ "minimum": 0,
1214
+ "maximum": 1
1215
+ },
1216
+ "details_url": {
1217
+ "type": "string",
1218
+ "format": "uri"
1219
+ }
1220
+ },
1221
+ "required": [
1222
+ "verified_by",
1223
+ "result"
1224
+ ]
1225
+ }
1226
+ },
1227
+ "ext": {
1228
+ "$ref": "#/$defs/external:core~1ext.json"
1229
+ }
1230
+ }
1231
+ },
1232
+ "external:enums/digital-source-type.json": {
1233
+ "type": "string",
1234
+ "enum": [
1235
+ "digital_capture",
1236
+ "digital_creation",
1237
+ "trained_algorithmic_media",
1238
+ "composite_with_trained_algorithmic_media",
1239
+ "algorithmic_media",
1240
+ "composite_capture",
1241
+ "composite_synthetic",
1242
+ "human_edits",
1243
+ "data_driven_media"
1244
+ ]
1245
+ },
1246
+ "external:enums/embedded-provenance-method.json": {
1247
+ "type": "string",
1248
+ "enum": [
1249
+ "manifest_wrapper",
1250
+ "provenance_markers"
1251
+ ]
1252
+ },
1253
+ "external:enums/watermark-media-type.json": {
1254
+ "type": "string",
1255
+ "enum": [
1256
+ "audio",
1257
+ "image",
1258
+ "video",
1259
+ "text"
1260
+ ]
1261
+ },
1262
+ "external:enums/c2pa-watermark-action.json": {
1263
+ "type": "string",
1264
+ "enum": [
1265
+ "c2pa.watermarked.bound",
1266
+ "c2pa.watermarked.unbound"
1267
+ ]
1268
+ },
1269
+ "external:enums/disclosure-persistence.json": {
1270
+ "type": "string",
1271
+ "enum": [
1272
+ "continuous",
1273
+ "initial",
1274
+ "flexible"
1275
+ ]
1276
+ },
1277
+ "external:enums/disclosure-position.json": {
1278
+ "type": "string",
1279
+ "enum": [
1280
+ "prominent",
1281
+ "footer",
1282
+ "audio",
1283
+ "subtitle",
1284
+ "overlay",
1285
+ "end_card",
1286
+ "pre_roll",
1287
+ "companion"
1288
+ ]
1289
+ },
1290
+ "external:core/ext.json": {
1291
+ "type": "object",
1292
+ "additionalProperties": true
1293
+ },
1294
+ "external:core/operator-unit.json": {
1295
+ "x-entity": "operator_unit",
1296
+ "type": "object",
1297
+ "properties": {
1298
+ "id": {
1299
+ "type": "string",
1300
+ "minLength": 1,
1301
+ "maxLength": 255,
1302
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$"
1303
+ },
1304
+ "name": {
1305
+ "type": "string",
1306
+ "minLength": 1,
1307
+ "maxLength": 200
1308
+ }
1309
+ },
1310
+ "required": [
1311
+ "id"
1312
+ ],
1313
+ "additionalProperties": false
1314
+ },
1315
+ "external:core/account-identity-change.json": {
1316
+ "oneOf": [
1317
+ {
1318
+ "type": "object",
1319
+ "properties": {
1320
+ "status": {
1321
+ "type": "string",
1322
+ "const": "pending_approval"
1323
+ },
1324
+ "requested_operator_identity": {
1325
+ "$ref": "#/$defs/external:core~1operator-identity.json"
1326
+ },
1327
+ "requested_at": {
1328
+ "type": "string",
1329
+ "format": "date-time"
1330
+ }
1331
+ },
1332
+ "required": [
1333
+ "status",
1334
+ "requested_operator_identity"
1335
+ ],
1336
+ "additionalProperties": false
1337
+ },
1338
+ {
1339
+ "type": "object",
1340
+ "properties": {
1341
+ "status": {
1342
+ "type": "string",
1343
+ "const": "rejected"
1344
+ },
1345
+ "requested_operator_identity": {
1346
+ "$ref": "#/$defs/external:core~1operator-identity.json"
1347
+ },
1348
+ "requested_at": {
1349
+ "type": "string",
1350
+ "format": "date-time"
1351
+ },
1352
+ "reason": {
1353
+ "type": "string",
1354
+ "minLength": 1,
1355
+ "maxLength": 1000
1356
+ }
1357
+ },
1358
+ "required": [
1359
+ "status",
1360
+ "requested_operator_identity",
1361
+ "reason"
1362
+ ],
1363
+ "additionalProperties": false
1364
+ }
1365
+ ]
1366
+ },
1367
+ "external:core/operator-identity.json": {
1368
+ "type": "object",
1369
+ "properties": {
1370
+ "operator": {
1371
+ "type": "string",
1372
+ "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$",
1373
+ "x-entity": "operator"
1374
+ },
1375
+ "operator_unit": {
1376
+ "$ref": "#/$defs/external:core~1operator-unit.json"
1377
+ }
1378
+ },
1379
+ "required": [
1380
+ "operator"
1381
+ ],
1382
+ "additionalProperties": false
1383
+ },
1384
+ "external:enums/billing-party.json": {
1385
+ "type": "string",
1386
+ "enum": [
1387
+ "operator",
1388
+ "agent",
1389
+ "advertiser"
1390
+ ]
1391
+ },
1392
+ "external:core/business-entity.json": {
1393
+ "type": "object",
1394
+ "properties": {
1395
+ "legal_name": {
1396
+ "type": "string",
1397
+ "maxLength": 200
1398
+ },
1399
+ "vat_id": {
1400
+ "type": "string",
1401
+ "pattern": "^[A-Z]{2}[A-Z0-9]{2,13}$"
1402
+ },
1403
+ "tax_id": {
1404
+ "type": "string",
1405
+ "maxLength": 30
1406
+ },
1407
+ "registration_number": {
1408
+ "type": "string",
1409
+ "maxLength": 50
1410
+ },
1411
+ "address": {
1412
+ "type": "object",
1413
+ "properties": {
1414
+ "street": {
1415
+ "type": "string",
1416
+ "maxLength": 200
1417
+ },
1418
+ "city": {
1419
+ "type": "string",
1420
+ "maxLength": 100
1421
+ },
1422
+ "postal_code": {
1423
+ "type": "string",
1424
+ "maxLength": 20
1425
+ },
1426
+ "region": {
1427
+ "type": "string",
1428
+ "maxLength": 100
1429
+ },
1430
+ "country": {
1431
+ "type": "string",
1432
+ "pattern": "^[A-Z]{2}$"
1433
+ }
1434
+ },
1435
+ "required": [
1436
+ "street",
1437
+ "city",
1438
+ "postal_code",
1439
+ "country"
1440
+ ],
1441
+ "additionalProperties": false
1442
+ },
1443
+ "contacts": {
1444
+ "type": "array",
1445
+ "items": {
1446
+ "type": "object",
1447
+ "properties": {
1448
+ "role": {
1449
+ "type": "string",
1450
+ "enum": [
1451
+ "billing",
1452
+ "legal",
1453
+ "creative",
1454
+ "general"
1455
+ ]
1456
+ },
1457
+ "name": {
1458
+ "type": "string",
1459
+ "maxLength": 200
1460
+ },
1461
+ "email": {
1462
+ "type": "string",
1463
+ "format": "email",
1464
+ "maxLength": 254
1465
+ },
1466
+ "phone": {
1467
+ "type": "string",
1468
+ "maxLength": 30
1469
+ }
1470
+ },
1471
+ "required": [
1472
+ "role"
1473
+ ],
1474
+ "additionalProperties": false
1475
+ },
1476
+ "maxItems": 10
1477
+ },
1478
+ "bank": {
1479
+ "type": "object",
1480
+ "writeOnly": true,
1481
+ "properties": {
1482
+ "account_holder": {
1483
+ "type": "string",
1484
+ "maxLength": 200
1485
+ },
1486
+ "iban": {
1487
+ "type": "string",
1488
+ "pattern": "^[A-Z]{2}[0-9]{2}[A-Z0-9]{4,30}$"
1489
+ },
1490
+ "bic": {
1491
+ "type": "string",
1492
+ "pattern": "^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$"
1493
+ },
1494
+ "routing_number": {
1495
+ "type": "string",
1496
+ "maxLength": 30
1497
+ },
1498
+ "account_number": {
1499
+ "type": "string",
1500
+ "maxLength": 30
1501
+ }
1502
+ },
1503
+ "required": [
1504
+ "account_holder"
1505
+ ],
1506
+ "additionalProperties": false
1507
+ },
1508
+ "ext": {
1509
+ "$ref": "#/$defs/external:core~1ext.json"
1510
+ }
1511
+ },
1512
+ "required": [
1513
+ "legal_name"
1514
+ ],
1515
+ "additionalProperties": false
1516
+ },
1517
+ "external:enums/payment-terms.json": {
1518
+ "type": "string",
1519
+ "enum": [
1520
+ "net_15",
1521
+ "net_30",
1522
+ "net_45",
1523
+ "net_60",
1524
+ "net_90",
1525
+ "prepay"
1526
+ ]
1527
+ },
1528
+ "external:enums/account-scope.json": {
1529
+ "type": "string",
1530
+ "enum": [
1531
+ "operator",
1532
+ "brand",
1533
+ "operator_brand",
1534
+ "agent"
1535
+ ]
1536
+ },
1537
+ "external:enums/cloud-storage-protocol.json": {
1538
+ "type": "string",
1539
+ "enum": [
1540
+ "s3",
1541
+ "gcs",
1542
+ "azure_blob"
1543
+ ]
1544
+ },
1545
+ "external:core/notification-config.json": {
1546
+ "type": "object",
1547
+ "properties": {
1548
+ "subscriber_id": {
1549
+ "type": "string",
1550
+ "minLength": 1,
1551
+ "maxLength": 64,
1552
+ "pattern": "^[A-Za-z0-9_.:-]{1,64}$"
1553
+ },
1554
+ "url": {
1555
+ "type": "string",
1556
+ "format": "uri"
1557
+ },
1558
+ "event_types": {
1559
+ "type": "array",
1560
+ "items": {
1561
+ "type": "string",
1562
+ "enum": [
1563
+ "creative.status_changed",
1564
+ "creative.assignment_changed",
1565
+ "indicators.changed",
1566
+ "creative.purged",
1567
+ "account.status_changed",
1568
+ "product.created",
1569
+ "product.updated",
1570
+ "product.priced",
1571
+ "product.removed",
1572
+ "signal.created",
1573
+ "signal.updated",
1574
+ "signal.priced",
1575
+ "signal.removed",
1576
+ "wholesale_feed.bulk_change"
1577
+ ]
1578
+ },
1579
+ "minItems": 1,
1580
+ "uniqueItems": true
1581
+ },
1582
+ "product_payload_view": {
1583
+ "type": "string",
1584
+ "enum": [
1585
+ "canonical",
1586
+ "legacy"
1587
+ ],
1588
+ "default": "legacy"
1589
+ },
1590
+ "authentication": {
1591
+ "type": "object",
1592
+ "deprecated": true,
1593
+ "properties": {
1594
+ "schemes": {
1595
+ "type": "array",
1596
+ "items": {
1597
+ "$ref": "#/$defs/external:enums~1auth-scheme.json"
1598
+ },
1599
+ "minItems": 1,
1600
+ "maxItems": 1
1601
+ },
1602
+ "credentials": {
1603
+ "type": "string",
1604
+ "minLength": 32
1605
+ }
1606
+ },
1607
+ "required": [
1608
+ "schemes"
1609
+ ],
1610
+ "additionalProperties": false
1611
+ },
1612
+ "active": {
1613
+ "type": "boolean",
1614
+ "default": true
1615
+ },
1616
+ "ext": {
1617
+ "$ref": "#/$defs/external:core~1ext.json"
1618
+ }
1619
+ },
1620
+ "required": [
1621
+ "subscriber_id",
1622
+ "url",
1623
+ "event_types"
1624
+ ],
1625
+ "allOf": [
1626
+ {
1627
+ "if": {
1628
+ "required": [
1629
+ "product_payload_view"
1630
+ ]
1631
+ },
1632
+ "then": {
1633
+ "properties": {
1634
+ "event_types": {
1635
+ "contains": {
1636
+ "enum": [
1637
+ "product.created",
1638
+ "product.updated",
1639
+ "product.priced",
1640
+ "product.removed"
1641
+ ]
1642
+ }
1643
+ }
1644
+ }
1645
+ }
1646
+ }
1647
+ ],
1648
+ "additionalProperties": false
1649
+ },
1650
+ "external:core/webhook-activity-record.json": {
1651
+ "type": "object",
1652
+ "properties": {
1653
+ "idempotency_key": {
1654
+ "type": "string"
1655
+ },
1656
+ "notification_id": {
1657
+ "type": "string",
1658
+ "minLength": 1,
1659
+ "maxLength": 255,
1660
+ "pattern": "^[A-Za-z0-9_.:-]{1,255}$"
1661
+ },
1662
+ "subscriber_id": {
1663
+ "type": "string"
1664
+ },
1665
+ "fired_at": {
1666
+ "type": "string",
1667
+ "format": "date-time"
1668
+ },
1669
+ "completed_at": {
1670
+ "type": [
1671
+ "string",
1672
+ "null"
1673
+ ],
1674
+ "format": "date-time"
1675
+ },
1676
+ "notification_type": {
1677
+ "$ref": "#/$defs/external:enums~1notification-type.json"
1678
+ },
1679
+ "sequence_number": {
1680
+ "type": "integer",
1681
+ "minimum": 0
1682
+ },
1683
+ "attempt": {
1684
+ "type": "integer",
1685
+ "minimum": 1
1686
+ },
1687
+ "status": {
1688
+ "type": "string",
1689
+ "enum": [
1690
+ "success",
1691
+ "failed",
1692
+ "timeout",
1693
+ "connection_error",
1694
+ "pending"
1695
+ ]
1696
+ },
1697
+ "url": {
1698
+ "type": "string",
1699
+ "format": "uri"
1700
+ },
1701
+ "http_status_code": {
1702
+ "type": [
1703
+ "integer",
1704
+ "null"
1705
+ ],
1706
+ "minimum": 100,
1707
+ "maximum": 599
1708
+ },
1709
+ "response_time_ms": {
1710
+ "type": [
1711
+ "integer",
1712
+ "null"
1713
+ ],
1714
+ "minimum": 0
1715
+ },
1716
+ "payload_size_bytes": {
1717
+ "type": "integer",
1718
+ "minimum": 0
1719
+ },
1720
+ "error_message": {
1721
+ "type": [
1722
+ "string",
1723
+ "null"
1724
+ ],
1725
+ "maxLength": 500
1726
+ },
1727
+ "ext": {
1728
+ "$ref": "#/$defs/external:core~1ext.json"
1729
+ }
1730
+ },
1731
+ "required": [
1732
+ "idempotency_key",
1733
+ "fired_at",
1734
+ "notification_type",
1735
+ "attempt",
1736
+ "status",
1737
+ "url"
1738
+ ],
1739
+ "additionalProperties": false
1740
+ },
1741
+ "external:enums/notification-type.json": {
1742
+ "type": "string",
1743
+ "enum": [
1744
+ "scheduled",
1745
+ "final",
1746
+ "delayed",
1747
+ "adjusted",
1748
+ "window_update",
1749
+ "impairment",
1750
+ "creative.status_changed",
1751
+ "creative.assignment_changed",
1752
+ "indicators.changed",
1753
+ "creative.purged",
1754
+ "account.status_changed",
1755
+ "product.created",
1756
+ "product.updated",
1757
+ "product.priced",
1758
+ "product.removed",
1759
+ "signal.created",
1760
+ "signal.updated",
1761
+ "signal.priced",
1762
+ "signal.removed",
1763
+ "wholesale_feed.bulk_change",
1764
+ "capabilities.changed"
1765
+ ]
1766
+ },
1767
+ "external:enums/creative-action.json": {
1768
+ "type": "string",
1769
+ "enum": [
1770
+ "created",
1771
+ "updated",
1772
+ "unchanged",
1773
+ "failed",
1774
+ "deleted"
1775
+ ]
1776
+ },
1777
+ "external:enums/creative-status.json": {
1778
+ "type": "string",
1779
+ "enum": [
1780
+ "processing",
1781
+ "pending_review",
1782
+ "approved",
1783
+ "suspended",
1784
+ "rejected",
1785
+ "archived"
1786
+ ]
1787
+ },
1788
+ "external:core/creative-localization-readback.json": {
1789
+ "x-adcp-validation": {
1790
+ "verifier_constraints": {
1791
+ "unique_variant_properties": [
1792
+ "locale_variant_id",
1793
+ "locale"
1794
+ ],
1795
+ "exact_role_counts": {
1796
+ "source": 1
1797
+ },
1798
+ "default_locale_variant_id": "must_reference_exactly_one_variant",
1799
+ "source_assets": "must_equal_enclosing_creative.assets",
1800
+ "locale_matching": "rfc4647_lookup",
1801
+ "locale_match_comparison": "canonical_tag_equality_after_requested_range_truncation",
1802
+ "delivery_locale_preferences": "ordered_external_input_not_defined_by_adcp",
1803
+ "unique_locale_fallback_properties": [
1804
+ "language_range"
1805
+ ],
1806
+ "locale_fallback_variant_ids": "must_reference_exactly_one_variant",
1807
+ "selection_order": "for_each_preference_strict_lookup_then_most_specific_explicit_fallback_then_next_preference_then_unmatched_action",
1808
+ "localized_asset_language": {
1809
+ "asset_types": [
1810
+ "text",
1811
+ "markdown"
1812
+ ],
1813
+ "when_present": "must_equal_enclosing_variant.locale",
1814
+ "omitted": "no_asset_language_claim"
1815
+ }
1816
+ },
1817
+ "spec": "docs/creative/task-reference/list_creatives.mdx#localized-creative-readback"
1818
+ },
1819
+ "type": "object",
1820
+ "properties": {
1821
+ "default_locale_variant_id": {
1822
+ "type": "string",
1823
+ "minLength": 1,
1824
+ "maxLength": 255,
1825
+ "x-entity": "creative_locale_variant"
1826
+ },
1827
+ "unmatched_locale_action": {
1828
+ "type": "string",
1829
+ "enum": [
1830
+ "serve_default",
1831
+ "do_not_serve"
1832
+ ]
1833
+ },
1834
+ "locale_matching": {
1835
+ "type": "string",
1836
+ "const": "rfc4647_lookup"
1837
+ },
1838
+ "locale_fallbacks": {
1839
+ "type": "array",
1840
+ "items": {
1841
+ "type": "object",
1842
+ "properties": {
1843
+ "language_range": {
1844
+ "$ref": "#/$defs/external:core~1locale-tag.json"
1845
+ },
1846
+ "locale_variant_id": {
1847
+ "type": "string",
1848
+ "minLength": 1,
1849
+ "maxLength": 255,
1850
+ "x-entity": "creative_locale_variant"
1851
+ }
1852
+ },
1853
+ "required": [
1854
+ "language_range",
1855
+ "locale_variant_id"
1856
+ ],
1857
+ "additionalProperties": true
1858
+ },
1859
+ "minItems": 1,
1860
+ "maxItems": 50,
1861
+ "uniqueItems": true
1862
+ },
1863
+ "variants": {
1864
+ "type": "array",
1865
+ "items": {
1866
+ "discriminator": {
1867
+ "propertyName": "role"
1868
+ },
1869
+ "oneOf": [
1870
+ {
1871
+ "type": "object",
1872
+ "properties": {
1873
+ "locale_variant_id": {
1874
+ "type": "string",
1875
+ "minLength": 1,
1876
+ "maxLength": 255,
1877
+ "x-entity": "creative_locale_variant"
1878
+ },
1879
+ "locale": {
1880
+ "$ref": "#/$defs/external:core~1locale-tag.json"
1881
+ },
1882
+ "role": {
1883
+ "type": "string",
1884
+ "const": "source"
1885
+ },
1886
+ "assets": {
1887
+ "$ref": "#/$defs/external:core~1creative-localization-readback.json/$defs/resolvedAssets"
1888
+ }
1889
+ },
1890
+ "required": [
1891
+ "locale_variant_id",
1892
+ "locale",
1893
+ "role",
1894
+ "assets"
1895
+ ],
1896
+ "not": {
1897
+ "anyOf": [
1898
+ {
1899
+ "required": [
1900
+ "translation_mode"
1901
+ ]
1902
+ },
1903
+ {
1904
+ "required": [
1905
+ "status"
1906
+ ]
1907
+ },
1908
+ {
1909
+ "required": [
1910
+ "launch_status"
1911
+ ]
1912
+ }
1913
+ ]
1914
+ },
1915
+ "additionalProperties": true
1916
+ },
1917
+ {
1918
+ "type": "object",
1919
+ "properties": {
1920
+ "locale_variant_id": {
1921
+ "type": "string",
1922
+ "minLength": 1,
1923
+ "maxLength": 255,
1924
+ "x-entity": "creative_locale_variant"
1925
+ },
1926
+ "locale": {
1927
+ "$ref": "#/$defs/external:core~1locale-tag.json"
1928
+ },
1929
+ "role": {
1930
+ "type": "string",
1931
+ "const": "target"
1932
+ },
1933
+ "assets": {
1934
+ "$ref": "#/$defs/external:core~1creative-localization-readback.json/$defs/resolvedAssets"
1935
+ }
1936
+ },
1937
+ "required": [
1938
+ "locale_variant_id",
1939
+ "locale",
1940
+ "role",
1941
+ "assets"
1942
+ ],
1943
+ "not": {
1944
+ "anyOf": [
1945
+ {
1946
+ "required": [
1947
+ "translation_mode"
1948
+ ]
1949
+ },
1950
+ {
1951
+ "required": [
1952
+ "status"
1953
+ ]
1954
+ },
1955
+ {
1956
+ "required": [
1957
+ "launch_status"
1958
+ ]
1959
+ }
1960
+ ]
1961
+ },
1962
+ "additionalProperties": true
1963
+ }
1964
+ ]
1965
+ },
1966
+ "minItems": 1,
1967
+ "maxItems": 51,
1968
+ "uniqueItems": true
1969
+ }
1970
+ },
1971
+ "required": [
1972
+ "default_locale_variant_id",
1973
+ "unmatched_locale_action",
1974
+ "locale_matching",
1975
+ "variants"
1976
+ ],
1977
+ "additionalProperties": true,
1978
+ "$defs": {
1979
+ "resolvedAssets": {
1980
+ "type": "object",
1981
+ "minProperties": 1,
1982
+ "patternProperties": {
1983
+ "^[a-z0-9_]+$": {
1984
+ "anyOf": [
1985
+ {
1986
+ "$ref": "#/$defs/external:core~1localized-creative-asset.json"
1987
+ },
1988
+ {
1989
+ "type": "array",
1990
+ "items": {
1991
+ "$ref": "#/$defs/external:core~1localized-creative-asset.json"
1992
+ },
1993
+ "minItems": 1
1994
+ }
1995
+ ]
1996
+ }
1997
+ },
1998
+ "additionalProperties": false
1999
+ }
2000
+ }
2001
+ },
2002
+ "external:core/locale-tag.json": {
2003
+ "x-adcp-validation": {
2004
+ "verifier_constraints": {
2005
+ "well_formed": "rfc5646",
2006
+ "semantic_scope": "language_identity_only",
2007
+ "canonical_wire_profile": "adcp_bcp47_casing",
2008
+ "rfc5646_comparison": "case_insensitive",
2009
+ "non_profile": "reject"
2010
+ },
2011
+ "spec": "docs/protocol/language-and-localization.mdx#one-language-tag-primitive"
2012
+ },
2013
+ "type": "string",
2014
+ "minLength": 2,
2015
+ "maxLength": 63,
2016
+ "pattern": "^(?:[a-z]{2,8}(?:-[A-Z][a-z]{3})?(?:-(?:[A-Z]{2}|[0-9]{3}))?(?:-(?:[a-z0-9]{5,8}|[0-9][a-z0-9]{3}))*(?:-[0-9a-wy-z](?:-[a-z0-9]{2,8})+)*(?:-x(?:-[a-z0-9]{1,8})+)?|x(?:-[a-z0-9]{1,8})+)$"
2017
+ },
2018
+ "external:core/localized-creative-asset.json": {
2019
+ "x-adcp-validation": {
2020
+ "verifier_constraints": {
2021
+ "language_asset_types": [
2022
+ "text",
2023
+ "markdown"
2024
+ ],
2025
+ "language_when_present": {
2026
+ "schema": "/schemas/core/locale-tag.json",
2027
+ "must_equal": "enclosing_variant.locale"
2028
+ },
2029
+ "language_omitted": "no_asset_language_claim"
2030
+ },
2031
+ "spec": "docs/creative/specification.mdx#native-creative-localization"
2032
+ },
2033
+ "allOf": [
2034
+ {
2035
+ "$ref": "#/$defs/external:core~1assets~1asset-union.json"
2036
+ },
2037
+ {
2038
+ "if": {
2039
+ "properties": {
2040
+ "asset_type": {
2041
+ "enum": [
2042
+ "text",
2043
+ "markdown"
2044
+ ]
2045
+ }
2046
+ },
2047
+ "required": [
2048
+ "asset_type"
2049
+ ]
2050
+ },
2051
+ "then": {
2052
+ "properties": {
2053
+ "language": {
2054
+ "$ref": "#/$defs/external:core~1locale-tag.json"
2055
+ }
2056
+ }
2057
+ }
2058
+ }
2059
+ ]
2060
+ },
2061
+ "external:core/assets/asset-union.json": {
2062
+ "type": "object",
2063
+ "oneOf": [
2064
+ {
2065
+ "$ref": "#/$defs/external:core~1assets~1image-asset.json"
2066
+ },
2067
+ {
2068
+ "$ref": "#/$defs/external:core~1assets~1video-asset.json"
2069
+ },
2070
+ {
2071
+ "$ref": "#/$defs/external:core~1assets~1audio-asset.json"
2072
+ },
2073
+ {
2074
+ "$ref": "#/$defs/external:core~1assets~1vast-asset.json"
2075
+ },
2076
+ {
2077
+ "$ref": "#/$defs/external:core~1assets~1text-asset.json"
2078
+ },
2079
+ {
2080
+ "$ref": "#/$defs/external:core~1assets~1url-asset.json"
2081
+ },
2082
+ {
2083
+ "$ref": "#/$defs/external:core~1assets~1html-asset.json"
2084
+ },
2085
+ {
2086
+ "$ref": "#/$defs/external:core~1assets~1javascript-asset.json"
2087
+ },
2088
+ {
2089
+ "$ref": "#/$defs/external:core~1assets~1zip-asset.json"
2090
+ },
2091
+ {
2092
+ "$ref": "#/$defs/external:core~1assets~1webhook-asset.json"
2093
+ },
2094
+ {
2095
+ "$ref": "#/$defs/external:core~1assets~1css-asset.json"
2096
+ },
2097
+ {
2098
+ "$ref": "#/$defs/external:core~1assets~1daast-asset.json"
2099
+ },
2100
+ {
2101
+ "$ref": "#/$defs/external:core~1assets~1markdown-asset.json"
2102
+ },
2103
+ {
2104
+ "$ref": "#/$defs/external:core~1assets~1brief-asset.json"
2105
+ },
2106
+ {
2107
+ "$ref": "#/$defs/external:core~1assets~1catalog-asset.json"
2108
+ },
2109
+ {
2110
+ "$ref": "#/$defs/external:core~1assets~1published-post-asset.json"
2111
+ },
2112
+ {
2113
+ "$ref": "#/$defs/external:core~1assets~1card-asset.json"
2114
+ },
2115
+ {
2116
+ "$ref": "#/$defs/external:core~1assets~1pixel-tracker-asset.json"
2117
+ },
2118
+ {
2119
+ "$ref": "#/$defs/external:core~1assets~1vast-tracker-asset.json"
2120
+ },
2121
+ {
2122
+ "$ref": "#/$defs/external:core~1assets~1daast-tracker-asset.json"
2123
+ }
2124
+ ],
2125
+ "discriminator": {
2126
+ "propertyName": "asset_type"
2127
+ }
2128
+ },
2129
+ "external:core/assets/video-asset.json": {
2130
+ "type": "object",
2131
+ "properties": {
2132
+ "asset_type": {
2133
+ "type": "string",
2134
+ "const": "video"
2135
+ },
2136
+ "url": {
2137
+ "type": "string",
2138
+ "format": "uri"
2139
+ },
2140
+ "width": {
2141
+ "type": "integer",
2142
+ "minimum": 1
2143
+ },
2144
+ "height": {
2145
+ "type": "integer",
2146
+ "minimum": 1
2147
+ },
2148
+ "duration_ms": {
2149
+ "type": "integer",
2150
+ "minimum": 1
2151
+ },
2152
+ "file_size_bytes": {
2153
+ "type": "integer",
2154
+ "minimum": 1
2155
+ },
2156
+ "container_format": {
2157
+ "type": "string"
2158
+ },
2159
+ "video_codec": {
2160
+ "type": "string"
2161
+ },
2162
+ "video_bitrate_kbps": {
2163
+ "type": "integer",
2164
+ "minimum": 1
2165
+ },
2166
+ "frame_rate": {
2167
+ "type": "string"
2168
+ },
2169
+ "frame_rate_type": {
2170
+ "$ref": "#/$defs/external:enums~1frame-rate-type.json"
2171
+ },
2172
+ "scan_type": {
2173
+ "$ref": "#/$defs/external:enums~1scan-type.json"
2174
+ },
2175
+ "color_space": {
2176
+ "type": "string",
2177
+ "enum": [
2178
+ "rec709",
2179
+ "rec2020",
2180
+ "rec2100",
2181
+ "srgb",
2182
+ "dci_p3"
2183
+ ]
2184
+ },
2185
+ "hdr_format": {
2186
+ "type": "string",
2187
+ "enum": [
2188
+ "sdr",
2189
+ "hdr10",
2190
+ "hdr10_plus",
2191
+ "hlg",
2192
+ "dolby_vision"
2193
+ ]
2194
+ },
2195
+ "chroma_subsampling": {
2196
+ "type": "string",
2197
+ "enum": [
2198
+ "4:2:0",
2199
+ "4:2:2",
2200
+ "4:4:4"
2201
+ ]
2202
+ },
2203
+ "video_bit_depth": {
2204
+ "type": "integer",
2205
+ "enum": [
2206
+ 8,
2207
+ 10,
2208
+ 12
2209
+ ]
2210
+ },
2211
+ "gop_interval_seconds": {
2212
+ "type": "number"
2213
+ },
2214
+ "gop_type": {
2215
+ "$ref": "#/$defs/external:enums~1gop-type.json"
2216
+ },
2217
+ "moov_atom_position": {
2218
+ "$ref": "#/$defs/external:enums~1moov-atom-position.json"
2219
+ },
2220
+ "has_audio": {
2221
+ "type": "boolean"
2222
+ },
2223
+ "audio_codec": {
2224
+ "type": "string"
2225
+ },
2226
+ "audio_sampling_rate_hz": {
2227
+ "type": "integer"
2228
+ },
2229
+ "audio_channels": {
2230
+ "$ref": "#/$defs/external:enums~1audio-channel-layout.json"
2231
+ },
2232
+ "audio_bit_depth": {
2233
+ "type": "integer",
2234
+ "enum": [
2235
+ 16,
2236
+ 24,
2237
+ 32
2238
+ ]
2239
+ },
2240
+ "audio_bitrate_kbps": {
2241
+ "type": "integer",
2242
+ "minimum": 1
2243
+ },
2244
+ "audio_loudness_lufs": {
2245
+ "type": "number"
2246
+ },
2247
+ "audio_true_peak_dbfs": {
2248
+ "type": "number"
2249
+ },
2250
+ "captions_url": {
2251
+ "type": "string",
2252
+ "format": "uri",
2253
+ "x-accessibility": true
2254
+ },
2255
+ "transcript_url": {
2256
+ "type": "string",
2257
+ "format": "uri",
2258
+ "x-accessibility": true
2259
+ },
2260
+ "audio_description_url": {
2261
+ "type": "string",
2262
+ "format": "uri",
2263
+ "x-accessibility": true
2264
+ },
2265
+ "provenance": {
2266
+ "$ref": "#/$defs/external:core~1provenance.json"
2267
+ }
2268
+ },
2269
+ "required": [
2270
+ "asset_type",
2271
+ "url",
2272
+ "width",
2273
+ "height"
2274
+ ],
2275
+ "additionalProperties": true
2276
+ },
2277
+ "external:enums/frame-rate-type.json": {
2278
+ "type": "string",
2279
+ "enum": [
2280
+ "constant",
2281
+ "variable"
2282
+ ]
2283
+ },
2284
+ "external:enums/scan-type.json": {
2285
+ "type": "string",
2286
+ "enum": [
2287
+ "progressive",
2288
+ "interlaced"
2289
+ ]
2290
+ },
2291
+ "external:enums/gop-type.json": {
2292
+ "type": "string",
2293
+ "enum": [
2294
+ "closed",
2295
+ "open"
2296
+ ]
2297
+ },
2298
+ "external:enums/moov-atom-position.json": {
2299
+ "type": "string",
2300
+ "enum": [
2301
+ "start",
2302
+ "end"
2303
+ ]
2304
+ },
2305
+ "external:enums/audio-channel-layout.json": {
2306
+ "type": "string",
2307
+ "enum": [
2308
+ "mono",
2309
+ "stereo",
2310
+ "5.1",
2311
+ "7.1"
2312
+ ]
2313
+ },
2314
+ "external:core/assets/audio-asset.json": {
2315
+ "type": "object",
2316
+ "properties": {
2317
+ "asset_type": {
2318
+ "type": "string",
2319
+ "const": "audio"
2320
+ },
2321
+ "url": {
2322
+ "type": "string",
2323
+ "format": "uri"
2324
+ },
2325
+ "duration_ms": {
2326
+ "type": "integer",
2327
+ "minimum": 0
2328
+ },
2329
+ "file_size_bytes": {
2330
+ "type": "integer",
2331
+ "minimum": 1
2332
+ },
2333
+ "container_format": {
2334
+ "type": "string"
2335
+ },
2336
+ "codec": {
2337
+ "type": "string"
2338
+ },
2339
+ "sampling_rate_hz": {
2340
+ "type": "integer"
2341
+ },
2342
+ "channels": {
2343
+ "$ref": "#/$defs/external:enums~1audio-channel-layout.json"
2344
+ },
2345
+ "bit_depth": {
2346
+ "type": "integer",
2347
+ "enum": [
2348
+ 16,
2349
+ 24,
2350
+ 32
2351
+ ]
2352
+ },
2353
+ "bitrate_kbps": {
2354
+ "type": "integer",
2355
+ "minimum": 1
2356
+ },
2357
+ "loudness_lufs": {
2358
+ "type": "number"
2359
+ },
2360
+ "true_peak_dbfs": {
2361
+ "type": "number"
2362
+ },
2363
+ "transcript_url": {
2364
+ "type": "string",
2365
+ "format": "uri",
2366
+ "x-accessibility": true
2367
+ },
2368
+ "provenance": {
2369
+ "$ref": "#/$defs/external:core~1provenance.json"
2370
+ }
2371
+ },
2372
+ "required": [
2373
+ "asset_type",
2374
+ "url"
2375
+ ],
2376
+ "additionalProperties": true
2377
+ },
2378
+ "external:core/assets/vast-asset.json": {
2379
+ "type": "object",
2380
+ "properties": {
2381
+ "asset_type": {
2382
+ "type": "string",
2383
+ "const": "vast"
2384
+ },
2385
+ "vast_version": {
2386
+ "$ref": "#/$defs/external:enums~1vast-version.json"
2387
+ },
2388
+ "vpaid_enabled": {
2389
+ "type": "boolean"
2390
+ },
2391
+ "duration_ms": {
2392
+ "type": "integer",
2393
+ "minimum": 0
2394
+ },
2395
+ "tracking_events": {
2396
+ "type": "array",
2397
+ "items": {
2398
+ "$ref": "#/$defs/external:enums~1vast-tracking-event.json"
2399
+ }
2400
+ },
2401
+ "captions_url": {
2402
+ "type": "string",
2403
+ "format": "uri",
2404
+ "x-accessibility": true
2405
+ },
2406
+ "audio_description_url": {
2407
+ "type": "string",
2408
+ "format": "uri",
2409
+ "x-accessibility": true
2410
+ },
2411
+ "provenance": {
2412
+ "$ref": "#/$defs/external:core~1provenance.json"
2413
+ }
2414
+ },
2415
+ "required": [
2416
+ "asset_type"
2417
+ ],
2418
+ "oneOf": [
2419
+ {
2420
+ "properties": {
2421
+ "delivery_type": {
2422
+ "type": "string",
2423
+ "const": "url"
2424
+ },
2425
+ "url": {
2426
+ "type": "string",
2427
+ "format": "uri-template"
2428
+ }
2429
+ },
2430
+ "required": [
2431
+ "delivery_type",
2432
+ "url"
2433
+ ]
2434
+ },
2435
+ {
2436
+ "properties": {
2437
+ "delivery_type": {
2438
+ "type": "string",
2439
+ "const": "inline"
2440
+ },
2441
+ "content": {
2442
+ "type": "string"
2443
+ }
2444
+ },
2445
+ "required": [
2446
+ "delivery_type",
2447
+ "content"
2448
+ ]
2449
+ }
2450
+ ],
2451
+ "discriminator": {
2452
+ "propertyName": "delivery_type"
2453
+ },
2454
+ "additionalProperties": true
2455
+ },
2456
+ "external:enums/vast-version.json": {
2457
+ "type": "string",
2458
+ "enum": [
2459
+ "2.0",
2460
+ "3.0",
2461
+ "4.0",
2462
+ "4.1",
2463
+ "4.2",
2464
+ "4.3"
2465
+ ]
2466
+ },
2467
+ "external:enums/vast-tracking-event.json": {
2468
+ "type": "string",
2469
+ "enum": [
2470
+ "impression",
2471
+ "creativeView",
2472
+ "loaded",
2473
+ "start",
2474
+ "firstQuartile",
2475
+ "midpoint",
2476
+ "thirdQuartile",
2477
+ "complete",
2478
+ "mute",
2479
+ "unmute",
2480
+ "pause",
2481
+ "resume",
2482
+ "rewind",
2483
+ "skip",
2484
+ "playerExpand",
2485
+ "playerCollapse",
2486
+ "fullscreen",
2487
+ "exitFullscreen",
2488
+ "progress",
2489
+ "acceptInvitation",
2490
+ "adExpand",
2491
+ "adCollapse",
2492
+ "minimize",
2493
+ "overlayViewDuration",
2494
+ "otherAdInteraction",
2495
+ "interactiveStart",
2496
+ "clickTracking",
2497
+ "customClick",
2498
+ "close",
2499
+ "closeLinear",
2500
+ "error",
2501
+ "viewable",
2502
+ "notViewable",
2503
+ "viewUndetermined",
2504
+ "measurableImpression",
2505
+ "viewableImpression"
2506
+ ]
2507
+ },
2508
+ "external:core/assets/text-asset.json": {
2509
+ "type": "object",
2510
+ "properties": {
2511
+ "asset_type": {
2512
+ "type": "string",
2513
+ "const": "text"
2514
+ },
2515
+ "content": {
2516
+ "type": "string"
2517
+ },
2518
+ "language": {
2519
+ "type": "string"
2520
+ },
2521
+ "provenance": {
2522
+ "$ref": "#/$defs/external:core~1provenance.json"
2523
+ }
2524
+ },
2525
+ "required": [
2526
+ "asset_type",
2527
+ "content"
2528
+ ],
2529
+ "additionalProperties": true
2530
+ },
2531
+ "external:core/assets/url-asset.json": {
2532
+ "type": "object",
2533
+ "properties": {
2534
+ "asset_type": {
2535
+ "type": "string",
2536
+ "const": "url"
2537
+ },
2538
+ "url": {
2539
+ "type": "string",
2540
+ "format": "uri-template"
2541
+ },
2542
+ "url_type": {
2543
+ "$ref": "#/$defs/external:enums~1url-asset-type.json"
2544
+ },
2545
+ "description": {
2546
+ "type": "string"
2547
+ },
2548
+ "provenance": {
2549
+ "$ref": "#/$defs/external:core~1provenance.json"
2550
+ }
2551
+ },
2552
+ "required": [
2553
+ "asset_type",
2554
+ "url"
2555
+ ],
2556
+ "additionalProperties": true
2557
+ },
2558
+ "external:enums/url-asset-type.json": {
2559
+ "type": "string",
2560
+ "enum": [
2561
+ "clickthrough",
2562
+ "tracker_pixel",
2563
+ "tracker_script"
2564
+ ]
2565
+ },
2566
+ "external:core/assets/html-asset.json": {
2567
+ "type": "object",
2568
+ "properties": {
2569
+ "asset_type": {
2570
+ "type": "string",
2571
+ "const": "html"
2572
+ },
2573
+ "content": {
2574
+ "type": "string"
2575
+ },
2576
+ "version": {
2577
+ "type": "string"
2578
+ },
2579
+ "accessibility": {
2580
+ "type": "object",
2581
+ "x-accessibility": true,
2582
+ "properties": {
2583
+ "alt_text": {
2584
+ "type": "string"
2585
+ },
2586
+ "keyboard_navigable": {
2587
+ "type": "boolean"
2588
+ },
2589
+ "motion_control": {
2590
+ "type": "boolean"
2591
+ },
2592
+ "screen_reader_tested": {
2593
+ "type": "boolean"
2594
+ }
2595
+ }
2596
+ },
2597
+ "provenance": {
2598
+ "$ref": "#/$defs/external:core~1provenance.json"
2599
+ }
2600
+ },
2601
+ "required": [
2602
+ "asset_type",
2603
+ "content"
2604
+ ],
2605
+ "additionalProperties": true
2606
+ },
2607
+ "external:core/assets/javascript-asset.json": {
2608
+ "type": "object",
2609
+ "properties": {
2610
+ "asset_type": {
2611
+ "type": "string",
2612
+ "const": "javascript"
2613
+ },
2614
+ "content": {
2615
+ "type": "string"
2616
+ },
2617
+ "module_type": {
2618
+ "$ref": "#/$defs/external:enums~1javascript-module-type.json"
2619
+ },
2620
+ "accessibility": {
2621
+ "type": "object",
2622
+ "x-accessibility": true,
2623
+ "properties": {
2624
+ "alt_text": {
2625
+ "type": "string"
2626
+ },
2627
+ "keyboard_navigable": {
2628
+ "type": "boolean"
2629
+ },
2630
+ "motion_control": {
2631
+ "type": "boolean"
2632
+ },
2633
+ "screen_reader_tested": {
2634
+ "type": "boolean"
2635
+ }
2636
+ }
2637
+ },
2638
+ "provenance": {
2639
+ "$ref": "#/$defs/external:core~1provenance.json"
2640
+ }
2641
+ },
2642
+ "required": [
2643
+ "asset_type",
2644
+ "content"
2645
+ ],
2646
+ "additionalProperties": true
2647
+ },
2648
+ "external:enums/javascript-module-type.json": {
2649
+ "type": "string",
2650
+ "enum": [
2651
+ "esm",
2652
+ "commonjs",
2653
+ "script"
2654
+ ]
2655
+ },
2656
+ "external:core/assets/zip-asset.json": {
2657
+ "type": "object",
2658
+ "properties": {
2659
+ "asset_type": {
2660
+ "type": "string",
2661
+ "const": "zip"
2662
+ },
2663
+ "url": {
2664
+ "type": "string",
2665
+ "format": "uri"
2666
+ },
2667
+ "max_file_size_kb": {
2668
+ "type": "integer",
2669
+ "minimum": 0
2670
+ },
2671
+ "entry_point": {
2672
+ "type": "string"
2673
+ },
2674
+ "allowed_inner_extensions": {
2675
+ "type": "array",
2676
+ "items": {
2677
+ "type": "string"
2678
+ }
2679
+ },
2680
+ "backup_image_url": {
2681
+ "type": "string",
2682
+ "format": "uri"
2683
+ },
2684
+ "digest": {
2685
+ "type": "string",
2686
+ "pattern": "^sha256:[a-f0-9]{64}$"
2687
+ },
2688
+ "accessibility": {
2689
+ "type": "object",
2690
+ "x-accessibility": true,
2691
+ "properties": {
2692
+ "alt_text": {
2693
+ "type": "string"
2694
+ },
2695
+ "keyboard_navigable": {
2696
+ "type": "boolean"
2697
+ },
2698
+ "motion_control": {
2699
+ "type": "boolean"
2700
+ },
2701
+ "screen_reader_tested": {
2702
+ "type": "boolean"
2703
+ }
2704
+ }
2705
+ },
2706
+ "provenance": {
2707
+ "$ref": "#/$defs/external:core~1provenance.json"
2708
+ }
2709
+ },
2710
+ "required": [
2711
+ "asset_type",
2712
+ "url"
2713
+ ],
2714
+ "additionalProperties": true
2715
+ },
2716
+ "external:core/assets/webhook-asset.json": {
2717
+ "type": "object",
2718
+ "properties": {
2719
+ "asset_type": {
2720
+ "type": "string",
2721
+ "const": "webhook"
2722
+ },
2723
+ "url": {
2724
+ "type": "string",
2725
+ "format": "uri"
2726
+ },
2727
+ "method": {
2728
+ "$ref": "#/$defs/external:enums~1http-method.json",
2729
+ "default": "POST"
2730
+ },
2731
+ "timeout_ms": {
2732
+ "type": "integer",
2733
+ "minimum": 10,
2734
+ "maximum": 5000,
2735
+ "default": 500
2736
+ },
2737
+ "supported_macros": {
2738
+ "type": "array",
2739
+ "items": {
2740
+ "anyOf": [
2741
+ {
2742
+ "$ref": "#/$defs/external:enums~1universal-macro.json"
2743
+ },
2744
+ {
2745
+ "type": "string"
2746
+ }
2747
+ ]
2748
+ }
2749
+ },
2750
+ "required_macros": {
2751
+ "type": "array",
2752
+ "items": {
2753
+ "anyOf": [
2754
+ {
2755
+ "$ref": "#/$defs/external:enums~1universal-macro.json"
2756
+ },
2757
+ {
2758
+ "type": "string"
2759
+ }
2760
+ ]
2761
+ }
2762
+ },
2763
+ "response_type": {
2764
+ "$ref": "#/$defs/external:enums~1webhook-response-type.json"
2765
+ },
2766
+ "security": {
2767
+ "type": "object",
2768
+ "properties": {
2769
+ "method": {
2770
+ "$ref": "#/$defs/external:enums~1webhook-security-method.json"
2771
+ },
2772
+ "hmac_header": {
2773
+ "type": "string"
2774
+ },
2775
+ "api_key_header": {
2776
+ "type": "string"
2777
+ }
2778
+ },
2779
+ "required": [
2780
+ "method"
2781
+ ]
2782
+ },
2783
+ "provenance": {
2784
+ "$ref": "#/$defs/external:core~1provenance.json"
2785
+ }
2786
+ },
2787
+ "required": [
2788
+ "asset_type",
2789
+ "url",
2790
+ "response_type",
2791
+ "security"
2792
+ ],
2793
+ "additionalProperties": true
2794
+ },
2795
+ "external:enums/http-method.json": {
2796
+ "type": "string",
2797
+ "enum": [
2798
+ "GET",
2799
+ "POST"
2800
+ ]
2801
+ },
2802
+ "external:enums/universal-macro.json": {
2803
+ "type": "string",
2804
+ "enum": [
2805
+ "MEDIA_BUY_ID",
2806
+ "PACKAGE_ID",
2807
+ "CREATIVE_ID",
2808
+ "CACHEBUSTER",
2809
+ "TIMESTAMP",
2810
+ "CLICK_URL",
2811
+ "GDPR",
2812
+ "GDPR_CONSENT",
2813
+ "US_PRIVACY",
2814
+ "GPP_STRING",
2815
+ "GPP_SID",
2816
+ "IP_ADDRESS",
2817
+ "LIMIT_AD_TRACKING",
2818
+ "DEVICE_TYPE",
2819
+ "OS",
2820
+ "OS_VERSION",
2821
+ "DEVICE_MAKE",
2822
+ "DEVICE_MODEL",
2823
+ "USER_AGENT",
2824
+ "APP_BUNDLE",
2825
+ "APP_NAME",
2826
+ "COUNTRY",
2827
+ "REGION",
2828
+ "CITY",
2829
+ "ZIP",
2830
+ "DMA",
2831
+ "LAT",
2832
+ "LONG",
2833
+ "DEVICE_ID",
2834
+ "DEVICE_ID_TYPE",
2835
+ "DOMAIN",
2836
+ "PAGE_URL",
2837
+ "REFERRER",
2838
+ "KEYWORDS",
2839
+ "PLACEMENT_ID",
2840
+ "FOLD_POSITION",
2841
+ "AD_WIDTH",
2842
+ "AD_HEIGHT",
2843
+ "VIDEO_ID",
2844
+ "VIDEO_TITLE",
2845
+ "VIDEO_DURATION",
2846
+ "VIDEO_CATEGORY",
2847
+ "CONTENT_GENRE",
2848
+ "CONTENT_RATING",
2849
+ "PLAYER_WIDTH",
2850
+ "PLAYER_HEIGHT",
2851
+ "POD_POSITION",
2852
+ "POD_SIZE",
2853
+ "AD_BREAK_ID",
2854
+ "STATION_ID",
2855
+ "COLLECTION_NAME",
2856
+ "INSTALLMENT_ID",
2857
+ "AUDIO_DURATION",
2858
+ "TMPX",
2859
+ "IMPRESSION_ID",
2860
+ "AXEM",
2861
+ "CATALOG_ID",
2862
+ "SKU",
2863
+ "GTIN",
2864
+ "OFFERING_ID",
2865
+ "JOB_ID",
2866
+ "HOTEL_ID",
2867
+ "FLIGHT_ID",
2868
+ "VEHICLE_ID",
2869
+ "LISTING_ID",
2870
+ "STORE_ID",
2871
+ "PROGRAM_ID",
2872
+ "DESTINATION_ID",
2873
+ "CREATIVE_VARIANT_ID",
2874
+ "APP_ITEM_ID",
2875
+ "ITEM_NAME",
2876
+ "ITEM_DESCRIPTION",
2877
+ "ITEM_TAGLINE",
2878
+ "ITEM_PRICE",
2879
+ "ITEM_PRICE_CURRENCY"
2880
+ ]
2881
+ },
2882
+ "external:enums/webhook-response-type.json": {
2883
+ "type": "string",
2884
+ "enum": [
2885
+ "html",
2886
+ "json",
2887
+ "xml",
2888
+ "javascript"
2889
+ ]
2890
+ },
2891
+ "external:enums/webhook-security-method.json": {
2892
+ "type": "string",
2893
+ "enum": [
2894
+ "hmac_sha256",
2895
+ "api_key",
2896
+ "none"
2897
+ ]
2898
+ },
2899
+ "external:core/assets/css-asset.json": {
2900
+ "type": "object",
2901
+ "properties": {
2902
+ "asset_type": {
2903
+ "type": "string",
2904
+ "const": "css"
2905
+ },
2906
+ "content": {
2907
+ "type": "string"
2908
+ },
2909
+ "media": {
2910
+ "type": "string"
2911
+ },
2912
+ "provenance": {
2913
+ "$ref": "#/$defs/external:core~1provenance.json"
2914
+ }
2915
+ },
2916
+ "required": [
2917
+ "asset_type",
2918
+ "content"
2919
+ ],
2920
+ "additionalProperties": true
2921
+ },
2922
+ "external:core/assets/daast-asset.json": {
2923
+ "type": "object",
2924
+ "properties": {
2925
+ "asset_type": {
2926
+ "type": "string",
2927
+ "const": "daast"
2928
+ },
2929
+ "daast_version": {
2930
+ "$ref": "#/$defs/external:enums~1daast-version.json"
2931
+ },
2932
+ "duration_ms": {
2933
+ "type": "integer",
2934
+ "minimum": 0
2935
+ },
2936
+ "tracking_events": {
2937
+ "type": "array",
2938
+ "items": {
2939
+ "$ref": "#/$defs/external:enums~1daast-tracking-event.json"
2940
+ }
2941
+ },
2942
+ "companion_ads": {
2943
+ "type": "boolean"
2944
+ },
2945
+ "transcript_url": {
2946
+ "type": "string",
2947
+ "format": "uri",
2948
+ "x-accessibility": true
2949
+ },
2950
+ "provenance": {
2951
+ "$ref": "#/$defs/external:core~1provenance.json"
2952
+ }
2953
+ },
2954
+ "required": [
2955
+ "asset_type"
2956
+ ],
2957
+ "oneOf": [
2958
+ {
2959
+ "properties": {
2960
+ "delivery_type": {
2961
+ "type": "string",
2962
+ "const": "url"
2963
+ },
2964
+ "url": {
2965
+ "type": "string",
2966
+ "format": "uri-template"
2967
+ }
2968
+ },
2969
+ "required": [
2970
+ "delivery_type",
2971
+ "url"
2972
+ ]
2973
+ },
2974
+ {
2975
+ "properties": {
2976
+ "delivery_type": {
2977
+ "type": "string",
2978
+ "const": "inline"
2979
+ },
2980
+ "content": {
2981
+ "type": "string"
2982
+ }
2983
+ },
2984
+ "required": [
2985
+ "delivery_type",
2986
+ "content"
2987
+ ]
2988
+ }
2989
+ ],
2990
+ "discriminator": {
2991
+ "propertyName": "delivery_type"
2992
+ },
2993
+ "additionalProperties": true
2994
+ },
2995
+ "external:enums/daast-version.json": {
2996
+ "type": "string",
2997
+ "enum": [
2998
+ "1.0",
2999
+ "1.1"
3000
+ ]
3001
+ },
3002
+ "external:enums/daast-tracking-event.json": {
3003
+ "type": "string",
3004
+ "enum": [
3005
+ "impression",
3006
+ "creativeView",
3007
+ "start",
3008
+ "firstQuartile",
3009
+ "midpoint",
3010
+ "thirdQuartile",
3011
+ "complete",
3012
+ "mute",
3013
+ "unmute",
3014
+ "pause",
3015
+ "resume",
3016
+ "rewind",
3017
+ "skip",
3018
+ "progress",
3019
+ "clickTracking",
3020
+ "customClick",
3021
+ "close",
3022
+ "error",
3023
+ "viewable",
3024
+ "notViewable",
3025
+ "viewUndetermined",
3026
+ "measurableImpression",
3027
+ "viewableImpression"
3028
+ ]
3029
+ },
3030
+ "external:core/assets/markdown-asset.json": {
3031
+ "type": "object",
3032
+ "properties": {
3033
+ "asset_type": {
3034
+ "type": "string",
3035
+ "const": "markdown"
3036
+ },
3037
+ "content": {
3038
+ "type": "string"
3039
+ },
3040
+ "language": {
3041
+ "type": "string"
3042
+ },
3043
+ "markdown_flavor": {
3044
+ "$ref": "#/$defs/external:enums~1markdown-flavor.json",
3045
+ "default": "commonmark"
3046
+ },
3047
+ "allow_raw_html": {
3048
+ "type": "boolean",
3049
+ "default": false
3050
+ }
3051
+ },
3052
+ "required": [
3053
+ "asset_type",
3054
+ "content"
3055
+ ],
3056
+ "additionalProperties": true
3057
+ },
3058
+ "external:enums/markdown-flavor.json": {
3059
+ "type": "string",
3060
+ "enum": [
3061
+ "commonmark",
3062
+ "gfm"
3063
+ ]
3064
+ },
3065
+ "external:core/assets/brief-asset.json": {
3066
+ "type": "object",
3067
+ "properties": {
3068
+ "asset_type": {
3069
+ "type": "string",
3070
+ "const": "brief"
3071
+ }
3072
+ },
3073
+ "required": [
3074
+ "asset_type"
3075
+ ],
3076
+ "allOf": [
3077
+ {
3078
+ "$ref": "#/$defs/external:core~1creative-brief.json"
3079
+ }
3080
+ ]
3081
+ },
3082
+ "external:core/creative-brief.json": {
3083
+ "type": "object",
3084
+ "properties": {
3085
+ "name": {
3086
+ "type": "string"
3087
+ },
3088
+ "objective": {
3089
+ "type": "string",
3090
+ "enum": [
3091
+ "awareness",
3092
+ "consideration",
3093
+ "conversion",
3094
+ "retention",
3095
+ "engagement"
3096
+ ]
3097
+ },
3098
+ "tone": {
3099
+ "type": "string"
3100
+ },
3101
+ "audience": {
3102
+ "type": "string"
3103
+ },
3104
+ "territory": {
3105
+ "type": "string"
3106
+ },
3107
+ "messaging": {
3108
+ "type": "object",
3109
+ "properties": {
3110
+ "headline": {
3111
+ "type": "string"
3112
+ },
3113
+ "tagline": {
3114
+ "type": "string"
3115
+ },
3116
+ "cta": {
3117
+ "type": "string"
3118
+ },
3119
+ "key_messages": {
3120
+ "type": "array",
3121
+ "items": {
3122
+ "type": "string"
3123
+ }
3124
+ }
3125
+ },
3126
+ "additionalProperties": true
3127
+ },
3128
+ "reference_assets": {
3129
+ "type": "array",
3130
+ "items": {
3131
+ "$ref": "#/$defs/external:core~1reference-asset.json"
3132
+ }
3133
+ },
3134
+ "compliance": {
3135
+ "type": "object",
3136
+ "properties": {
3137
+ "required_disclosures": {
3138
+ "type": "array",
3139
+ "items": {
3140
+ "type": "object",
3141
+ "properties": {
3142
+ "text": {
3143
+ "type": "string"
3144
+ },
3145
+ "position": {
3146
+ "$ref": "#/$defs/external:enums~1disclosure-position.json"
3147
+ },
3148
+ "jurisdictions": {
3149
+ "type": "array",
3150
+ "items": {
3151
+ "type": "string",
3152
+ "pattern": "^[A-Z]{2}(-[A-Z0-9]{1,3})?$"
3153
+ },
3154
+ "minItems": 1
3155
+ },
3156
+ "regulation": {
3157
+ "type": "string"
3158
+ },
3159
+ "min_duration_ms": {
3160
+ "type": "integer",
3161
+ "minimum": 1
3162
+ },
3163
+ "language": {
3164
+ "type": "string"
3165
+ },
3166
+ "persistence": {
3167
+ "$ref": "#/$defs/external:enums~1disclosure-persistence.json"
3168
+ }
3169
+ },
3170
+ "required": [
3171
+ "text"
3172
+ ],
3173
+ "additionalProperties": true
3174
+ },
3175
+ "minItems": 1
3176
+ },
3177
+ "prohibited_claims": {
3178
+ "type": "array",
3179
+ "items": {
3180
+ "type": "string"
3181
+ },
3182
+ "minItems": 1
3183
+ }
3184
+ },
3185
+ "additionalProperties": true
3186
+ }
3187
+ },
3188
+ "required": [
3189
+ "name"
3190
+ ],
3191
+ "additionalProperties": true
3192
+ },
3193
+ "external:core/reference-asset.json": {
3194
+ "type": "object",
3195
+ "properties": {
3196
+ "url": {
3197
+ "type": "string",
3198
+ "format": "uri"
3199
+ },
3200
+ "role": {
3201
+ "type": "string",
3202
+ "enum": [
3203
+ "style_reference",
3204
+ "product_shot",
3205
+ "mood_board",
3206
+ "example_creative",
3207
+ "logo",
3208
+ "strategy_doc",
3209
+ "storyboard"
3210
+ ]
3211
+ },
3212
+ "description": {
3213
+ "type": "string"
3214
+ }
3215
+ },
3216
+ "required": [
3217
+ "url",
3218
+ "role"
3219
+ ],
3220
+ "additionalProperties": true
3221
+ },
3222
+ "external:core/assets/catalog-asset.json": {
3223
+ "type": "object",
3224
+ "properties": {
3225
+ "asset_type": {
3226
+ "type": "string",
3227
+ "const": "catalog"
3228
+ }
3229
+ },
3230
+ "required": [
3231
+ "asset_type"
3232
+ ],
3233
+ "allOf": [
3234
+ {
3235
+ "$ref": "#/$defs/external:core~1catalog.json"
3236
+ }
3237
+ ]
3238
+ },
3239
+ "external:core/catalog.json": {
3240
+ "type": "object",
3241
+ "properties": {
3242
+ "catalog_id": {
3243
+ "type": "string",
3244
+ "x-entity": "catalog"
3245
+ },
3246
+ "name": {
3247
+ "type": "string"
3248
+ },
3249
+ "type": {
3250
+ "$ref": "#/$defs/external:enums~1catalog-type.json"
3251
+ },
3252
+ "url": {
3253
+ "type": "string",
3254
+ "format": "uri"
3255
+ },
3256
+ "feed_format": {
3257
+ "$ref": "#/$defs/external:enums~1feed-format.json"
3258
+ },
3259
+ "update_frequency": {
3260
+ "$ref": "#/$defs/external:enums~1update-frequency.json"
3261
+ },
3262
+ "items": {
3263
+ "type": "array",
3264
+ "items": {
3265
+ "type": "object"
3266
+ },
3267
+ "minItems": 1
3268
+ },
3269
+ "ids": {
3270
+ "type": "array",
3271
+ "items": {
3272
+ "type": "string"
3273
+ },
3274
+ "minItems": 1
3275
+ },
3276
+ "gtins": {
3277
+ "type": "array",
3278
+ "items": {
3279
+ "type": "string",
3280
+ "pattern": "^[0-9]{8,14}$"
3281
+ },
3282
+ "minItems": 1
3283
+ },
3284
+ "tags": {
3285
+ "type": "array",
3286
+ "items": {
3287
+ "type": "string"
3288
+ },
3289
+ "minItems": 1
3290
+ },
3291
+ "category": {
3292
+ "type": "string"
3293
+ },
3294
+ "query": {
3295
+ "type": "string"
3296
+ },
3297
+ "conversion_events": {
3298
+ "type": "array",
3299
+ "items": {
3300
+ "$ref": "#/$defs/external:enums~1event-type.json"
3301
+ },
3302
+ "minItems": 1,
3303
+ "uniqueItems": true
3304
+ },
3305
+ "content_id_type": {
3306
+ "$ref": "#/$defs/external:enums~1content-id-type.json"
3307
+ },
3308
+ "feed_field_mappings": {
3309
+ "type": "array",
3310
+ "items": {
3311
+ "$ref": "#/$defs/external:core~1catalog-field-mapping.json"
3312
+ },
3313
+ "minItems": 1
3314
+ }
3315
+ },
3316
+ "required": [
3317
+ "type"
3318
+ ],
3319
+ "additionalProperties": true
3320
+ },
3321
+ "external:enums/catalog-type.json": {
3322
+ "type": "string",
3323
+ "enum": [
3324
+ "offering",
3325
+ "product",
3326
+ "inventory",
3327
+ "store",
3328
+ "promotion",
3329
+ "hotel",
3330
+ "flight",
3331
+ "job",
3332
+ "vehicle",
3333
+ "real_estate",
3334
+ "education",
3335
+ "destination",
3336
+ "app"
3337
+ ]
3338
+ },
3339
+ "external:enums/feed-format.json": {
3340
+ "type": "string",
3341
+ "enum": [
3342
+ "google_merchant_center",
3343
+ "facebook_catalog",
3344
+ "shopify",
3345
+ "linkedin_jobs",
3346
+ "tiktok_shop",
3347
+ "pinterest_catalog",
3348
+ "openai_product_feed",
3349
+ "custom"
3350
+ ]
3351
+ },
3352
+ "external:enums/update-frequency.json": {
3353
+ "type": "string",
3354
+ "enum": [
3355
+ "realtime",
3356
+ "hourly",
3357
+ "daily",
3358
+ "weekly"
3359
+ ]
3360
+ },
3361
+ "external:enums/event-type.json": {
3362
+ "type": "string",
3363
+ "enum": [
3364
+ "page_view",
3365
+ "view_content",
3366
+ "select_content",
3367
+ "select_item",
3368
+ "search",
3369
+ "share",
3370
+ "add_to_cart",
3371
+ "remove_from_cart",
3372
+ "viewed_cart",
3373
+ "add_to_wishlist",
3374
+ "initiate_checkout",
3375
+ "add_payment_info",
3376
+ "purchase",
3377
+ "refund",
3378
+ "lead",
3379
+ "qualify_lead",
3380
+ "close_convert_lead",
3381
+ "disqualify_lead",
3382
+ "complete_registration",
3383
+ "subscribe",
3384
+ "follow",
3385
+ "content_view",
3386
+ "watch_milestone",
3387
+ "start_trial",
3388
+ "app_install",
3389
+ "app_launch",
3390
+ "contact",
3391
+ "schedule",
3392
+ "donate",
3393
+ "submit_application",
3394
+ "custom"
3395
+ ]
3396
+ },
3397
+ "external:enums/content-id-type.json": {
3398
+ "type": "string",
3399
+ "enum": [
3400
+ "sku",
3401
+ "gtin",
3402
+ "offering_id",
3403
+ "job_id",
3404
+ "hotel_id",
3405
+ "flight_id",
3406
+ "vehicle_id",
3407
+ "listing_id",
3408
+ "store_id",
3409
+ "program_id",
3410
+ "destination_id",
3411
+ "app_id"
3412
+ ]
3413
+ },
3414
+ "external:core/catalog-field-mapping.json": {
3415
+ "type": "object",
3416
+ "properties": {
3417
+ "feed_field": {
3418
+ "type": "string"
3419
+ },
3420
+ "catalog_field": {
3421
+ "type": "string"
3422
+ },
3423
+ "asset_group_id": {
3424
+ "type": "string"
3425
+ },
3426
+ "value": {},
3427
+ "transform": {
3428
+ "type": "string",
3429
+ "enum": [
3430
+ "date",
3431
+ "divide",
3432
+ "boolean",
3433
+ "split"
3434
+ ]
3435
+ },
3436
+ "format": {
3437
+ "type": "string"
3438
+ },
3439
+ "timezone": {
3440
+ "type": "string"
3441
+ },
3442
+ "by": {
3443
+ "type": "number",
3444
+ "exclusiveMinimum": 0
3445
+ },
3446
+ "separator": {
3447
+ "type": "string",
3448
+ "default": ","
3449
+ },
3450
+ "default": {},
3451
+ "ext": {
3452
+ "$ref": "#/$defs/external:core~1ext.json"
3453
+ }
3454
+ },
3455
+ "allOf": [
3456
+ {
3457
+ "not": {
3458
+ "required": [
3459
+ "feed_field",
3460
+ "value"
3461
+ ]
3462
+ }
3463
+ },
3464
+ {
3465
+ "not": {
3466
+ "required": [
3467
+ "catalog_field",
3468
+ "asset_group_id"
3469
+ ]
3470
+ }
3471
+ }
3472
+ ],
3473
+ "additionalProperties": true
3474
+ },
3475
+ "external:core/assets/published-post-asset.json": {
3476
+ "type": "object",
3477
+ "properties": {
3478
+ "asset_type": {
3479
+ "type": "string",
3480
+ "const": "published_post"
3481
+ },
3482
+ "post_url": {
3483
+ "type": "string",
3484
+ "format": "uri"
3485
+ },
3486
+ "platform": {
3487
+ "type": "string"
3488
+ },
3489
+ "platform_post_id": {
3490
+ "type": "string"
3491
+ },
3492
+ "identity_ref": {
3493
+ "type": "object",
3494
+ "properties": {
3495
+ "handle": {
3496
+ "type": "string"
3497
+ },
3498
+ "profile_url": {
3499
+ "type": "string",
3500
+ "format": "uri"
3501
+ },
3502
+ "platform_identity_id": {
3503
+ "type": "string"
3504
+ }
3505
+ },
3506
+ "additionalProperties": true
3507
+ },
3508
+ "published_at": {
3509
+ "type": "string",
3510
+ "format": "date-time"
3511
+ },
3512
+ "reference_authorization": {
3513
+ "type": "object",
3514
+ "readOnly": true,
3515
+ "properties": {
3516
+ "status": {
3517
+ "type": "string",
3518
+ "enum": [
3519
+ "authorized",
3520
+ "pending",
3521
+ "expired",
3522
+ "revoked",
3523
+ "not_required",
3524
+ "unknown"
3525
+ ]
3526
+ },
3527
+ "checked_at": {
3528
+ "type": "string",
3529
+ "format": "date-time"
3530
+ },
3531
+ "expires_at": {
3532
+ "type": "string",
3533
+ "format": "date-time"
3534
+ },
3535
+ "authorization_url": {
3536
+ "type": "string",
3537
+ "format": "uri"
3538
+ },
3539
+ "authorization_instructions": {
3540
+ "type": "string"
3541
+ }
3542
+ },
3543
+ "required": [
3544
+ "status"
3545
+ ],
3546
+ "additionalProperties": true
3547
+ },
3548
+ "provenance": {
3549
+ "$ref": "#/$defs/external:core~1provenance.json"
3550
+ }
3551
+ },
3552
+ "required": [
3553
+ "asset_type"
3554
+ ],
3555
+ "anyOf": [
3556
+ {
3557
+ "required": [
3558
+ "post_url"
3559
+ ]
3560
+ },
3561
+ {
3562
+ "required": [
3563
+ "platform_post_id"
3564
+ ]
3565
+ }
3566
+ ],
3567
+ "additionalProperties": true
3568
+ },
3569
+ "external:core/assets/card-asset.json": {
3570
+ "type": "object",
3571
+ "required": [
3572
+ "asset_type",
3573
+ "media"
3574
+ ],
3575
+ "properties": {
3576
+ "asset_type": {
3577
+ "type": "string",
3578
+ "const": "card"
3579
+ },
3580
+ "media": {
3581
+ "oneOf": [
3582
+ {
3583
+ "$ref": "#/$defs/external:core~1assets~1image-asset.json"
3584
+ },
3585
+ {
3586
+ "$ref": "#/$defs/external:core~1assets~1video-asset.json"
3587
+ }
3588
+ ],
3589
+ "discriminator": {
3590
+ "propertyName": "asset_type"
3591
+ }
3592
+ },
3593
+ "headline": {
3594
+ "type": "string"
3595
+ },
3596
+ "description": {
3597
+ "type": "string"
3598
+ },
3599
+ "cta": {
3600
+ "type": "string"
3601
+ },
3602
+ "landing_page_url": {
3603
+ "$ref": "#/$defs/external:core~1assets~1url-asset.json"
3604
+ },
3605
+ "platform_extensions": {
3606
+ "type": "array",
3607
+ "items": {
3608
+ "$ref": "#/$defs/external:core~1platform-extension-ref.json"
3609
+ }
3610
+ },
3611
+ "provenance": {
3612
+ "$ref": "#/$defs/external:core~1provenance.json"
3613
+ }
3614
+ },
3615
+ "additionalProperties": true
3616
+ },
3617
+ "external:core/platform-extension-ref.json": {
3618
+ "type": "object",
3619
+ "required": [
3620
+ "uri",
3621
+ "digest"
3622
+ ],
3623
+ "properties": {
3624
+ "uri": {
3625
+ "type": "string",
3626
+ "format": "uri",
3627
+ "pattern": "^https://"
3628
+ },
3629
+ "digest": {
3630
+ "type": "string",
3631
+ "pattern": "^sha256:[a-f0-9]{64}$"
3632
+ }
3633
+ },
3634
+ "additionalProperties": true
3635
+ },
3636
+ "external:core/assets/pixel-tracker-asset.json": {
3637
+ "type": "object",
3638
+ "properties": {
3639
+ "asset_type": {
3640
+ "type": "string",
3641
+ "const": "pixel_tracker"
3642
+ },
3643
+ "event": {
3644
+ "type": "string",
3645
+ "enum": [
3646
+ "impression",
3647
+ "viewable_mrc_50",
3648
+ "viewable_mrc_100",
3649
+ "viewable_video_50",
3650
+ "audible_video_complete",
3651
+ "click",
3652
+ "custom"
3653
+ ]
3654
+ },
3655
+ "method": {
3656
+ "type": "string",
3657
+ "enum": [
3658
+ "img",
3659
+ "js"
3660
+ ],
3661
+ "default": "img"
3662
+ },
3663
+ "url": {
3664
+ "type": "string",
3665
+ "format": "uri-template"
3666
+ },
3667
+ "custom_event_name": {
3668
+ "type": "string"
3669
+ },
3670
+ "provenance": {
3671
+ "$ref": "#/$defs/external:core~1provenance.json"
3672
+ }
3673
+ },
3674
+ "required": [
3675
+ "asset_type",
3676
+ "event",
3677
+ "url"
3678
+ ],
3679
+ "allOf": [
3680
+ {
3681
+ "if": {
3682
+ "properties": {
3683
+ "event": {
3684
+ "const": "custom"
3685
+ }
3686
+ },
3687
+ "required": [
3688
+ "event"
3689
+ ]
3690
+ },
3691
+ "then": {
3692
+ "required": [
3693
+ "custom_event_name"
3694
+ ]
3695
+ },
3696
+ "else": {
3697
+ "not": {
3698
+ "required": [
3699
+ "custom_event_name"
3700
+ ]
3701
+ }
3702
+ }
3703
+ }
3704
+ ],
3705
+ "additionalProperties": true
3706
+ },
3707
+ "external:core/assets/vast-tracker-asset.json": {
3708
+ "type": "object",
3709
+ "properties": {
3710
+ "asset_type": {
3711
+ "type": "string",
3712
+ "const": "vast_tracker"
3713
+ },
3714
+ "vast_event": {
3715
+ "allOf": [
3716
+ {
3717
+ "$ref": "#/$defs/external:enums~1vast-tracking-event.json"
3718
+ },
3719
+ {
3720
+ "not": {
3721
+ "enum": [
3722
+ "impression",
3723
+ "clickTracking",
3724
+ "customClick",
3725
+ "error",
3726
+ "viewable",
3727
+ "notViewable",
3728
+ "viewUndetermined",
3729
+ "measurableImpression",
3730
+ "viewableImpression"
3731
+ ]
3732
+ }
3733
+ }
3734
+ ]
3735
+ },
3736
+ "url": {
3737
+ "type": "string",
3738
+ "format": "uri-template"
3739
+ },
3740
+ "offset": {
3741
+ "type": "string",
3742
+ "pattern": "^(\\d{2}:[0-5]\\d:[0-5]\\d(\\.\\d{3})?|(100|\\d{1,2})%)$"
3743
+ },
3744
+ "target": {
3745
+ "type": "string",
3746
+ "enum": [
3747
+ "linear",
3748
+ "non_linear",
3749
+ "companion"
3750
+ ],
3751
+ "default": "linear"
3752
+ },
3753
+ "provenance": {
3754
+ "$ref": "#/$defs/external:core~1provenance.json"
3755
+ }
3756
+ },
3757
+ "required": [
3758
+ "asset_type",
3759
+ "vast_event",
3760
+ "url"
3761
+ ],
3762
+ "allOf": [
3763
+ {
3764
+ "if": {
3765
+ "properties": {
3766
+ "vast_event": {
3767
+ "const": "progress"
3768
+ }
3769
+ },
3770
+ "required": [
3771
+ "vast_event"
3772
+ ]
3773
+ },
3774
+ "then": {
3775
+ "required": [
3776
+ "offset"
3777
+ ]
3778
+ }
3779
+ }
3780
+ ],
3781
+ "additionalProperties": true
3782
+ },
3783
+ "external:core/assets/daast-tracker-asset.json": {
3784
+ "type": "object",
3785
+ "properties": {
3786
+ "asset_type": {
3787
+ "type": "string",
3788
+ "const": "daast_tracker"
3789
+ },
3790
+ "daast_event": {
3791
+ "allOf": [
3792
+ {
3793
+ "$ref": "#/$defs/external:enums~1daast-tracking-event.json"
3794
+ },
3795
+ {
3796
+ "not": {
3797
+ "enum": [
3798
+ "impression",
3799
+ "clickTracking",
3800
+ "customClick",
3801
+ "error",
3802
+ "viewable",
3803
+ "notViewable",
3804
+ "viewUndetermined",
3805
+ "measurableImpression",
3806
+ "viewableImpression"
3807
+ ]
3808
+ }
3809
+ }
3810
+ ]
3811
+ },
3812
+ "url": {
3813
+ "type": "string",
3814
+ "format": "uri-template"
3815
+ },
3816
+ "offset": {
3817
+ "type": "string",
3818
+ "pattern": "^(\\d{2}:[0-5]\\d:[0-5]\\d(\\.\\d{3})?|(100|\\d{1,2})%)$"
3819
+ },
3820
+ "target": {
3821
+ "type": "string",
3822
+ "enum": [
3823
+ "linear",
3824
+ "companion"
3825
+ ],
3826
+ "default": "linear"
3827
+ },
3828
+ "provenance": {
3829
+ "$ref": "#/$defs/external:core~1provenance.json"
3830
+ }
3831
+ },
3832
+ "required": [
3833
+ "asset_type",
3834
+ "daast_event",
3835
+ "url"
3836
+ ],
3837
+ "allOf": [
3838
+ {
3839
+ "if": {
3840
+ "properties": {
3841
+ "daast_event": {
3842
+ "const": "progress"
3843
+ }
3844
+ },
3845
+ "required": [
3846
+ "daast_event"
3847
+ ]
3848
+ },
3849
+ "then": {
3850
+ "required": [
3851
+ "offset"
3852
+ ]
3853
+ }
3854
+ }
3855
+ ],
3856
+ "additionalProperties": true
3857
+ }
3858
+ }
3859
+ }