@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,3878 @@
1
+ {
2
+ "type": "object",
3
+ "properties": {
4
+ "adcp_version": {
5
+ "$ref": "#/$defs/external:core~1version-envelope.json/properties/adcp_version"
6
+ },
7
+ "adcp_major_version": {
8
+ "$ref": "#/$defs/external:core~1version-envelope.json/properties/adcp_major_version"
9
+ },
10
+ "context_id": {
11
+ "type": "string"
12
+ },
13
+ "context": {
14
+ "allOf": [
15
+ {
16
+ "$ref": "#/$defs/external:core~1context.json"
17
+ }
18
+ ]
19
+ },
20
+ "governance_context": {
21
+ "type": "string"
22
+ },
23
+ "push_notification_config": {
24
+ "allOf": [
25
+ {
26
+ "$ref": "#/$defs/external:core~1push-notification-config.json"
27
+ }
28
+ ]
29
+ },
30
+ "idempotency_key": {
31
+ "type": "string"
32
+ },
33
+ "refinements": {
34
+ "type": "array",
35
+ "items": {
36
+ "$ref": "#/$defs/external:media-buy~1proposal-refinement.json"
37
+ },
38
+ "allOf": [
39
+ {
40
+ "if": {
41
+ "contains": {
42
+ "properties": {
43
+ "action": {
44
+ "type": "string",
45
+ "const": "finalize"
46
+ }
47
+ },
48
+ "required": [
49
+ "action"
50
+ ]
51
+ }
52
+ },
53
+ "then": {
54
+ "items": {
55
+ "properties": {
56
+ "action": {
57
+ "type": "string",
58
+ "const": "finalize"
59
+ }
60
+ },
61
+ "required": [
62
+ "action"
63
+ ]
64
+ }
65
+ }
66
+ }
67
+ ]
68
+ }
69
+ },
70
+ "required": [
71
+ "idempotency_key",
72
+ "refinements"
73
+ ],
74
+ "$defs": {
75
+ "external:core/version-envelope.json": {
76
+ "type": "object",
77
+ "properties": {
78
+ "adcp_version": {
79
+ "type": "string"
80
+ },
81
+ "adcp_major_version": {
82
+ "type": "integer"
83
+ }
84
+ }
85
+ },
86
+ "external:core/context.json": {
87
+ "type": "object",
88
+ "additionalProperties": true
89
+ },
90
+ "external:core/push-notification-config.json": {
91
+ "type": "object",
92
+ "properties": {
93
+ "url": {
94
+ "type": "string"
95
+ },
96
+ "operation_id": {
97
+ "type": "string"
98
+ },
99
+ "token": {
100
+ "type": "string"
101
+ },
102
+ "authentication": {
103
+ "type": "object",
104
+ "properties": {
105
+ "schemes": {
106
+ "type": "array",
107
+ "items": {
108
+ "$ref": "#/$defs/external:enums~1auth-scheme.json"
109
+ }
110
+ },
111
+ "credentials": {
112
+ "type": "string"
113
+ }
114
+ },
115
+ "required": [
116
+ "schemes",
117
+ "credentials"
118
+ ]
119
+ }
120
+ },
121
+ "required": [
122
+ "url"
123
+ ]
124
+ },
125
+ "external:enums/auth-scheme.json": {
126
+ "type": "string",
127
+ "enum": [
128
+ "Bearer",
129
+ "HMAC-SHA256"
130
+ ]
131
+ },
132
+ "external:media-buy/proposal-refinement.json": {
133
+ "type": "object",
134
+ "properties": {
135
+ "proposal_id": {
136
+ "type": "string"
137
+ },
138
+ "action": {
139
+ "type": "string",
140
+ "enum": [
141
+ "revise",
142
+ "finalize"
143
+ ]
144
+ },
145
+ "change_kind": {
146
+ "type": "string",
147
+ "enum": [
148
+ "amendment",
149
+ "cancellation"
150
+ ]
151
+ },
152
+ "constraints": {
153
+ "type": "object",
154
+ "properties": {
155
+ "total_budget": {
156
+ "$ref": "#/$defs/external:media-buy~1proposal-budget-constraint.json"
157
+ },
158
+ "cpm": {
159
+ "type": "object",
160
+ "properties": {
161
+ "max": {
162
+ "type": "number"
163
+ },
164
+ "currency": {
165
+ "type": "string"
166
+ }
167
+ },
168
+ "required": [
169
+ "max",
170
+ "currency"
171
+ ]
172
+ },
173
+ "impressions": {
174
+ "type": "object",
175
+ "properties": {
176
+ "min": {
177
+ "type": "number"
178
+ }
179
+ },
180
+ "required": [
181
+ "min"
182
+ ]
183
+ },
184
+ "flight": {
185
+ "type": "object",
186
+ "properties": {
187
+ "start_no_later_than": {
188
+ "type": "string"
189
+ },
190
+ "end_no_earlier_than": {
191
+ "type": "string"
192
+ }
193
+ },
194
+ "anyOf": [
195
+ {
196
+ "required": [
197
+ "start_no_later_than"
198
+ ]
199
+ },
200
+ {
201
+ "required": [
202
+ "end_no_earlier_than"
203
+ ]
204
+ }
205
+ ]
206
+ }
207
+ }
208
+ },
209
+ "product_changes": {
210
+ "$ref": "#/$defs/external:core~1product-change-map.json"
211
+ },
212
+ "alternatives": {
213
+ "type": "object",
214
+ "properties": {
215
+ "count": {
216
+ "type": "integer"
217
+ }
218
+ },
219
+ "required": [
220
+ "count"
221
+ ]
222
+ },
223
+ "ask": {
224
+ "type": "string"
225
+ },
226
+ "criteria": {
227
+ "$ref": "#/$defs/external:media-buy~1product-discovery-criteria.json"
228
+ }
229
+ },
230
+ "required": [
231
+ "proposal_id"
232
+ ],
233
+ "oneOf": [
234
+ {
235
+ "properties": {
236
+ "action": {
237
+ "type": "string",
238
+ "const": "finalize"
239
+ }
240
+ },
241
+ "required": [
242
+ "action"
243
+ ],
244
+ "not": {
245
+ "anyOf": [
246
+ {
247
+ "required": [
248
+ "change_kind"
249
+ ]
250
+ },
251
+ {
252
+ "required": [
253
+ "constraints"
254
+ ]
255
+ },
256
+ {
257
+ "required": [
258
+ "product_changes"
259
+ ]
260
+ },
261
+ {
262
+ "required": [
263
+ "alternatives"
264
+ ]
265
+ },
266
+ {
267
+ "required": [
268
+ "ask"
269
+ ]
270
+ },
271
+ {
272
+ "required": [
273
+ "criteria"
274
+ ]
275
+ }
276
+ ]
277
+ }
278
+ },
279
+ {
280
+ "properties": {
281
+ "action": {
282
+ "type": "string",
283
+ "const": "revise"
284
+ }
285
+ },
286
+ "required": [
287
+ "action"
288
+ ],
289
+ "anyOf": [
290
+ {
291
+ "required": [
292
+ "constraints"
293
+ ]
294
+ },
295
+ {
296
+ "required": [
297
+ "product_changes"
298
+ ]
299
+ },
300
+ {
301
+ "required": [
302
+ "alternatives"
303
+ ]
304
+ },
305
+ {
306
+ "required": [
307
+ "ask"
308
+ ]
309
+ },
310
+ {
311
+ "required": [
312
+ "criteria"
313
+ ]
314
+ },
315
+ {
316
+ "properties": {
317
+ "change_kind": {
318
+ "type": "string",
319
+ "const": "cancellation"
320
+ }
321
+ },
322
+ "required": [
323
+ "change_kind"
324
+ ]
325
+ }
326
+ ]
327
+ }
328
+ ]
329
+ },
330
+ "external:media-buy/proposal-budget-constraint.json": {
331
+ "type": "object",
332
+ "properties": {
333
+ "min": {
334
+ "type": "number"
335
+ },
336
+ "max": {
337
+ "type": "number"
338
+ },
339
+ "currency": {
340
+ "type": "string"
341
+ }
342
+ },
343
+ "required": [
344
+ "currency"
345
+ ],
346
+ "anyOf": [
347
+ {
348
+ "required": [
349
+ "min"
350
+ ]
351
+ },
352
+ {
353
+ "required": [
354
+ "max"
355
+ ]
356
+ }
357
+ ]
358
+ },
359
+ "external:core/product-change-map.json": {
360
+ "type": "object",
361
+ "propertyNames": {},
362
+ "additionalProperties": {
363
+ "enum": [
364
+ "include",
365
+ "omit"
366
+ ]
367
+ }
368
+ },
369
+ "external:media-buy/product-discovery-criteria.json": {
370
+ "type": "object",
371
+ "properties": {
372
+ "product_ids": {
373
+ "type": "array",
374
+ "items": {
375
+ "type": "string"
376
+ }
377
+ },
378
+ "offer_filters": {
379
+ "$ref": "#/$defs/external:core~1product-offer-filters.json"
380
+ },
381
+ "targeting_overlay": {
382
+ "$ref": "#/$defs/external:core~1targeting.json"
383
+ },
384
+ "required_overlay_support": {
385
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json"
386
+ },
387
+ "catalog": {
388
+ "$ref": "#/$defs/external:core~1catalog-selection.json"
389
+ },
390
+ "policy_ids": {
391
+ "type": "array",
392
+ "items": {
393
+ "type": "string"
394
+ }
395
+ },
396
+ "ext": {
397
+ "type": "object",
398
+ "additionalProperties": true
399
+ }
400
+ }
401
+ },
402
+ "external:core/product-offer-filters.json": {
403
+ "type": "object",
404
+ "properties": {
405
+ "delivery_type": {
406
+ "$ref": "#/$defs/external:enums~1delivery-type.json"
407
+ },
408
+ "exclusivity": {
409
+ "$ref": "#/$defs/external:enums~1exclusivity.json"
410
+ },
411
+ "is_fixed_price": {
412
+ "type": "boolean"
413
+ },
414
+ "pricing_structures": {
415
+ "type": "array",
416
+ "items": {
417
+ "$ref": "#/$defs/external:enums~1pricing-structure.json"
418
+ }
419
+ },
420
+ "pricing_currencies": {
421
+ "type": "array",
422
+ "items": {
423
+ "type": "string"
424
+ }
425
+ },
426
+ "format_kinds": {
427
+ "type": "array",
428
+ "items": {
429
+ "$ref": "#/$defs/external:core~1canonical-format-kind.json"
430
+ }
431
+ },
432
+ "format_option_refs": {
433
+ "type": "array",
434
+ "items": {
435
+ "$ref": "#/$defs/external:core~1format-option-ref.json"
436
+ }
437
+ },
438
+ "standard_formats_only": {
439
+ "type": "boolean"
440
+ },
441
+ "min_exposures": {
442
+ "type": "integer"
443
+ },
444
+ "start_date": {
445
+ "type": "string"
446
+ },
447
+ "end_date": {
448
+ "type": "string"
449
+ },
450
+ "budget_range": {
451
+ "$ref": "#/$defs/external:core~1budget-range.json"
452
+ },
453
+ "countries": {
454
+ "type": "array",
455
+ "items": {
456
+ "type": "string"
457
+ }
458
+ },
459
+ "property_list": {
460
+ "$ref": "#/$defs/external:core~1property-list-ref.json"
461
+ },
462
+ "channels": {
463
+ "type": "array",
464
+ "items": {
465
+ "$ref": "#/$defs/external:enums~1channels.json"
466
+ }
467
+ },
468
+ "video_placement_types": {
469
+ "type": "array",
470
+ "items": {
471
+ "$ref": "#/$defs/external:enums~1video-placement-type.json"
472
+ }
473
+ },
474
+ "audio_distribution_types": {
475
+ "type": "array",
476
+ "items": {
477
+ "$ref": "#/$defs/external:enums~1audio-distribution-type.json"
478
+ }
479
+ },
480
+ "sponsored_placement_types": {
481
+ "type": "array",
482
+ "items": {
483
+ "$ref": "#/$defs/external:enums~1sponsored-placement-type.json"
484
+ }
485
+ },
486
+ "social_placement_surfaces": {
487
+ "type": "array",
488
+ "items": {
489
+ "$ref": "#/$defs/external:enums~1social-placement-surface.json"
490
+ }
491
+ },
492
+ "trusted_match": {
493
+ "type": "object",
494
+ "properties": {
495
+ "providers": {
496
+ "type": "array",
497
+ "items": {
498
+ "type": "object",
499
+ "properties": {
500
+ "agent_url": {
501
+ "type": "string"
502
+ },
503
+ "context_match": {
504
+ "type": "boolean"
505
+ },
506
+ "identity_match": {
507
+ "type": "boolean"
508
+ }
509
+ },
510
+ "required": [
511
+ "agent_url"
512
+ ],
513
+ "additionalProperties": true
514
+ }
515
+ },
516
+ "response_types": {
517
+ "type": "array",
518
+ "items": {
519
+ "$ref": "#/$defs/external:enums~1response-type.json"
520
+ }
521
+ }
522
+ }
523
+ },
524
+ "required_features": {
525
+ "allOf": [
526
+ {
527
+ "$ref": "#/$defs/external:core~1canonical-media-buy-features.json"
528
+ }
529
+ ]
530
+ },
531
+ "required_performance_standards": {
532
+ "type": "array",
533
+ "items": {
534
+ "type": "object",
535
+ "properties": {
536
+ "metric": {
537
+ "$ref": "#/$defs/external:enums~1performance-standard-metric.json"
538
+ },
539
+ "threshold": {
540
+ "type": "number"
541
+ },
542
+ "standard": {
543
+ "$ref": "#/$defs/external:enums~1viewability-standard.json"
544
+ },
545
+ "vendor": {
546
+ "$ref": "#/$defs/external:core~1brand-key.json"
547
+ }
548
+ },
549
+ "required": [
550
+ "metric",
551
+ "threshold",
552
+ "vendor"
553
+ ],
554
+ "additionalProperties": true
555
+ }
556
+ },
557
+ "required_metrics": {
558
+ "type": "array",
559
+ "items": {
560
+ "$ref": "#/$defs/external:enums~1available-metric.json"
561
+ }
562
+ },
563
+ "required_vendor_metrics": {
564
+ "type": "array",
565
+ "items": {
566
+ "type": "object",
567
+ "properties": {
568
+ "vendor": {
569
+ "$ref": "#/$defs/external:core~1brand-key.json"
570
+ },
571
+ "metric_id": {
572
+ "$ref": "#/$defs/external:core~1vendor-metric-id.json"
573
+ }
574
+ },
575
+ "anyOf": [
576
+ {
577
+ "required": [
578
+ "vendor"
579
+ ]
580
+ },
581
+ {
582
+ "required": [
583
+ "metric_id"
584
+ ]
585
+ }
586
+ ]
587
+ }
588
+ },
589
+ "audience_evidence_requirements": {
590
+ "$ref": "#/$defs/external:core~1product-audience-evidence-requirements.json"
591
+ },
592
+ "ext": {
593
+ "$ref": "#/$defs/external:core~1ext.json"
594
+ }
595
+ }
596
+ },
597
+ "external:enums/delivery-type.json": {
598
+ "type": "string",
599
+ "enum": [
600
+ "guaranteed",
601
+ "non_guaranteed"
602
+ ]
603
+ },
604
+ "external:enums/exclusivity.json": {
605
+ "type": "string",
606
+ "enum": [
607
+ "none",
608
+ "category",
609
+ "exclusive"
610
+ ]
611
+ },
612
+ "external:enums/pricing-structure.json": {
613
+ "type": "string",
614
+ "enum": [
615
+ "fixed",
616
+ "auction",
617
+ "contingent"
618
+ ]
619
+ },
620
+ "external:core/canonical-format-kind.json": {
621
+ "type": "string",
622
+ "enum": [
623
+ "image",
624
+ "html5",
625
+ "display_tag",
626
+ "image_carousel",
627
+ "video_hosted",
628
+ "video_vast",
629
+ "audio_hosted",
630
+ "audio_daast",
631
+ "sponsored_placement",
632
+ "native_in_feed",
633
+ "responsive_creative",
634
+ "agent_placement",
635
+ "custom"
636
+ ]
637
+ },
638
+ "external:core/format-option-ref.json": {
639
+ "type": "object",
640
+ "discriminator": {
641
+ "propertyName": "scope"
642
+ },
643
+ "oneOf": [
644
+ {
645
+ "type": "object",
646
+ "properties": {
647
+ "scope": {
648
+ "type": "string",
649
+ "const": "publisher"
650
+ },
651
+ "publisher_domain": {
652
+ "type": "string"
653
+ },
654
+ "format_option_id": {
655
+ "type": "string"
656
+ }
657
+ },
658
+ "required": [
659
+ "scope",
660
+ "publisher_domain",
661
+ "format_option_id"
662
+ ],
663
+ "additionalProperties": true
664
+ },
665
+ {
666
+ "type": "object",
667
+ "properties": {
668
+ "scope": {
669
+ "type": "string",
670
+ "const": "product"
671
+ },
672
+ "format_option_id": {
673
+ "type": "string"
674
+ },
675
+ "publisher_domain": false
676
+ },
677
+ "required": [
678
+ "scope",
679
+ "format_option_id"
680
+ ],
681
+ "additionalProperties": true
682
+ }
683
+ ],
684
+ "additionalProperties": true
685
+ },
686
+ "external:core/budget-range.json": {
687
+ "type": "object",
688
+ "properties": {
689
+ "min": {
690
+ "type": "number"
691
+ },
692
+ "max": {
693
+ "type": "number"
694
+ },
695
+ "currency": {
696
+ "type": "string"
697
+ }
698
+ },
699
+ "required": [
700
+ "currency"
701
+ ],
702
+ "anyOf": [
703
+ {
704
+ "required": [
705
+ "min"
706
+ ]
707
+ },
708
+ {
709
+ "required": [
710
+ "max"
711
+ ]
712
+ }
713
+ ],
714
+ "additionalProperties": true
715
+ },
716
+ "external:core/property-list-ref.json": {
717
+ "type": "object",
718
+ "properties": {
719
+ "agent_url": {
720
+ "type": "string"
721
+ },
722
+ "list_id": {
723
+ "type": "string"
724
+ },
725
+ "auth_token": {
726
+ "type": "string"
727
+ }
728
+ },
729
+ "required": [
730
+ "agent_url",
731
+ "list_id"
732
+ ]
733
+ },
734
+ "external:enums/channels.json": {
735
+ "type": "string",
736
+ "enum": [
737
+ "display",
738
+ "olv",
739
+ "social",
740
+ "search",
741
+ "ctv",
742
+ "linear_tv",
743
+ "radio",
744
+ "streaming_audio",
745
+ "podcast",
746
+ "dooh",
747
+ "ooh",
748
+ "print",
749
+ "cinema",
750
+ "email",
751
+ "gaming",
752
+ "retail_media",
753
+ "influencer",
754
+ "affiliate",
755
+ "product_placement",
756
+ "sponsored_intelligence"
757
+ ]
758
+ },
759
+ "external:enums/video-placement-type.json": {
760
+ "type": "string",
761
+ "enum": [
762
+ "instream",
763
+ "accompanying_content",
764
+ "interstitial",
765
+ "standalone"
766
+ ]
767
+ },
768
+ "external:enums/audio-distribution-type.json": {
769
+ "type": "string",
770
+ "enum": [
771
+ "music_streaming_service",
772
+ "fm_am_broadcast",
773
+ "podcast",
774
+ "catch_up_radio",
775
+ "web_radio",
776
+ "video_game",
777
+ "text_to_speech"
778
+ ]
779
+ },
780
+ "external:enums/sponsored-placement-type.json": {
781
+ "type": "string",
782
+ "enum": [
783
+ "sponsored_search",
784
+ "sponsored_display",
785
+ "sponsored_native"
786
+ ]
787
+ },
788
+ "external:enums/social-placement-surface.json": {
789
+ "type": "string",
790
+ "enum": [
791
+ "feed",
792
+ "stories",
793
+ "short_video",
794
+ "explore",
795
+ "search"
796
+ ]
797
+ },
798
+ "external:enums/response-type.json": {
799
+ "type": "string",
800
+ "enum": [
801
+ "activation",
802
+ "catalog_items",
803
+ "creative",
804
+ "deal"
805
+ ]
806
+ },
807
+ "external:core/canonical-media-buy-features.json": {
808
+ "type": "object",
809
+ "properties": {
810
+ "property_filtering": {
811
+ "type": "boolean"
812
+ },
813
+ "catalog_management": {
814
+ "type": "boolean"
815
+ },
816
+ "reporting_commitment_snapshots": {
817
+ "type": "boolean"
818
+ },
819
+ "seller_optimized_budget": {
820
+ "type": "boolean"
821
+ },
822
+ "bidding_policy": {
823
+ "$ref": "#/$defs/external:core~1bidding-policy-capability.json"
824
+ }
825
+ },
826
+ "additionalProperties": {
827
+ "type": "boolean"
828
+ }
829
+ },
830
+ "external:core/bidding-policy-capability.json": {
831
+ "type": "object",
832
+ "properties": {
833
+ "media_buy": {
834
+ "$ref": "#/$defs/external:core~1bidding-policy-capability.json/$defs/scope_capability"
835
+ },
836
+ "package": {
837
+ "$ref": "#/$defs/external:core~1bidding-policy-capability.json/$defs/scope_capability"
838
+ }
839
+ },
840
+ "$defs": {
841
+ "scope_capability": {
842
+ "type": "object",
843
+ "properties": {
844
+ "fixed": {
845
+ "$ref": "#/$defs/external:core~1bidding-policy-capability.json/$defs/policy_profile"
846
+ },
847
+ "seller_optimized": {
848
+ "$ref": "#/$defs/external:core~1bidding-policy-capability.json/$defs/policy_profile"
849
+ }
850
+ }
851
+ },
852
+ "policy_profile": {
853
+ "type": "object",
854
+ "properties": {
855
+ "modes": {
856
+ "type": "array",
857
+ "items": {
858
+ "type": "string",
859
+ "enum": [
860
+ "automatic",
861
+ "bid_amount",
862
+ "max_bid",
863
+ "cost_per",
864
+ "roas"
865
+ ]
866
+ }
867
+ },
868
+ "cost_per_strengths": {
869
+ "type": "array",
870
+ "items": {
871
+ "type": "string",
872
+ "enum": [
873
+ "cap",
874
+ "target"
875
+ ]
876
+ }
877
+ },
878
+ "roas_strengths": {
879
+ "type": "array",
880
+ "items": {
881
+ "type": "string",
882
+ "enum": [
883
+ "floor",
884
+ "target"
885
+ ]
886
+ }
887
+ },
888
+ "supported_combinations": {
889
+ "type": "array",
890
+ "items": {
891
+ "oneOf": [
892
+ {
893
+ "$ref": "#/$defs/external:core~1bidding-policy-capability.json/$defs/max_bid_with_cost_per"
894
+ },
895
+ {
896
+ "$ref": "#/$defs/external:core~1bidding-policy-capability.json/$defs/max_bid_with_roas"
897
+ }
898
+ ]
899
+ }
900
+ }
901
+ },
902
+ "anyOf": [
903
+ {
904
+ "required": [
905
+ "modes"
906
+ ]
907
+ },
908
+ {
909
+ "required": [
910
+ "supported_combinations"
911
+ ]
912
+ }
913
+ ],
914
+ "allOf": [
915
+ {
916
+ "if": {
917
+ "properties": {
918
+ "modes": {
919
+ "contains": {
920
+ "const": "cost_per"
921
+ }
922
+ }
923
+ },
924
+ "required": [
925
+ "modes"
926
+ ]
927
+ },
928
+ "then": {
929
+ "required": [
930
+ "cost_per_strengths"
931
+ ]
932
+ },
933
+ "else": {
934
+ "not": {
935
+ "required": [
936
+ "cost_per_strengths"
937
+ ]
938
+ }
939
+ }
940
+ },
941
+ {
942
+ "if": {
943
+ "properties": {
944
+ "modes": {
945
+ "contains": {
946
+ "const": "roas"
947
+ }
948
+ }
949
+ },
950
+ "required": [
951
+ "modes"
952
+ ]
953
+ },
954
+ "then": {
955
+ "required": [
956
+ "roas_strengths"
957
+ ]
958
+ },
959
+ "else": {
960
+ "not": {
961
+ "required": [
962
+ "roas_strengths"
963
+ ]
964
+ }
965
+ }
966
+ }
967
+ ]
968
+ },
969
+ "max_bid_with_cost_per": {
970
+ "type": "object",
971
+ "properties": {
972
+ "kind": {
973
+ "type": "string",
974
+ "const": "max_bid_with_cost_per"
975
+ },
976
+ "cost_per_strengths": {
977
+ "type": "array",
978
+ "items": {
979
+ "type": "string",
980
+ "enum": [
981
+ "cap",
982
+ "target"
983
+ ]
984
+ }
985
+ }
986
+ },
987
+ "required": [
988
+ "kind",
989
+ "cost_per_strengths"
990
+ ]
991
+ },
992
+ "max_bid_with_roas": {
993
+ "type": "object",
994
+ "properties": {
995
+ "kind": {
996
+ "type": "string",
997
+ "const": "max_bid_with_roas"
998
+ },
999
+ "roas_strengths": {
1000
+ "type": "array",
1001
+ "items": {
1002
+ "type": "string",
1003
+ "enum": [
1004
+ "floor",
1005
+ "target"
1006
+ ]
1007
+ }
1008
+ }
1009
+ },
1010
+ "required": [
1011
+ "kind",
1012
+ "roas_strengths"
1013
+ ]
1014
+ }
1015
+ }
1016
+ },
1017
+ "external:enums/performance-standard-metric.json": {
1018
+ "type": "string",
1019
+ "enum": [
1020
+ "viewability",
1021
+ "ivt",
1022
+ "completion_rate",
1023
+ "brand_safety",
1024
+ "attention_score"
1025
+ ]
1026
+ },
1027
+ "external:enums/viewability-standard.json": {
1028
+ "type": "string",
1029
+ "enum": [
1030
+ "mrc",
1031
+ "groupm"
1032
+ ]
1033
+ },
1034
+ "external:core/brand-key.json": {
1035
+ "type": "object",
1036
+ "properties": {
1037
+ "domain": {
1038
+ "type": "string"
1039
+ },
1040
+ "brand_id": {
1041
+ "$ref": "#/$defs/external:core~1brand-id.json"
1042
+ },
1043
+ "countries": {
1044
+ "type": "array",
1045
+ "items": {
1046
+ "type": "string"
1047
+ }
1048
+ }
1049
+ },
1050
+ "required": [
1051
+ "domain"
1052
+ ]
1053
+ },
1054
+ "external:core/brand-id.json": {
1055
+ "type": "string"
1056
+ },
1057
+ "external:enums/available-metric.json": {
1058
+ "type": "string",
1059
+ "enum": [
1060
+ "impressions",
1061
+ "spend",
1062
+ "clicks",
1063
+ "ctr",
1064
+ "views",
1065
+ "completed_views",
1066
+ "completion_rate",
1067
+ "conversions",
1068
+ "conversion_value",
1069
+ "commissionable_value",
1070
+ "roas",
1071
+ "cost_per_acquisition",
1072
+ "new_to_brand_rate",
1073
+ "leads",
1074
+ "reach",
1075
+ "frequency",
1076
+ "grps",
1077
+ "engagements",
1078
+ "engagement_rate",
1079
+ "follows",
1080
+ "saves",
1081
+ "profile_visits",
1082
+ "viewability",
1083
+ "quartile_data",
1084
+ "dooh_metrics",
1085
+ "cost_per_click",
1086
+ "cost_per_completed_view",
1087
+ "cpm",
1088
+ "downloads",
1089
+ "units_sold",
1090
+ "new_to_brand_units",
1091
+ "plays",
1092
+ "incremental_sales_lift",
1093
+ "brand_lift",
1094
+ "foot_traffic",
1095
+ "conversion_lift",
1096
+ "brand_search_lift"
1097
+ ]
1098
+ },
1099
+ "external:core/vendor-metric-id.json": {
1100
+ "type": "string"
1101
+ },
1102
+ "external:core/product-audience-evidence-requirements.json": {
1103
+ "type": "object",
1104
+ "properties": {
1105
+ "requirement_mode": {
1106
+ "type": "string",
1107
+ "enum": [
1108
+ "required",
1109
+ "preferred"
1110
+ ]
1111
+ },
1112
+ "evidence_presence": {
1113
+ "type": "string",
1114
+ "enum": [
1115
+ "required",
1116
+ "when_available"
1117
+ ]
1118
+ },
1119
+ "accepted_methodologies": {
1120
+ "type": "array",
1121
+ "items": {
1122
+ "$ref": "#/$defs/external:enums~1audience-evidence-methodology.json"
1123
+ }
1124
+ },
1125
+ "excluded_methodologies": {
1126
+ "type": "array",
1127
+ "items": {
1128
+ "$ref": "#/$defs/external:enums~1audience-evidence-methodology.json"
1129
+ }
1130
+ },
1131
+ "accepted_evidence_types": {
1132
+ "type": "array",
1133
+ "items": {
1134
+ "type": "string",
1135
+ "enum": [
1136
+ "measured",
1137
+ "forecast",
1138
+ "seller_declared"
1139
+ ]
1140
+ }
1141
+ },
1142
+ "accepted_providers": {
1143
+ "type": "array",
1144
+ "items": {
1145
+ "$ref": "#/$defs/external:core~1brand-key.json"
1146
+ }
1147
+ },
1148
+ "excluded_providers": {
1149
+ "type": "array",
1150
+ "items": {
1151
+ "$ref": "#/$defs/external:core~1brand-key.json"
1152
+ }
1153
+ },
1154
+ "accepted_subject_types": {
1155
+ "type": "array",
1156
+ "items": {
1157
+ "$ref": "#/$defs/external:enums~1audience-subject-type.json"
1158
+ }
1159
+ },
1160
+ "accepted_resolution_methods": {
1161
+ "type": "array",
1162
+ "items": {
1163
+ "$ref": "#/$defs/external:enums~1audience-resolution-method.json"
1164
+ }
1165
+ },
1166
+ "minimum_confidence": {
1167
+ "type": "number"
1168
+ },
1169
+ "maximum_age": {
1170
+ "allOf": [
1171
+ {
1172
+ "$ref": "#/$defs/external:core~1duration.json"
1173
+ },
1174
+ {
1175
+ "properties": {
1176
+ "unit": {
1177
+ "enum": [
1178
+ "seconds",
1179
+ "minutes",
1180
+ "hours",
1181
+ "days"
1182
+ ]
1183
+ }
1184
+ }
1185
+ }
1186
+ ]
1187
+ },
1188
+ "methodology_documentation_required": {
1189
+ "type": "boolean"
1190
+ },
1191
+ "independent_attestation_required": {
1192
+ "type": "boolean"
1193
+ },
1194
+ "accepted_attestation_issuers": {
1195
+ "type": "array",
1196
+ "items": {
1197
+ "discriminator": {
1198
+ "propertyName": "type"
1199
+ },
1200
+ "oneOf": [
1201
+ {
1202
+ "type": "object",
1203
+ "properties": {
1204
+ "type": {
1205
+ "type": "string",
1206
+ "const": "brand"
1207
+ },
1208
+ "brand": {
1209
+ "$ref": "#/$defs/external:core~1brand-key.json"
1210
+ },
1211
+ "ext": {
1212
+ "$ref": "#/$defs/external:core~1ext.json"
1213
+ }
1214
+ },
1215
+ "required": [
1216
+ "type",
1217
+ "brand"
1218
+ ]
1219
+ },
1220
+ {
1221
+ "type": "object",
1222
+ "properties": {
1223
+ "type": {
1224
+ "type": "string",
1225
+ "const": "agent"
1226
+ },
1227
+ "agent_url": {
1228
+ "type": "string"
1229
+ },
1230
+ "ext": {
1231
+ "$ref": "#/$defs/external:core~1ext.json"
1232
+ }
1233
+ },
1234
+ "required": [
1235
+ "type",
1236
+ "agent_url"
1237
+ ]
1238
+ },
1239
+ {
1240
+ "type": "object",
1241
+ "properties": {
1242
+ "type": {
1243
+ "type": "string",
1244
+ "const": "origin"
1245
+ },
1246
+ "origin": {
1247
+ "type": "string"
1248
+ },
1249
+ "ext": {
1250
+ "$ref": "#/$defs/external:core~1ext.json"
1251
+ }
1252
+ },
1253
+ "required": [
1254
+ "type",
1255
+ "origin"
1256
+ ]
1257
+ }
1258
+ ]
1259
+ }
1260
+ },
1261
+ "accepted_attestation_claim_types": {
1262
+ "type": "array",
1263
+ "items": {
1264
+ "type": "string"
1265
+ }
1266
+ },
1267
+ "ext": {
1268
+ "$ref": "#/$defs/external:core~1ext.json"
1269
+ }
1270
+ },
1271
+ "required": [
1272
+ "requirement_mode",
1273
+ "evidence_presence"
1274
+ ],
1275
+ "allOf": [
1276
+ {
1277
+ "if": {
1278
+ "properties": {
1279
+ "independent_attestation_required": {
1280
+ "const": true
1281
+ }
1282
+ },
1283
+ "required": [
1284
+ "independent_attestation_required"
1285
+ ]
1286
+ },
1287
+ "then": {
1288
+ "required": [
1289
+ "accepted_attestation_issuers"
1290
+ ]
1291
+ }
1292
+ }
1293
+ ]
1294
+ },
1295
+ "external:enums/audience-evidence-methodology.json": {
1296
+ "type": "string",
1297
+ "enum": [
1298
+ "observed",
1299
+ "declared",
1300
+ "derived",
1301
+ "inferred",
1302
+ "modeled",
1303
+ "projected"
1304
+ ]
1305
+ },
1306
+ "external:enums/audience-subject-type.json": {
1307
+ "type": "string",
1308
+ "enum": [
1309
+ "individual",
1310
+ "household",
1311
+ "business",
1312
+ "contextual",
1313
+ "none"
1314
+ ]
1315
+ },
1316
+ "external:enums/audience-resolution-method.json": {
1317
+ "type": "string",
1318
+ "enum": [
1319
+ "deterministic_id",
1320
+ "probabilistic_device",
1321
+ "browser",
1322
+ "geographic",
1323
+ "content_signal",
1324
+ "mixed"
1325
+ ]
1326
+ },
1327
+ "external:core/duration.json": {
1328
+ "type": "object",
1329
+ "properties": {
1330
+ "interval": {
1331
+ "type": "integer"
1332
+ },
1333
+ "unit": {
1334
+ "type": "string",
1335
+ "enum": [
1336
+ "seconds",
1337
+ "minutes",
1338
+ "hours",
1339
+ "days",
1340
+ "campaign"
1341
+ ]
1342
+ }
1343
+ },
1344
+ "required": [
1345
+ "interval",
1346
+ "unit"
1347
+ ]
1348
+ },
1349
+ "external:core/ext.json": {
1350
+ "type": "object",
1351
+ "additionalProperties": true
1352
+ },
1353
+ "external:core/targeting.json": {
1354
+ "type": "object",
1355
+ "properties": {
1356
+ "geo_countries": {
1357
+ "type": "array",
1358
+ "items": {
1359
+ "type": "string"
1360
+ }
1361
+ },
1362
+ "geo_countries_exclude": {
1363
+ "type": "array",
1364
+ "items": {
1365
+ "type": "string"
1366
+ }
1367
+ },
1368
+ "geo_regions": {
1369
+ "type": "array",
1370
+ "items": {
1371
+ "type": "string"
1372
+ }
1373
+ },
1374
+ "geo_regions_exclude": {
1375
+ "type": "array",
1376
+ "items": {
1377
+ "type": "string"
1378
+ }
1379
+ },
1380
+ "geo_metros": {
1381
+ "type": "array",
1382
+ "items": {
1383
+ "type": "object",
1384
+ "properties": {
1385
+ "system": {
1386
+ "$ref": "#/$defs/external:enums~1metro-system.json"
1387
+ },
1388
+ "values": {
1389
+ "type": "array",
1390
+ "items": {
1391
+ "type": "string"
1392
+ }
1393
+ }
1394
+ },
1395
+ "required": [
1396
+ "system",
1397
+ "values"
1398
+ ]
1399
+ }
1400
+ },
1401
+ "geo_metros_exclude": {
1402
+ "type": "array",
1403
+ "items": {
1404
+ "type": "object",
1405
+ "properties": {
1406
+ "system": {
1407
+ "$ref": "#/$defs/external:enums~1metro-system.json"
1408
+ },
1409
+ "values": {
1410
+ "type": "array",
1411
+ "items": {
1412
+ "type": "string"
1413
+ }
1414
+ }
1415
+ },
1416
+ "required": [
1417
+ "system",
1418
+ "values"
1419
+ ]
1420
+ }
1421
+ },
1422
+ "geo_postal_areas": {
1423
+ "type": "array",
1424
+ "items": {
1425
+ "$ref": "#/$defs/external:core~1postal-area.json"
1426
+ }
1427
+ },
1428
+ "geo_postal_areas_exclude": {
1429
+ "type": "array",
1430
+ "items": {
1431
+ "$ref": "#/$defs/external:core~1postal-area.json"
1432
+ }
1433
+ },
1434
+ "geo_places": {
1435
+ "type": "array",
1436
+ "items": {
1437
+ "$ref": "#/$defs/external:core~1geo-place-area.json"
1438
+ }
1439
+ },
1440
+ "geo_places_exclude": {
1441
+ "type": "array",
1442
+ "items": {
1443
+ "$ref": "#/$defs/external:core~1geo-place-area.json"
1444
+ }
1445
+ },
1446
+ "daypart_targets": {
1447
+ "type": "array",
1448
+ "items": {
1449
+ "$ref": "#/$defs/external:core~1daypart-target.json"
1450
+ }
1451
+ },
1452
+ "axe_include_segment": {
1453
+ "type": "string"
1454
+ },
1455
+ "axe_exclude_segment": {
1456
+ "type": "string"
1457
+ },
1458
+ "audience_include": {
1459
+ "type": "array",
1460
+ "items": {
1461
+ "type": "string"
1462
+ }
1463
+ },
1464
+ "audience_exclude": {
1465
+ "type": "array",
1466
+ "items": {
1467
+ "type": "string"
1468
+ }
1469
+ },
1470
+ "signal_targeting_groups": {
1471
+ "$ref": "#/$defs/external:core~1package-signal-targeting-groups.json"
1472
+ },
1473
+ "signal_targeting": {
1474
+ "type": "array",
1475
+ "items": {
1476
+ "$ref": "#/$defs/external:core~1signal-targeting.json"
1477
+ }
1478
+ },
1479
+ "demographics": {
1480
+ "$ref": "#/$defs/external:core~1demographic-targeting-intent.json"
1481
+ },
1482
+ "frequency_cap": {
1483
+ "$ref": "#/$defs/external:core~1frequency-cap.json"
1484
+ },
1485
+ "property_list": {
1486
+ "$ref": "#/$defs/external:core~1property-list-ref.json"
1487
+ },
1488
+ "property_list_exclude": {
1489
+ "$ref": "#/$defs/external:core~1property-list-ref.json"
1490
+ },
1491
+ "collection_list": {
1492
+ "$ref": "#/$defs/external:core~1collection-list-ref.json"
1493
+ },
1494
+ "collection_list_exclude": {
1495
+ "$ref": "#/$defs/external:core~1collection-list-ref.json"
1496
+ },
1497
+ "placement_selection": {
1498
+ "$ref": "#/$defs/external:core~1placement-selection.json"
1499
+ },
1500
+ "age_restriction": {
1501
+ "type": "object",
1502
+ "properties": {
1503
+ "min": {
1504
+ "type": "integer"
1505
+ },
1506
+ "verification_required": {
1507
+ "type": "boolean"
1508
+ },
1509
+ "accepted_methods": {
1510
+ "type": "array",
1511
+ "items": {
1512
+ "$ref": "#/$defs/external:enums~1age-verification-method.json"
1513
+ }
1514
+ }
1515
+ },
1516
+ "required": [
1517
+ "min"
1518
+ ]
1519
+ },
1520
+ "device_platform": {
1521
+ "type": "array",
1522
+ "items": {
1523
+ "$ref": "#/$defs/external:enums~1device-platform.json"
1524
+ }
1525
+ },
1526
+ "device_platform_exclude": {
1527
+ "type": "array",
1528
+ "items": {
1529
+ "$ref": "#/$defs/external:enums~1device-platform.json"
1530
+ }
1531
+ },
1532
+ "device_type": {
1533
+ "type": "array",
1534
+ "items": {
1535
+ "$ref": "#/$defs/external:enums~1device-type.json"
1536
+ }
1537
+ },
1538
+ "device_type_exclude": {
1539
+ "type": "array",
1540
+ "items": {
1541
+ "$ref": "#/$defs/external:enums~1device-type.json"
1542
+ }
1543
+ },
1544
+ "browser": {
1545
+ "type": "array",
1546
+ "items": {
1547
+ "$ref": "#/$defs/external:enums~1browser-family.json"
1548
+ }
1549
+ },
1550
+ "browser_exclude": {
1551
+ "type": "array",
1552
+ "items": {
1553
+ "$ref": "#/$defs/external:enums~1browser-family.json"
1554
+ }
1555
+ },
1556
+ "store_catchments": {
1557
+ "type": "array",
1558
+ "items": {
1559
+ "type": "object",
1560
+ "properties": {
1561
+ "catalog_id": {
1562
+ "type": "string"
1563
+ },
1564
+ "store_ids": {
1565
+ "type": "array",
1566
+ "items": {
1567
+ "type": "string"
1568
+ }
1569
+ },
1570
+ "catchment_ids": {
1571
+ "type": "array",
1572
+ "items": {
1573
+ "type": "string"
1574
+ }
1575
+ }
1576
+ },
1577
+ "required": [
1578
+ "catalog_id"
1579
+ ],
1580
+ "additionalProperties": true
1581
+ }
1582
+ },
1583
+ "geo_proximity": {
1584
+ "type": "array",
1585
+ "items": {
1586
+ "type": "object",
1587
+ "properties": {
1588
+ "lat": {
1589
+ "type": "number"
1590
+ },
1591
+ "lng": {
1592
+ "type": "number"
1593
+ },
1594
+ "label": {
1595
+ "type": "string"
1596
+ },
1597
+ "travel_time": {
1598
+ "type": "object",
1599
+ "properties": {
1600
+ "value": {
1601
+ "type": "number"
1602
+ },
1603
+ "unit": {
1604
+ "$ref": "#/$defs/external:enums~1travel-time-unit.json"
1605
+ }
1606
+ },
1607
+ "required": [
1608
+ "value",
1609
+ "unit"
1610
+ ]
1611
+ },
1612
+ "transport_mode": {
1613
+ "$ref": "#/$defs/external:enums~1transport-mode.json"
1614
+ },
1615
+ "radius": {
1616
+ "type": "object",
1617
+ "properties": {
1618
+ "value": {
1619
+ "type": "number"
1620
+ },
1621
+ "unit": {
1622
+ "$ref": "#/$defs/external:enums~1distance-unit.json"
1623
+ }
1624
+ },
1625
+ "required": [
1626
+ "value",
1627
+ "unit"
1628
+ ]
1629
+ },
1630
+ "geometry": {
1631
+ "type": "object",
1632
+ "properties": {
1633
+ "type": {
1634
+ "type": "string",
1635
+ "enum": [
1636
+ "Polygon",
1637
+ "MultiPolygon"
1638
+ ]
1639
+ },
1640
+ "coordinates": {
1641
+ "type": "array"
1642
+ }
1643
+ },
1644
+ "required": [
1645
+ "type",
1646
+ "coordinates"
1647
+ ]
1648
+ },
1649
+ "ext": {
1650
+ "$ref": "#/$defs/external:core~1ext.json"
1651
+ }
1652
+ },
1653
+ "oneOf": [
1654
+ {
1655
+ "required": [
1656
+ "lat",
1657
+ "lng",
1658
+ "travel_time",
1659
+ "transport_mode"
1660
+ ],
1661
+ "not": {
1662
+ "anyOf": [
1663
+ {
1664
+ "required": [
1665
+ "radius"
1666
+ ]
1667
+ },
1668
+ {
1669
+ "required": [
1670
+ "geometry"
1671
+ ]
1672
+ }
1673
+ ]
1674
+ }
1675
+ },
1676
+ {
1677
+ "required": [
1678
+ "lat",
1679
+ "lng",
1680
+ "radius"
1681
+ ],
1682
+ "not": {
1683
+ "anyOf": [
1684
+ {
1685
+ "required": [
1686
+ "travel_time"
1687
+ ]
1688
+ },
1689
+ {
1690
+ "required": [
1691
+ "geometry"
1692
+ ]
1693
+ }
1694
+ ]
1695
+ }
1696
+ },
1697
+ {
1698
+ "required": [
1699
+ "geometry"
1700
+ ],
1701
+ "not": {
1702
+ "anyOf": [
1703
+ {
1704
+ "required": [
1705
+ "travel_time"
1706
+ ]
1707
+ },
1708
+ {
1709
+ "required": [
1710
+ "radius"
1711
+ ]
1712
+ }
1713
+ ]
1714
+ }
1715
+ }
1716
+ ],
1717
+ "additionalProperties": true
1718
+ }
1719
+ },
1720
+ "language": {
1721
+ "type": "array",
1722
+ "items": {
1723
+ "$ref": "#/$defs/external:core~1locale-tag.json"
1724
+ }
1725
+ },
1726
+ "keyword_targets": {
1727
+ "type": "array",
1728
+ "items": {
1729
+ "type": "object",
1730
+ "properties": {
1731
+ "keyword": {
1732
+ "type": "string"
1733
+ },
1734
+ "match_type": {
1735
+ "$ref": "#/$defs/external:enums~1match-type.json"
1736
+ },
1737
+ "bid_price": {
1738
+ "type": "number"
1739
+ }
1740
+ },
1741
+ "required": [
1742
+ "keyword",
1743
+ "match_type"
1744
+ ]
1745
+ }
1746
+ },
1747
+ "negative_keywords": {
1748
+ "type": "array",
1749
+ "items": {
1750
+ "type": "object",
1751
+ "properties": {
1752
+ "keyword": {
1753
+ "type": "string"
1754
+ },
1755
+ "match_type": {
1756
+ "$ref": "#/$defs/external:enums~1match-type.json"
1757
+ }
1758
+ },
1759
+ "required": [
1760
+ "keyword",
1761
+ "match_type"
1762
+ ]
1763
+ }
1764
+ }
1765
+ },
1766
+ "allOf": [
1767
+ {
1768
+ "if": {
1769
+ "required": [
1770
+ "demographics",
1771
+ "age_restriction"
1772
+ ]
1773
+ },
1774
+ "then": {
1775
+ "properties": {
1776
+ "demographics": {
1777
+ "properties": {
1778
+ "age": {
1779
+ "properties": {
1780
+ "include_unknown": {
1781
+ "const": false
1782
+ }
1783
+ }
1784
+ }
1785
+ }
1786
+ }
1787
+ }
1788
+ }
1789
+ },
1790
+ {
1791
+ "if": {
1792
+ "properties": {
1793
+ "age_restriction": {
1794
+ "properties": {
1795
+ "verification_required": {
1796
+ "const": true
1797
+ }
1798
+ },
1799
+ "required": [
1800
+ "verification_required"
1801
+ ]
1802
+ },
1803
+ "demographics": {
1804
+ "properties": {
1805
+ "age": {
1806
+ "required": [
1807
+ "accepted_bases"
1808
+ ]
1809
+ }
1810
+ },
1811
+ "required": [
1812
+ "age"
1813
+ ]
1814
+ }
1815
+ },
1816
+ "required": [
1817
+ "demographics",
1818
+ "age_restriction"
1819
+ ]
1820
+ },
1821
+ "then": {
1822
+ "properties": {
1823
+ "demographics": {
1824
+ "properties": {
1825
+ "age": {
1826
+ "properties": {
1827
+ "accepted_bases": {
1828
+ "contains": {
1829
+ "const": "verified"
1830
+ }
1831
+ }
1832
+ }
1833
+ }
1834
+ }
1835
+ }
1836
+ }
1837
+ }
1838
+ }
1839
+ ],
1840
+ "additionalProperties": true
1841
+ },
1842
+ "external:enums/metro-system.json": {
1843
+ "type": "string",
1844
+ "enum": [
1845
+ "nielsen_dma",
1846
+ "uk_itl1",
1847
+ "uk_itl2",
1848
+ "eurostat_nuts2",
1849
+ "custom"
1850
+ ]
1851
+ },
1852
+ "external:core/postal-area.json": {
1853
+ "anyOf": [
1854
+ {
1855
+ "type": "object",
1856
+ "allOf": [
1857
+ {
1858
+ "$ref": "#/$defs/external:core~1postal-country-system.json"
1859
+ }
1860
+ ],
1861
+ "properties": {
1862
+ "country": {
1863
+ "type": "string"
1864
+ },
1865
+ "system": {
1866
+ "$ref": "#/$defs/external:enums~1postal-system.json"
1867
+ },
1868
+ "values": {
1869
+ "type": "array",
1870
+ "items": {
1871
+ "type": "string"
1872
+ }
1873
+ }
1874
+ },
1875
+ "required": [
1876
+ "country",
1877
+ "system",
1878
+ "values"
1879
+ ]
1880
+ },
1881
+ {
1882
+ "type": "object",
1883
+ "properties": {
1884
+ "system": {
1885
+ "$ref": "#/$defs/external:enums~1legacy-postal-system.json"
1886
+ },
1887
+ "values": {
1888
+ "type": "array",
1889
+ "items": {
1890
+ "type": "string"
1891
+ }
1892
+ }
1893
+ },
1894
+ "required": [
1895
+ "system",
1896
+ "values"
1897
+ ]
1898
+ }
1899
+ ]
1900
+ },
1901
+ "external:core/postal-country-system.json": {
1902
+ "type": "object",
1903
+ "properties": {
1904
+ "country": {
1905
+ "type": "string"
1906
+ },
1907
+ "system": {
1908
+ "$ref": "#/$defs/external:enums~1postal-system.json"
1909
+ }
1910
+ },
1911
+ "required": [
1912
+ "country",
1913
+ "system"
1914
+ ],
1915
+ "anyOf": [
1916
+ {
1917
+ "properties": {
1918
+ "country": {
1919
+ "const": "US"
1920
+ },
1921
+ "system": {
1922
+ "enum": [
1923
+ "zip",
1924
+ "zip_plus_four"
1925
+ ]
1926
+ }
1927
+ }
1928
+ },
1929
+ {
1930
+ "properties": {
1931
+ "country": {
1932
+ "const": "GB"
1933
+ },
1934
+ "system": {
1935
+ "enum": [
1936
+ "outward",
1937
+ "full"
1938
+ ]
1939
+ }
1940
+ }
1941
+ },
1942
+ {
1943
+ "properties": {
1944
+ "country": {
1945
+ "const": "CA"
1946
+ },
1947
+ "system": {
1948
+ "enum": [
1949
+ "fsa",
1950
+ "full"
1951
+ ]
1952
+ }
1953
+ }
1954
+ },
1955
+ {
1956
+ "properties": {
1957
+ "country": {
1958
+ "enum": [
1959
+ "DE",
1960
+ "CH",
1961
+ "AT"
1962
+ ]
1963
+ },
1964
+ "system": {
1965
+ "const": "plz"
1966
+ }
1967
+ }
1968
+ },
1969
+ {
1970
+ "properties": {
1971
+ "country": {
1972
+ "const": "FR"
1973
+ },
1974
+ "system": {
1975
+ "const": "code_postal"
1976
+ }
1977
+ }
1978
+ },
1979
+ {
1980
+ "properties": {
1981
+ "country": {
1982
+ "const": "AU"
1983
+ },
1984
+ "system": {
1985
+ "const": "postcode"
1986
+ }
1987
+ }
1988
+ },
1989
+ {
1990
+ "properties": {
1991
+ "country": {
1992
+ "const": "BR"
1993
+ },
1994
+ "system": {
1995
+ "const": "cep"
1996
+ }
1997
+ }
1998
+ },
1999
+ {
2000
+ "properties": {
2001
+ "country": {
2002
+ "const": "IN"
2003
+ },
2004
+ "system": {
2005
+ "const": "pin"
2006
+ }
2007
+ }
2008
+ },
2009
+ {
2010
+ "properties": {
2011
+ "country": {
2012
+ "const": "ZA"
2013
+ },
2014
+ "system": {
2015
+ "const": "postal_code"
2016
+ }
2017
+ }
2018
+ },
2019
+ {
2020
+ "properties": {
2021
+ "country": {
2022
+ "not": {
2023
+ "enum": [
2024
+ "US",
2025
+ "GB",
2026
+ "CA",
2027
+ "DE",
2028
+ "CH",
2029
+ "AT",
2030
+ "FR",
2031
+ "AU",
2032
+ "BR",
2033
+ "IN",
2034
+ "ZA"
2035
+ ]
2036
+ }
2037
+ },
2038
+ "system": {
2039
+ "enum": [
2040
+ "postal_code",
2041
+ "custom"
2042
+ ]
2043
+ }
2044
+ }
2045
+ }
2046
+ ]
2047
+ },
2048
+ "external:enums/postal-system.json": {
2049
+ "type": "string",
2050
+ "enum": [
2051
+ "postal_code",
2052
+ "zip",
2053
+ "zip_plus_four",
2054
+ "outward",
2055
+ "full",
2056
+ "fsa",
2057
+ "plz",
2058
+ "code_postal",
2059
+ "postcode",
2060
+ "cep",
2061
+ "pin",
2062
+ "custom",
2063
+ "us_zip",
2064
+ "us_zip_plus_four",
2065
+ "gb_outward",
2066
+ "gb_full",
2067
+ "ca_fsa",
2068
+ "ca_full",
2069
+ "de_plz",
2070
+ "fr_code_postal",
2071
+ "au_postcode",
2072
+ "ch_plz",
2073
+ "at_plz"
2074
+ ]
2075
+ },
2076
+ "external:enums/legacy-postal-system.json": {
2077
+ "type": "string",
2078
+ "enum": [
2079
+ "us_zip",
2080
+ "us_zip_plus_four",
2081
+ "gb_outward",
2082
+ "gb_full",
2083
+ "ca_fsa",
2084
+ "ca_full",
2085
+ "de_plz",
2086
+ "fr_code_postal",
2087
+ "au_postcode",
2088
+ "ch_plz",
2089
+ "at_plz"
2090
+ ]
2091
+ },
2092
+ "external:core/geo-place-area.json": {
2093
+ "type": "object",
2094
+ "properties": {
2095
+ "country": {
2096
+ "type": "string"
2097
+ },
2098
+ "system": {
2099
+ "$ref": "#/$defs/external:core~1geo-place-system.json"
2100
+ },
2101
+ "system_version": {
2102
+ "type": "string"
2103
+ },
2104
+ "place_type": {
2105
+ "$ref": "#/$defs/external:core~1geo-place-type.json"
2106
+ },
2107
+ "values": {
2108
+ "type": "array",
2109
+ "items": {
2110
+ "type": "string"
2111
+ }
2112
+ },
2113
+ "value_labels": {
2114
+ "type": "object",
2115
+ "additionalProperties": {
2116
+ "type": "string"
2117
+ }
2118
+ },
2119
+ "ext": {
2120
+ "$ref": "#/$defs/external:core~1ext.json"
2121
+ }
2122
+ },
2123
+ "required": [
2124
+ "country",
2125
+ "system",
2126
+ "place_type",
2127
+ "values"
2128
+ ],
2129
+ "allOf": [
2130
+ {
2131
+ "if": {
2132
+ "properties": {
2133
+ "system": {
2134
+ "enum": [
2135
+ "geonames",
2136
+ "google_ads",
2137
+ "microsoft_ads"
2138
+ ]
2139
+ }
2140
+ },
2141
+ "required": [
2142
+ "system"
2143
+ ]
2144
+ },
2145
+ "then": {
2146
+ "properties": {
2147
+ "values": {
2148
+ "items": {
2149
+ "type": "string"
2150
+ }
2151
+ }
2152
+ }
2153
+ }
2154
+ }
2155
+ ]
2156
+ },
2157
+ "external:core/geo-place-system.json": {
2158
+ "anyOf": [
2159
+ {
2160
+ "type": "string",
2161
+ "enum": [
2162
+ "geonames",
2163
+ "google_ads",
2164
+ "microsoft_ads"
2165
+ ]
2166
+ },
2167
+ {
2168
+ "type": "string"
2169
+ }
2170
+ ]
2171
+ },
2172
+ "external:core/geo-place-type.json": {
2173
+ "anyOf": [
2174
+ {
2175
+ "type": "string",
2176
+ "enum": [
2177
+ "airport",
2178
+ "borough",
2179
+ "city",
2180
+ "city_region",
2181
+ "commune",
2182
+ "county",
2183
+ "district",
2184
+ "municipality",
2185
+ "neighborhood",
2186
+ "post_town",
2187
+ "prefecture",
2188
+ "province",
2189
+ "quarter",
2190
+ "state",
2191
+ "territory",
2192
+ "ward"
2193
+ ]
2194
+ },
2195
+ {
2196
+ "type": "string"
2197
+ }
2198
+ ]
2199
+ },
2200
+ "external:core/daypart-target.json": {
2201
+ "type": "object",
2202
+ "properties": {
2203
+ "days": {
2204
+ "type": "array",
2205
+ "items": {
2206
+ "$ref": "#/$defs/external:enums~1day-of-week.json"
2207
+ }
2208
+ },
2209
+ "start_hour": {
2210
+ "type": "integer"
2211
+ },
2212
+ "end_hour": {
2213
+ "type": "integer"
2214
+ },
2215
+ "label": {
2216
+ "type": "string"
2217
+ }
2218
+ },
2219
+ "required": [
2220
+ "days",
2221
+ "start_hour",
2222
+ "end_hour"
2223
+ ]
2224
+ },
2225
+ "external:enums/day-of-week.json": {
2226
+ "type": "string",
2227
+ "enum": [
2228
+ "monday",
2229
+ "tuesday",
2230
+ "wednesday",
2231
+ "thursday",
2232
+ "friday",
2233
+ "saturday",
2234
+ "sunday"
2235
+ ]
2236
+ },
2237
+ "external:core/package-signal-targeting-groups.json": {
2238
+ "type": "object",
2239
+ "properties": {
2240
+ "operator": {
2241
+ "type": "string",
2242
+ "enum": [
2243
+ "all"
2244
+ ]
2245
+ },
2246
+ "groups": {
2247
+ "type": "array",
2248
+ "items": {
2249
+ "$ref": "#/$defs/external:core~1package-signal-targeting-group.json"
2250
+ }
2251
+ }
2252
+ },
2253
+ "required": [
2254
+ "operator",
2255
+ "groups"
2256
+ ],
2257
+ "additionalProperties": true
2258
+ },
2259
+ "external:core/package-signal-targeting-group.json": {
2260
+ "type": "object",
2261
+ "properties": {
2262
+ "operator": {
2263
+ "type": "string",
2264
+ "enum": [
2265
+ "any",
2266
+ "none"
2267
+ ]
2268
+ },
2269
+ "signals": {
2270
+ "type": "array",
2271
+ "items": {
2272
+ "$ref": "#/$defs/external:core~1package-signal-targeting.json"
2273
+ }
2274
+ }
2275
+ },
2276
+ "required": [
2277
+ "operator",
2278
+ "signals"
2279
+ ],
2280
+ "additionalProperties": true
2281
+ },
2282
+ "external:core/package-signal-targeting.json": {
2283
+ "type": "object",
2284
+ "allOf": [
2285
+ {
2286
+ "$ref": "#/$defs/external:core~1signal-targeting-expression.json"
2287
+ }
2288
+ ],
2289
+ "properties": {
2290
+ "pricing_option_id": {
2291
+ "type": "string"
2292
+ },
2293
+ "signal_agent_segment_id": {
2294
+ "type": "string"
2295
+ },
2296
+ "activation_key": {
2297
+ "$ref": "#/$defs/external:core~1activation-key.json"
2298
+ }
2299
+ },
2300
+ "additionalProperties": true
2301
+ },
2302
+ "external:core/signal-targeting-expression.json": {
2303
+ "discriminator": {
2304
+ "propertyName": "value_type"
2305
+ },
2306
+ "oneOf": [
2307
+ {
2308
+ "type": "object",
2309
+ "properties": {
2310
+ "signal_ref": {
2311
+ "$ref": "#/$defs/external:core~1signal-ref.json"
2312
+ },
2313
+ "value_type": {
2314
+ "type": "string",
2315
+ "const": "binary"
2316
+ },
2317
+ "value": {
2318
+ "type": "boolean",
2319
+ "const": true
2320
+ }
2321
+ },
2322
+ "required": [
2323
+ "signal_ref",
2324
+ "value_type",
2325
+ "value"
2326
+ ],
2327
+ "additionalProperties": true
2328
+ },
2329
+ {
2330
+ "type": "object",
2331
+ "properties": {
2332
+ "signal_ref": {
2333
+ "$ref": "#/$defs/external:core~1signal-ref.json"
2334
+ },
2335
+ "value_type": {
2336
+ "type": "string",
2337
+ "const": "categorical"
2338
+ },
2339
+ "values": {
2340
+ "type": "array",
2341
+ "items": {
2342
+ "type": "string"
2343
+ }
2344
+ }
2345
+ },
2346
+ "required": [
2347
+ "signal_ref",
2348
+ "value_type",
2349
+ "values"
2350
+ ],
2351
+ "additionalProperties": true
2352
+ },
2353
+ {
2354
+ "type": "object",
2355
+ "properties": {
2356
+ "signal_ref": {
2357
+ "$ref": "#/$defs/external:core~1signal-ref.json"
2358
+ },
2359
+ "value_type": {
2360
+ "type": "string",
2361
+ "const": "numeric"
2362
+ },
2363
+ "min_value": {
2364
+ "type": "number"
2365
+ },
2366
+ "max_value": {
2367
+ "type": "number"
2368
+ }
2369
+ },
2370
+ "required": [
2371
+ "signal_ref",
2372
+ "value_type"
2373
+ ],
2374
+ "anyOf": [
2375
+ {
2376
+ "required": [
2377
+ "min_value"
2378
+ ]
2379
+ },
2380
+ {
2381
+ "required": [
2382
+ "max_value"
2383
+ ]
2384
+ }
2385
+ ],
2386
+ "additionalProperties": true
2387
+ }
2388
+ ]
2389
+ },
2390
+ "external:core/signal-ref.json": {
2391
+ "discriminator": {
2392
+ "propertyName": "scope"
2393
+ },
2394
+ "oneOf": [
2395
+ {
2396
+ "type": "object",
2397
+ "properties": {
2398
+ "scope": {
2399
+ "type": "string",
2400
+ "const": "product"
2401
+ },
2402
+ "signal_id": {
2403
+ "type": "string"
2404
+ }
2405
+ },
2406
+ "required": [
2407
+ "scope",
2408
+ "signal_id"
2409
+ ],
2410
+ "not": {
2411
+ "anyOf": [
2412
+ {
2413
+ "required": [
2414
+ "data_provider_domain"
2415
+ ]
2416
+ },
2417
+ {
2418
+ "required": [
2419
+ "signal_source_url"
2420
+ ]
2421
+ },
2422
+ {
2423
+ "required": [
2424
+ "agent_url"
2425
+ ]
2426
+ },
2427
+ {
2428
+ "required": [
2429
+ "source"
2430
+ ]
2431
+ },
2432
+ {
2433
+ "required": [
2434
+ "id"
2435
+ ]
2436
+ }
2437
+ ]
2438
+ },
2439
+ "additionalProperties": true
2440
+ },
2441
+ {
2442
+ "type": "object",
2443
+ "properties": {
2444
+ "scope": {
2445
+ "type": "string",
2446
+ "const": "data_provider"
2447
+ },
2448
+ "data_provider_domain": {
2449
+ "type": "string"
2450
+ },
2451
+ "signal_id": {
2452
+ "type": "string"
2453
+ }
2454
+ },
2455
+ "required": [
2456
+ "scope",
2457
+ "data_provider_domain",
2458
+ "signal_id"
2459
+ ],
2460
+ "not": {
2461
+ "anyOf": [
2462
+ {
2463
+ "required": [
2464
+ "agent_url"
2465
+ ]
2466
+ },
2467
+ {
2468
+ "required": [
2469
+ "signal_source_url"
2470
+ ]
2471
+ },
2472
+ {
2473
+ "required": [
2474
+ "source"
2475
+ ]
2476
+ },
2477
+ {
2478
+ "required": [
2479
+ "id"
2480
+ ]
2481
+ }
2482
+ ]
2483
+ },
2484
+ "additionalProperties": true
2485
+ },
2486
+ {
2487
+ "type": "object",
2488
+ "properties": {
2489
+ "scope": {
2490
+ "type": "string",
2491
+ "const": "signal_source"
2492
+ },
2493
+ "signal_source_url": {
2494
+ "type": "string"
2495
+ },
2496
+ "signal_id": {
2497
+ "type": "string"
2498
+ }
2499
+ },
2500
+ "required": [
2501
+ "scope",
2502
+ "signal_source_url",
2503
+ "signal_id"
2504
+ ],
2505
+ "not": {
2506
+ "anyOf": [
2507
+ {
2508
+ "required": [
2509
+ "data_provider_domain"
2510
+ ]
2511
+ },
2512
+ {
2513
+ "required": [
2514
+ "agent_url"
2515
+ ]
2516
+ },
2517
+ {
2518
+ "required": [
2519
+ "source"
2520
+ ]
2521
+ },
2522
+ {
2523
+ "required": [
2524
+ "id"
2525
+ ]
2526
+ }
2527
+ ]
2528
+ },
2529
+ "additionalProperties": true
2530
+ }
2531
+ ]
2532
+ },
2533
+ "external:core/activation-key.json": {
2534
+ "type": "object",
2535
+ "discriminator": {
2536
+ "propertyName": "type"
2537
+ },
2538
+ "oneOf": [
2539
+ {
2540
+ "properties": {
2541
+ "type": {
2542
+ "type": "string",
2543
+ "const": "segment_id"
2544
+ },
2545
+ "segment_id": {
2546
+ "type": "string"
2547
+ }
2548
+ },
2549
+ "required": [
2550
+ "type",
2551
+ "segment_id"
2552
+ ],
2553
+ "additionalProperties": true
2554
+ },
2555
+ {
2556
+ "properties": {
2557
+ "type": {
2558
+ "type": "string",
2559
+ "const": "key_value"
2560
+ },
2561
+ "key": {
2562
+ "type": "string"
2563
+ },
2564
+ "value": {
2565
+ "type": "string"
2566
+ }
2567
+ },
2568
+ "required": [
2569
+ "type",
2570
+ "key",
2571
+ "value"
2572
+ ],
2573
+ "additionalProperties": true
2574
+ }
2575
+ ]
2576
+ },
2577
+ "external:core/signal-targeting.json": {
2578
+ "discriminator": {
2579
+ "propertyName": "value_type"
2580
+ },
2581
+ "oneOf": [
2582
+ {
2583
+ "type": "object",
2584
+ "properties": {
2585
+ "signal_ref": {
2586
+ "$ref": "#/$defs/external:core~1signal-ref.json"
2587
+ },
2588
+ "signal_id": {
2589
+ "$ref": "#/$defs/external:core~1signal-id.json"
2590
+ },
2591
+ "value_type": {
2592
+ "type": "string",
2593
+ "const": "binary"
2594
+ },
2595
+ "value": {
2596
+ "type": "boolean"
2597
+ }
2598
+ },
2599
+ "required": [
2600
+ "value_type",
2601
+ "value"
2602
+ ],
2603
+ "anyOf": [
2604
+ {
2605
+ "required": [
2606
+ "signal_ref"
2607
+ ]
2608
+ },
2609
+ {
2610
+ "required": [
2611
+ "signal_id"
2612
+ ]
2613
+ }
2614
+ ],
2615
+ "additionalProperties": true
2616
+ },
2617
+ {
2618
+ "type": "object",
2619
+ "properties": {
2620
+ "signal_ref": {
2621
+ "$ref": "#/$defs/external:core~1signal-ref.json"
2622
+ },
2623
+ "signal_id": {
2624
+ "$ref": "#/$defs/external:core~1signal-id.json"
2625
+ },
2626
+ "value_type": {
2627
+ "type": "string",
2628
+ "const": "categorical"
2629
+ },
2630
+ "values": {
2631
+ "type": "array",
2632
+ "items": {
2633
+ "type": "string"
2634
+ }
2635
+ }
2636
+ },
2637
+ "required": [
2638
+ "value_type",
2639
+ "values"
2640
+ ],
2641
+ "anyOf": [
2642
+ {
2643
+ "required": [
2644
+ "signal_ref"
2645
+ ]
2646
+ },
2647
+ {
2648
+ "required": [
2649
+ "signal_id"
2650
+ ]
2651
+ }
2652
+ ],
2653
+ "additionalProperties": true
2654
+ },
2655
+ {
2656
+ "type": "object",
2657
+ "properties": {
2658
+ "signal_ref": {
2659
+ "$ref": "#/$defs/external:core~1signal-ref.json"
2660
+ },
2661
+ "signal_id": {
2662
+ "$ref": "#/$defs/external:core~1signal-id.json"
2663
+ },
2664
+ "value_type": {
2665
+ "type": "string",
2666
+ "const": "numeric"
2667
+ },
2668
+ "min_value": {
2669
+ "type": "number"
2670
+ },
2671
+ "max_value": {
2672
+ "type": "number"
2673
+ }
2674
+ },
2675
+ "required": [
2676
+ "value_type"
2677
+ ],
2678
+ "anyOf": [
2679
+ {
2680
+ "required": [
2681
+ "signal_ref"
2682
+ ]
2683
+ },
2684
+ {
2685
+ "required": [
2686
+ "signal_id"
2687
+ ]
2688
+ }
2689
+ ],
2690
+ "additionalProperties": true
2691
+ }
2692
+ ]
2693
+ },
2694
+ "external:core/signal-id.json": {
2695
+ "discriminator": {
2696
+ "propertyName": "source"
2697
+ },
2698
+ "oneOf": [
2699
+ {
2700
+ "type": "object",
2701
+ "properties": {
2702
+ "source": {
2703
+ "type": "string",
2704
+ "const": "catalog"
2705
+ },
2706
+ "data_provider_domain": {
2707
+ "type": "string"
2708
+ },
2709
+ "id": {
2710
+ "type": "string"
2711
+ }
2712
+ },
2713
+ "required": [
2714
+ "source",
2715
+ "data_provider_domain",
2716
+ "id"
2717
+ ],
2718
+ "additionalProperties": true
2719
+ },
2720
+ {
2721
+ "type": "object",
2722
+ "properties": {
2723
+ "source": {
2724
+ "type": "string",
2725
+ "const": "agent"
2726
+ },
2727
+ "agent_url": {
2728
+ "type": "string"
2729
+ },
2730
+ "id": {
2731
+ "type": "string"
2732
+ }
2733
+ },
2734
+ "required": [
2735
+ "source",
2736
+ "agent_url",
2737
+ "id"
2738
+ ],
2739
+ "additionalProperties": true
2740
+ }
2741
+ ]
2742
+ },
2743
+ "external:core/demographic-targeting-intent.json": {
2744
+ "type": "object",
2745
+ "properties": {
2746
+ "age": {
2747
+ "allOf": [
2748
+ {
2749
+ "$ref": "#/$defs/external:core~1demographic-age-range.json"
2750
+ },
2751
+ {
2752
+ "type": "object",
2753
+ "properties": {
2754
+ "accepted_bases": {
2755
+ "type": "array",
2756
+ "items": {
2757
+ "$ref": "#/$defs/external:enums~1age-determination-basis.json"
2758
+ }
2759
+ },
2760
+ "accepted_verification_methods": {
2761
+ "type": "array",
2762
+ "items": {
2763
+ "$ref": "#/$defs/external:enums~1age-verification-method.json"
2764
+ }
2765
+ }
2766
+ },
2767
+ "allOf": [
2768
+ {
2769
+ "if": {
2770
+ "required": [
2771
+ "accepted_verification_methods"
2772
+ ]
2773
+ },
2774
+ "then": {
2775
+ "required": [
2776
+ "accepted_bases"
2777
+ ],
2778
+ "properties": {
2779
+ "accepted_bases": {
2780
+ "contains": {
2781
+ "const": "verified"
2782
+ }
2783
+ }
2784
+ }
2785
+ }
2786
+ }
2787
+ ],
2788
+ "additionalProperties": true
2789
+ }
2790
+ ]
2791
+ }
2792
+ },
2793
+ "required": [
2794
+ "age"
2795
+ ],
2796
+ "additionalProperties": true
2797
+ },
2798
+ "external:core/demographic-age-range.json": {
2799
+ "type": "object",
2800
+ "properties": {
2801
+ "min": {
2802
+ "type": "integer"
2803
+ },
2804
+ "max": {
2805
+ "type": "integer"
2806
+ },
2807
+ "include_unknown": {
2808
+ "type": "boolean"
2809
+ }
2810
+ },
2811
+ "required": [
2812
+ "include_unknown"
2813
+ ],
2814
+ "anyOf": [
2815
+ {
2816
+ "required": [
2817
+ "min"
2818
+ ]
2819
+ },
2820
+ {
2821
+ "required": [
2822
+ "max"
2823
+ ]
2824
+ }
2825
+ ],
2826
+ "additionalProperties": true
2827
+ },
2828
+ "external:enums/age-determination-basis.json": {
2829
+ "type": "string",
2830
+ "enum": [
2831
+ "verified",
2832
+ "declared",
2833
+ "inferred"
2834
+ ]
2835
+ },
2836
+ "external:enums/age-verification-method.json": {
2837
+ "type": "string",
2838
+ "enum": [
2839
+ "facial_age_estimation",
2840
+ "id_document",
2841
+ "digital_id",
2842
+ "credit_card",
2843
+ "world_id"
2844
+ ]
2845
+ },
2846
+ "external:core/frequency-cap.json": {
2847
+ "type": "object",
2848
+ "properties": {
2849
+ "suppress": {
2850
+ "allOf": [
2851
+ {
2852
+ "$ref": "#/$defs/external:core~1duration.json"
2853
+ }
2854
+ ]
2855
+ },
2856
+ "suppress_minutes": {
2857
+ "type": "number"
2858
+ },
2859
+ "max_impressions": {
2860
+ "type": "integer"
2861
+ },
2862
+ "per": {
2863
+ "allOf": [
2864
+ {
2865
+ "$ref": "#/$defs/external:enums~1reach-unit.json"
2866
+ }
2867
+ ]
2868
+ },
2869
+ "window": {
2870
+ "allOf": [
2871
+ {
2872
+ "$ref": "#/$defs/external:core~1duration.json"
2873
+ }
2874
+ ]
2875
+ }
2876
+ },
2877
+ "anyOf": [
2878
+ {
2879
+ "required": [
2880
+ "suppress"
2881
+ ]
2882
+ },
2883
+ {
2884
+ "required": [
2885
+ "suppress_minutes"
2886
+ ]
2887
+ },
2888
+ {
2889
+ "required": [
2890
+ "max_impressions"
2891
+ ]
2892
+ }
2893
+ ],
2894
+ "additionalProperties": true,
2895
+ "dependentRequired": {
2896
+ "max_impressions": [
2897
+ "per",
2898
+ "window"
2899
+ ],
2900
+ "per": [
2901
+ "max_impressions"
2902
+ ],
2903
+ "window": [
2904
+ "max_impressions"
2905
+ ]
2906
+ }
2907
+ },
2908
+ "external:enums/reach-unit.json": {
2909
+ "type": "string",
2910
+ "enum": [
2911
+ "individuals",
2912
+ "households",
2913
+ "devices",
2914
+ "accounts",
2915
+ "cookies",
2916
+ "custom"
2917
+ ]
2918
+ },
2919
+ "external:core/collection-list-ref.json": {
2920
+ "type": "object",
2921
+ "properties": {
2922
+ "agent_url": {
2923
+ "type": "string"
2924
+ },
2925
+ "list_id": {
2926
+ "type": "string"
2927
+ },
2928
+ "auth_token": {
2929
+ "type": "string"
2930
+ }
2931
+ },
2932
+ "required": [
2933
+ "agent_url",
2934
+ "list_id"
2935
+ ]
2936
+ },
2937
+ "external:core/placement-selection.json": {
2938
+ "type": "object",
2939
+ "discriminator": {
2940
+ "propertyName": "mode"
2941
+ },
2942
+ "oneOf": [
2943
+ {
2944
+ "type": "object",
2945
+ "properties": {
2946
+ "mode": {
2947
+ "type": "string",
2948
+ "const": "selected"
2949
+ },
2950
+ "placement_refs": {
2951
+ "type": "array",
2952
+ "items": {
2953
+ "allOf": [
2954
+ {
2955
+ "$ref": "#/$defs/external:core~1placement-ref.json"
2956
+ },
2957
+ {
2958
+ "required": [
2959
+ "publisher_domain"
2960
+ ]
2961
+ }
2962
+ ]
2963
+ }
2964
+ },
2965
+ "ext": {
2966
+ "$ref": "#/$defs/external:core~1ext.json"
2967
+ }
2968
+ },
2969
+ "required": [
2970
+ "mode",
2971
+ "placement_refs"
2972
+ ]
2973
+ },
2974
+ {
2975
+ "type": "object",
2976
+ "properties": {
2977
+ "mode": {
2978
+ "type": "string",
2979
+ "const": "default"
2980
+ },
2981
+ "ext": {
2982
+ "$ref": "#/$defs/external:core~1ext.json"
2983
+ }
2984
+ },
2985
+ "required": [
2986
+ "mode"
2987
+ ]
2988
+ }
2989
+ ]
2990
+ },
2991
+ "external:core/placement-ref.json": {
2992
+ "type": "object",
2993
+ "properties": {
2994
+ "publisher_domain": {
2995
+ "type": "string"
2996
+ },
2997
+ "placement_id": {
2998
+ "type": "string"
2999
+ }
3000
+ },
3001
+ "required": [
3002
+ "placement_id"
3003
+ ],
3004
+ "additionalProperties": true
3005
+ },
3006
+ "external:enums/device-platform.json": {
3007
+ "type": "string",
3008
+ "enum": [
3009
+ "ios",
3010
+ "android",
3011
+ "windows",
3012
+ "macos",
3013
+ "linux",
3014
+ "chromeos",
3015
+ "tvos",
3016
+ "tizen",
3017
+ "webos",
3018
+ "fire_os",
3019
+ "roku_os",
3020
+ "unknown"
3021
+ ]
3022
+ },
3023
+ "external:enums/device-type.json": {
3024
+ "type": "string",
3025
+ "enum": [
3026
+ "desktop",
3027
+ "mobile",
3028
+ "tablet",
3029
+ "ctv",
3030
+ "dooh",
3031
+ "unknown"
3032
+ ]
3033
+ },
3034
+ "external:enums/browser-family.json": {
3035
+ "type": "string",
3036
+ "enum": [
3037
+ "chrome",
3038
+ "safari",
3039
+ "firefox",
3040
+ "edge",
3041
+ "opera",
3042
+ "samsung_internet",
3043
+ "android_webview",
3044
+ "other",
3045
+ "unknown"
3046
+ ]
3047
+ },
3048
+ "external:enums/travel-time-unit.json": {
3049
+ "type": "string",
3050
+ "enum": [
3051
+ "min",
3052
+ "hr"
3053
+ ]
3054
+ },
3055
+ "external:enums/transport-mode.json": {
3056
+ "type": "string",
3057
+ "enum": [
3058
+ "walking",
3059
+ "cycling",
3060
+ "driving",
3061
+ "public_transport"
3062
+ ]
3063
+ },
3064
+ "external:enums/distance-unit.json": {
3065
+ "type": "string",
3066
+ "enum": [
3067
+ "km",
3068
+ "mi",
3069
+ "m"
3070
+ ]
3071
+ },
3072
+ "external:core/locale-tag.json": {
3073
+ "type": "string"
3074
+ },
3075
+ "external:enums/match-type.json": {
3076
+ "type": "string",
3077
+ "enum": [
3078
+ "broad",
3079
+ "phrase",
3080
+ "exact"
3081
+ ]
3082
+ },
3083
+ "external:core/targeting-overlay-requirements.json": {
3084
+ "type": "object",
3085
+ "properties": {
3086
+ "geo_countries": {
3087
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3088
+ },
3089
+ "geo_countries_exclude": {
3090
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3091
+ },
3092
+ "geo_regions": {
3093
+ "anyOf": [
3094
+ {
3095
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3096
+ },
3097
+ {
3098
+ "$ref": "#/$defs/external:core~1geo-region-requirement.json"
3099
+ }
3100
+ ]
3101
+ },
3102
+ "geo_regions_exclude": {
3103
+ "anyOf": [
3104
+ {
3105
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3106
+ },
3107
+ {
3108
+ "$ref": "#/$defs/external:core~1geo-region-requirement.json"
3109
+ }
3110
+ ]
3111
+ },
3112
+ "geo_metros": {
3113
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/metroRequirement"
3114
+ },
3115
+ "geo_metros_exclude": {
3116
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/metroRequirement"
3117
+ },
3118
+ "geo_places": {
3119
+ "$ref": "#/$defs/external:core~1geo-place-requirement.json"
3120
+ },
3121
+ "geo_places_exclude": {
3122
+ "$ref": "#/$defs/external:core~1geo-place-requirement.json"
3123
+ },
3124
+ "geo_postal_areas": {
3125
+ "anyOf": [
3126
+ {
3127
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3128
+ },
3129
+ {
3130
+ "$ref": "#/$defs/external:core~1positive-postal-area-support.json"
3131
+ }
3132
+ ]
3133
+ },
3134
+ "geo_postal_areas_exclude": {
3135
+ "anyOf": [
3136
+ {
3137
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3138
+ },
3139
+ {
3140
+ "$ref": "#/$defs/external:core~1positive-postal-area-support.json"
3141
+ }
3142
+ ]
3143
+ },
3144
+ "geo_proximity": {
3145
+ "anyOf": [
3146
+ {
3147
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3148
+ },
3149
+ {
3150
+ "type": "object",
3151
+ "properties": {
3152
+ "radius": {
3153
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3154
+ },
3155
+ "travel_time": {
3156
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3157
+ },
3158
+ "geometry": {
3159
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3160
+ },
3161
+ "transport_modes": {
3162
+ "type": "array",
3163
+ "items": {
3164
+ "$ref": "#/$defs/external:enums~1transport-mode.json"
3165
+ }
3166
+ }
3167
+ },
3168
+ "anyOf": [
3169
+ {
3170
+ "required": [
3171
+ "radius"
3172
+ ]
3173
+ },
3174
+ {
3175
+ "required": [
3176
+ "travel_time"
3177
+ ]
3178
+ },
3179
+ {
3180
+ "required": [
3181
+ "geometry"
3182
+ ]
3183
+ },
3184
+ {
3185
+ "required": [
3186
+ "transport_modes"
3187
+ ]
3188
+ }
3189
+ ]
3190
+ }
3191
+ ]
3192
+ },
3193
+ "daypart_targets": {
3194
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3195
+ },
3196
+ "audience_include": {
3197
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3198
+ },
3199
+ "audience_exclude": {
3200
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3201
+ },
3202
+ "signal_targeting_groups": {
3203
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3204
+ },
3205
+ "demographics": {
3206
+ "anyOf": [
3207
+ {
3208
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3209
+ },
3210
+ {
3211
+ "type": "object",
3212
+ "properties": {
3213
+ "age": {
3214
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3215
+ }
3216
+ },
3217
+ "required": [
3218
+ "age"
3219
+ ]
3220
+ }
3221
+ ]
3222
+ },
3223
+ "frequency_cap": {
3224
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3225
+ },
3226
+ "property_list": {
3227
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3228
+ },
3229
+ "property_list_exclude": {
3230
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3231
+ },
3232
+ "collection_list": {
3233
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3234
+ },
3235
+ "collection_list_exclude": {
3236
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3237
+ },
3238
+ "placement_selection": {
3239
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3240
+ },
3241
+ "age_restriction": {
3242
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3243
+ },
3244
+ "device_platform": {
3245
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3246
+ },
3247
+ "device_platform_exclude": {
3248
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3249
+ },
3250
+ "device_type": {
3251
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3252
+ },
3253
+ "device_type_exclude": {
3254
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3255
+ },
3256
+ "browser": {
3257
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/browserRequirement"
3258
+ },
3259
+ "browser_exclude": {
3260
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/browserRequirement"
3261
+ },
3262
+ "store_catchments": {
3263
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3264
+ },
3265
+ "language": {
3266
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3267
+ },
3268
+ "keyword_targets": {
3269
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/keywordRequirement"
3270
+ },
3271
+ "negative_keywords": {
3272
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/keywordRequirement"
3273
+ },
3274
+ "ext": {
3275
+ "$ref": "#/$defs/external:core~1ext.json"
3276
+ }
3277
+ },
3278
+ "$defs": {
3279
+ "required": {
3280
+ "type": "boolean",
3281
+ "const": true
3282
+ },
3283
+ "metroRequirement": {
3284
+ "anyOf": [
3285
+ {
3286
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3287
+ },
3288
+ {
3289
+ "type": "object",
3290
+ "properties": {
3291
+ "systems": {
3292
+ "type": "array",
3293
+ "items": {
3294
+ "$ref": "#/$defs/external:enums~1metro-system.json"
3295
+ }
3296
+ }
3297
+ },
3298
+ "required": [
3299
+ "systems"
3300
+ ]
3301
+ }
3302
+ ]
3303
+ },
3304
+ "keywordRequirement": {
3305
+ "anyOf": [
3306
+ {
3307
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3308
+ },
3309
+ {
3310
+ "type": "object",
3311
+ "properties": {
3312
+ "supported_match_types": {
3313
+ "type": "array",
3314
+ "items": {
3315
+ "$ref": "#/$defs/external:enums~1match-type.json"
3316
+ }
3317
+ }
3318
+ },
3319
+ "required": [
3320
+ "supported_match_types"
3321
+ ]
3322
+ }
3323
+ ]
3324
+ },
3325
+ "browserRequirement": {
3326
+ "anyOf": [
3327
+ {
3328
+ "$ref": "#/$defs/external:core~1targeting-overlay-requirements.json/$defs/required"
3329
+ },
3330
+ {
3331
+ "type": "object",
3332
+ "properties": {
3333
+ "families": {
3334
+ "type": "array",
3335
+ "items": {
3336
+ "$ref": "#/$defs/external:enums~1browser-family.json"
3337
+ }
3338
+ }
3339
+ },
3340
+ "required": [
3341
+ "families"
3342
+ ]
3343
+ }
3344
+ ]
3345
+ }
3346
+ }
3347
+ },
3348
+ "external:core/geo-region-requirement.json": {
3349
+ "type": "object",
3350
+ "properties": {
3351
+ "countries": {
3352
+ "type": "object",
3353
+ "propertyNames": {},
3354
+ "additionalProperties": {
3355
+ "anyOf": [
3356
+ {
3357
+ "type": "object",
3358
+ "properties": {
3359
+ "all_values": {
3360
+ "type": "boolean",
3361
+ "const": true
3362
+ }
3363
+ },
3364
+ "required": [
3365
+ "all_values"
3366
+ ]
3367
+ },
3368
+ {
3369
+ "type": "object",
3370
+ "properties": {
3371
+ "values": {
3372
+ "type": "array",
3373
+ "items": {
3374
+ "type": "string"
3375
+ }
3376
+ }
3377
+ },
3378
+ "required": [
3379
+ "values"
3380
+ ]
3381
+ }
3382
+ ]
3383
+ }
3384
+ }
3385
+ },
3386
+ "required": [
3387
+ "countries"
3388
+ ]
3389
+ },
3390
+ "external:core/geo-place-requirement.json": {
3391
+ "type": "object",
3392
+ "properties": {
3393
+ "systems": {
3394
+ "type": "object",
3395
+ "propertyNames": {
3396
+ "$ref": "#/$defs/external:core~1geo-place-system.json"
3397
+ },
3398
+ "additionalProperties": {
3399
+ "$ref": "#/$defs/external:core~1geo-place-requirement.json/$defs/catalogRequirement"
3400
+ }
3401
+ }
3402
+ },
3403
+ "required": [
3404
+ "systems"
3405
+ ],
3406
+ "$defs": {
3407
+ "catalogRequirement": {
3408
+ "type": "object",
3409
+ "properties": {
3410
+ "countries": {
3411
+ "type": "object",
3412
+ "propertyNames": {},
3413
+ "additionalProperties": {
3414
+ "type": "array",
3415
+ "items": {
3416
+ "$ref": "#/$defs/external:core~1geo-place-type.json"
3417
+ }
3418
+ }
3419
+ },
3420
+ "system_versions": {
3421
+ "type": "array",
3422
+ "items": {
3423
+ "type": "string"
3424
+ }
3425
+ }
3426
+ },
3427
+ "required": [
3428
+ "countries"
3429
+ ]
3430
+ }
3431
+ }
3432
+ },
3433
+ "external:core/positive-postal-area-support.json": {
3434
+ "allOf": [
3435
+ {
3436
+ "$ref": "#/$defs/external:core~1postal-area-support.json"
3437
+ },
3438
+ {
3439
+ "type": "object",
3440
+ "properties": {
3441
+ "us_zip": {
3442
+ "const": true
3443
+ },
3444
+ "us_zip_plus_four": {
3445
+ "const": true
3446
+ },
3447
+ "gb_outward": {
3448
+ "const": true
3449
+ },
3450
+ "gb_full": {
3451
+ "const": true
3452
+ },
3453
+ "ca_fsa": {
3454
+ "const": true
3455
+ },
3456
+ "ca_full": {
3457
+ "const": true
3458
+ },
3459
+ "de_plz": {
3460
+ "const": true
3461
+ },
3462
+ "fr_code_postal": {
3463
+ "const": true
3464
+ },
3465
+ "au_postcode": {
3466
+ "const": true
3467
+ },
3468
+ "ch_plz": {
3469
+ "const": true
3470
+ },
3471
+ "at_plz": {
3472
+ "const": true
3473
+ }
3474
+ }
3475
+ }
3476
+ ]
3477
+ },
3478
+ "external:core/postal-area-support.json": {
3479
+ "type": "object",
3480
+ "properties": {
3481
+ "US": {
3482
+ "type": "array",
3483
+ "items": {
3484
+ "enum": [
3485
+ "zip",
3486
+ "zip_plus_four"
3487
+ ]
3488
+ }
3489
+ },
3490
+ "GB": {
3491
+ "type": "array",
3492
+ "items": {
3493
+ "enum": [
3494
+ "outward",
3495
+ "full"
3496
+ ]
3497
+ }
3498
+ },
3499
+ "CA": {
3500
+ "type": "array",
3501
+ "items": {
3502
+ "enum": [
3503
+ "fsa",
3504
+ "full"
3505
+ ]
3506
+ }
3507
+ },
3508
+ "DE": {
3509
+ "type": "array",
3510
+ "items": {
3511
+ "const": "plz"
3512
+ }
3513
+ },
3514
+ "CH": {
3515
+ "type": "array",
3516
+ "items": {
3517
+ "const": "plz"
3518
+ }
3519
+ },
3520
+ "AT": {
3521
+ "type": "array",
3522
+ "items": {
3523
+ "const": "plz"
3524
+ }
3525
+ },
3526
+ "FR": {
3527
+ "type": "array",
3528
+ "items": {
3529
+ "const": "code_postal"
3530
+ }
3531
+ },
3532
+ "AU": {
3533
+ "type": "array",
3534
+ "items": {
3535
+ "const": "postcode"
3536
+ }
3537
+ },
3538
+ "BR": {
3539
+ "type": "array",
3540
+ "items": {
3541
+ "const": "cep"
3542
+ }
3543
+ },
3544
+ "IN": {
3545
+ "type": "array",
3546
+ "items": {
3547
+ "const": "pin"
3548
+ }
3549
+ },
3550
+ "ZA": {
3551
+ "type": "array",
3552
+ "items": {
3553
+ "const": "postal_code"
3554
+ }
3555
+ },
3556
+ "us_zip": {
3557
+ "type": "boolean"
3558
+ },
3559
+ "us_zip_plus_four": {
3560
+ "type": "boolean"
3561
+ },
3562
+ "gb_outward": {
3563
+ "type": "boolean"
3564
+ },
3565
+ "gb_full": {
3566
+ "type": "boolean"
3567
+ },
3568
+ "ca_fsa": {
3569
+ "type": "boolean"
3570
+ },
3571
+ "ca_full": {
3572
+ "type": "boolean"
3573
+ },
3574
+ "de_plz": {
3575
+ "type": "boolean"
3576
+ },
3577
+ "fr_code_postal": {
3578
+ "type": "boolean"
3579
+ },
3580
+ "au_postcode": {
3581
+ "type": "boolean"
3582
+ },
3583
+ "ch_plz": {
3584
+ "type": "boolean"
3585
+ },
3586
+ "at_plz": {
3587
+ "type": "boolean"
3588
+ }
3589
+ },
3590
+ "propertyNames": {
3591
+ "anyOf": [
3592
+ {},
3593
+ {
3594
+ "$ref": "#/$defs/external:enums~1legacy-postal-system.json"
3595
+ }
3596
+ ]
3597
+ },
3598
+ "additionalProperties": {
3599
+ "type": "array",
3600
+ "items": {
3601
+ "enum": [
3602
+ "postal_code",
3603
+ "custom"
3604
+ ]
3605
+ }
3606
+ }
3607
+ },
3608
+ "external:core/catalog-selection.json": {
3609
+ "type": "object",
3610
+ "properties": {
3611
+ "catalog_id": {
3612
+ "type": "string"
3613
+ },
3614
+ "type": {
3615
+ "$ref": "#/$defs/external:core~1catalog.json/properties/type"
3616
+ },
3617
+ "ids": {
3618
+ "allOf": [
3619
+ {
3620
+ "$ref": "#/$defs/external:core~1catalog.json/properties/ids"
3621
+ }
3622
+ ]
3623
+ },
3624
+ "gtins": {
3625
+ "allOf": [
3626
+ {
3627
+ "$ref": "#/$defs/external:core~1catalog.json/properties/gtins"
3628
+ }
3629
+ ]
3630
+ },
3631
+ "tags": {
3632
+ "allOf": [
3633
+ {
3634
+ "$ref": "#/$defs/external:core~1catalog.json/properties/tags"
3635
+ }
3636
+ ]
3637
+ },
3638
+ "category": {
3639
+ "$ref": "#/$defs/external:core~1catalog.json/properties/category"
3640
+ },
3641
+ "query": {
3642
+ "allOf": [
3643
+ {
3644
+ "$ref": "#/$defs/external:core~1catalog.json/properties/query"
3645
+ }
3646
+ ]
3647
+ }
3648
+ },
3649
+ "required": [
3650
+ "catalog_id"
3651
+ ]
3652
+ },
3653
+ "external:core/catalog.json": {
3654
+ "type": "object",
3655
+ "properties": {
3656
+ "catalog_id": {
3657
+ "type": "string"
3658
+ },
3659
+ "name": {
3660
+ "type": "string"
3661
+ },
3662
+ "type": {
3663
+ "$ref": "#/$defs/external:enums~1catalog-type.json"
3664
+ },
3665
+ "url": {
3666
+ "type": "string"
3667
+ },
3668
+ "feed_format": {
3669
+ "$ref": "#/$defs/external:enums~1feed-format.json"
3670
+ },
3671
+ "update_frequency": {
3672
+ "$ref": "#/$defs/external:enums~1update-frequency.json"
3673
+ },
3674
+ "items": {
3675
+ "type": "array",
3676
+ "items": {
3677
+ "type": "object"
3678
+ }
3679
+ },
3680
+ "ids": {
3681
+ "type": "array",
3682
+ "items": {
3683
+ "type": "string"
3684
+ }
3685
+ },
3686
+ "gtins": {
3687
+ "type": "array",
3688
+ "items": {
3689
+ "type": "string"
3690
+ }
3691
+ },
3692
+ "tags": {
3693
+ "type": "array",
3694
+ "items": {
3695
+ "type": "string"
3696
+ }
3697
+ },
3698
+ "category": {
3699
+ "type": "string"
3700
+ },
3701
+ "query": {
3702
+ "type": "string"
3703
+ },
3704
+ "conversion_events": {
3705
+ "type": "array",
3706
+ "items": {
3707
+ "$ref": "#/$defs/external:enums~1event-type.json"
3708
+ }
3709
+ },
3710
+ "content_id_type": {
3711
+ "$ref": "#/$defs/external:enums~1content-id-type.json"
3712
+ },
3713
+ "feed_field_mappings": {
3714
+ "type": "array",
3715
+ "items": {
3716
+ "$ref": "#/$defs/external:core~1catalog-field-mapping.json"
3717
+ }
3718
+ }
3719
+ },
3720
+ "required": [
3721
+ "type"
3722
+ ],
3723
+ "additionalProperties": true
3724
+ },
3725
+ "external:enums/catalog-type.json": {
3726
+ "type": "string",
3727
+ "enum": [
3728
+ "offering",
3729
+ "product",
3730
+ "inventory",
3731
+ "store",
3732
+ "promotion",
3733
+ "hotel",
3734
+ "flight",
3735
+ "job",
3736
+ "vehicle",
3737
+ "real_estate",
3738
+ "education",
3739
+ "destination",
3740
+ "app"
3741
+ ]
3742
+ },
3743
+ "external:enums/feed-format.json": {
3744
+ "type": "string",
3745
+ "enum": [
3746
+ "google_merchant_center",
3747
+ "facebook_catalog",
3748
+ "shopify",
3749
+ "linkedin_jobs",
3750
+ "tiktok_shop",
3751
+ "pinterest_catalog",
3752
+ "openai_product_feed",
3753
+ "custom"
3754
+ ]
3755
+ },
3756
+ "external:enums/update-frequency.json": {
3757
+ "type": "string",
3758
+ "enum": [
3759
+ "realtime",
3760
+ "hourly",
3761
+ "daily",
3762
+ "weekly"
3763
+ ]
3764
+ },
3765
+ "external:enums/event-type.json": {
3766
+ "type": "string",
3767
+ "enum": [
3768
+ "page_view",
3769
+ "view_content",
3770
+ "select_content",
3771
+ "select_item",
3772
+ "search",
3773
+ "share",
3774
+ "add_to_cart",
3775
+ "remove_from_cart",
3776
+ "viewed_cart",
3777
+ "add_to_wishlist",
3778
+ "initiate_checkout",
3779
+ "add_payment_info",
3780
+ "purchase",
3781
+ "refund",
3782
+ "lead",
3783
+ "qualify_lead",
3784
+ "close_convert_lead",
3785
+ "disqualify_lead",
3786
+ "complete_registration",
3787
+ "subscribe",
3788
+ "follow",
3789
+ "content_view",
3790
+ "watch_milestone",
3791
+ "start_trial",
3792
+ "app_install",
3793
+ "app_launch",
3794
+ "contact",
3795
+ "schedule",
3796
+ "donate",
3797
+ "submit_application",
3798
+ "custom"
3799
+ ]
3800
+ },
3801
+ "external:enums/content-id-type.json": {
3802
+ "type": "string",
3803
+ "enum": [
3804
+ "sku",
3805
+ "gtin",
3806
+ "offering_id",
3807
+ "job_id",
3808
+ "hotel_id",
3809
+ "flight_id",
3810
+ "vehicle_id",
3811
+ "listing_id",
3812
+ "store_id",
3813
+ "program_id",
3814
+ "destination_id",
3815
+ "app_id"
3816
+ ]
3817
+ },
3818
+ "external:core/catalog-field-mapping.json": {
3819
+ "type": "object",
3820
+ "properties": {
3821
+ "feed_field": {
3822
+ "type": "string"
3823
+ },
3824
+ "catalog_field": {
3825
+ "type": "string"
3826
+ },
3827
+ "asset_group_id": {
3828
+ "type": "string"
3829
+ },
3830
+ "value": {},
3831
+ "transform": {
3832
+ "type": "string",
3833
+ "enum": [
3834
+ "date",
3835
+ "divide",
3836
+ "boolean",
3837
+ "split"
3838
+ ]
3839
+ },
3840
+ "format": {
3841
+ "type": "string"
3842
+ },
3843
+ "timezone": {
3844
+ "type": "string"
3845
+ },
3846
+ "by": {
3847
+ "type": "number"
3848
+ },
3849
+ "separator": {
3850
+ "type": "string"
3851
+ },
3852
+ "default": {},
3853
+ "ext": {
3854
+ "$ref": "#/$defs/external:core~1ext.json"
3855
+ }
3856
+ },
3857
+ "allOf": [
3858
+ {
3859
+ "not": {
3860
+ "required": [
3861
+ "feed_field",
3862
+ "value"
3863
+ ]
3864
+ }
3865
+ },
3866
+ {
3867
+ "not": {
3868
+ "required": [
3869
+ "catalog_field",
3870
+ "asset_group_id"
3871
+ ]
3872
+ }
3873
+ }
3874
+ ],
3875
+ "additionalProperties": true
3876
+ }
3877
+ }
3878
+ }