@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,3030 @@
1
+ {
2
+ "type": "object",
3
+ "properties": {
4
+ "adcp_version": {
5
+ "$ref": "#/$defs/external:core~1version-envelope.json/properties/adcp_version"
6
+ },
7
+ "idempotency_key": {
8
+ "type": "string"
9
+ },
10
+ "account": {
11
+ "$ref": "#/$defs/external:core~1canonical-account-ref.json"
12
+ },
13
+ "media_buy_id": {
14
+ "type": "string"
15
+ },
16
+ "revision": {
17
+ "type": "integer"
18
+ },
19
+ "paused": {
20
+ "type": "boolean"
21
+ },
22
+ "canceled": {
23
+ "type": "boolean",
24
+ "const": true
25
+ },
26
+ "cancellation_reason": {
27
+ "type": "string"
28
+ },
29
+ "total_budget": {
30
+ "type": "object",
31
+ "properties": {
32
+ "amount": {
33
+ "type": "number"
34
+ },
35
+ "currency": {
36
+ "type": "string"
37
+ }
38
+ },
39
+ "required": [
40
+ "amount",
41
+ "currency"
42
+ ]
43
+ },
44
+ "daily_budget_cap": {
45
+ "type": [
46
+ "number",
47
+ "null"
48
+ ]
49
+ },
50
+ "budget_cap_timezone": {
51
+ "type": [
52
+ "string",
53
+ "null"
54
+ ]
55
+ },
56
+ "budget_allocation": {
57
+ "$ref": "#/$defs/external:core~1canonical-budget-allocation.json"
58
+ },
59
+ "pacing": {
60
+ "$ref": "#/$defs/external:enums~1pacing.json"
61
+ },
62
+ "bidding": {
63
+ "anyOf": [
64
+ {
65
+ "$ref": "#/$defs/external:core~1bidding-policy.json"
66
+ },
67
+ {
68
+ "type": "null"
69
+ }
70
+ ]
71
+ },
72
+ "packages": {
73
+ "type": "array",
74
+ "items": {
75
+ "$ref": "#/$defs/external:media-buy~1package-control.json"
76
+ }
77
+ },
78
+ "reporting_webhook": {
79
+ "$ref": "#/$defs/external:core~1reporting-webhook.json"
80
+ },
81
+ "governance_context": {
82
+ "type": "string"
83
+ },
84
+ "push_notification_config": {
85
+ "$ref": "#/$defs/external:core~1push-notification-config.json"
86
+ },
87
+ "context": {
88
+ "$ref": "#/$defs/external:core~1context.json"
89
+ },
90
+ "ext": {
91
+ "$ref": "#/$defs/external:core~1ext.json"
92
+ }
93
+ },
94
+ "required": [
95
+ "idempotency_key",
96
+ "account",
97
+ "media_buy_id",
98
+ "revision"
99
+ ],
100
+ "anyOf": [
101
+ {
102
+ "required": [
103
+ "paused"
104
+ ]
105
+ },
106
+ {
107
+ "required": [
108
+ "canceled"
109
+ ]
110
+ },
111
+ {
112
+ "required": [
113
+ "total_budget"
114
+ ]
115
+ },
116
+ {
117
+ "required": [
118
+ "daily_budget_cap"
119
+ ]
120
+ },
121
+ {
122
+ "required": [
123
+ "budget_cap_timezone"
124
+ ]
125
+ },
126
+ {
127
+ "required": [
128
+ "budget_allocation"
129
+ ]
130
+ },
131
+ {
132
+ "required": [
133
+ "pacing"
134
+ ]
135
+ },
136
+ {
137
+ "required": [
138
+ "bidding"
139
+ ]
140
+ },
141
+ {
142
+ "required": [
143
+ "packages"
144
+ ]
145
+ },
146
+ {
147
+ "required": [
148
+ "reporting_webhook"
149
+ ]
150
+ }
151
+ ],
152
+ "allOf": [
153
+ {
154
+ "if": {
155
+ "required": [
156
+ "cancellation_reason"
157
+ ]
158
+ },
159
+ "then": {
160
+ "required": [
161
+ "canceled"
162
+ ]
163
+ }
164
+ },
165
+ {
166
+ "if": {
167
+ "required": [
168
+ "canceled"
169
+ ]
170
+ },
171
+ "then": {
172
+ "not": {
173
+ "anyOf": [
174
+ {
175
+ "required": [
176
+ "paused"
177
+ ]
178
+ },
179
+ {
180
+ "required": [
181
+ "total_budget"
182
+ ]
183
+ },
184
+ {
185
+ "required": [
186
+ "daily_budget_cap"
187
+ ]
188
+ },
189
+ {
190
+ "required": [
191
+ "budget_cap_timezone"
192
+ ]
193
+ },
194
+ {
195
+ "required": [
196
+ "budget_allocation"
197
+ ]
198
+ },
199
+ {
200
+ "required": [
201
+ "pacing"
202
+ ]
203
+ },
204
+ {
205
+ "required": [
206
+ "bidding"
207
+ ]
208
+ },
209
+ {
210
+ "required": [
211
+ "packages"
212
+ ]
213
+ },
214
+ {
215
+ "required": [
216
+ "reporting_webhook"
217
+ ]
218
+ }
219
+ ]
220
+ }
221
+ }
222
+ }
223
+ ],
224
+ "not": {
225
+ "anyOf": [
226
+ {
227
+ "required": [
228
+ "creatives"
229
+ ]
230
+ },
231
+ {
232
+ "required": [
233
+ "creative_assignments"
234
+ ]
235
+ },
236
+ {
237
+ "required": [
238
+ "new_packages"
239
+ ]
240
+ },
241
+ {
242
+ "required": [
243
+ "start_time"
244
+ ]
245
+ },
246
+ {
247
+ "required": [
248
+ "end_time"
249
+ ]
250
+ },
251
+ {
252
+ "required": [
253
+ "invoice_recipient"
254
+ ]
255
+ }
256
+ ]
257
+ },
258
+ "$defs": {
259
+ "external:core/version-envelope.json": {
260
+ "type": "object",
261
+ "properties": {
262
+ "adcp_version": {
263
+ "type": "string"
264
+ },
265
+ "adcp_major_version": {
266
+ "type": "integer"
267
+ }
268
+ }
269
+ },
270
+ "external:core/canonical-account-ref.json": {
271
+ "type": "object",
272
+ "anyOf": [
273
+ {
274
+ "properties": {
275
+ "account_id": {
276
+ "type": "string"
277
+ }
278
+ },
279
+ "required": [
280
+ "account_id"
281
+ ]
282
+ },
283
+ {
284
+ "properties": {
285
+ "brand": {
286
+ "$ref": "#/$defs/external:core~1brand-key.json"
287
+ },
288
+ "operator": {
289
+ "type": "string"
290
+ },
291
+ "operator_unit": {
292
+ "$ref": "#/$defs/external:core~1operator-unit.json"
293
+ },
294
+ "currency": {
295
+ "type": "string"
296
+ },
297
+ "timezone": {
298
+ "type": "string"
299
+ },
300
+ "sandbox": {
301
+ "type": "boolean"
302
+ }
303
+ },
304
+ "required": [
305
+ "brand",
306
+ "operator"
307
+ ]
308
+ }
309
+ ]
310
+ },
311
+ "external:core/brand-key.json": {
312
+ "type": "object",
313
+ "properties": {
314
+ "domain": {
315
+ "type": "string"
316
+ },
317
+ "brand_id": {
318
+ "$ref": "#/$defs/external:core~1brand-id.json"
319
+ },
320
+ "countries": {
321
+ "type": "array",
322
+ "items": {
323
+ "type": "string"
324
+ }
325
+ }
326
+ },
327
+ "required": [
328
+ "domain"
329
+ ]
330
+ },
331
+ "external:core/brand-id.json": {
332
+ "type": "string"
333
+ },
334
+ "external:core/operator-unit.json": {
335
+ "type": "object",
336
+ "properties": {
337
+ "id": {
338
+ "type": "string"
339
+ },
340
+ "name": {
341
+ "type": "string"
342
+ }
343
+ },
344
+ "required": [
345
+ "id"
346
+ ]
347
+ },
348
+ "external:core/canonical-budget-allocation.json": {
349
+ "discriminator": {
350
+ "propertyName": "mode"
351
+ },
352
+ "oneOf": [
353
+ {
354
+ "type": "object",
355
+ "properties": {
356
+ "mode": {
357
+ "type": "string",
358
+ "const": "fixed"
359
+ }
360
+ },
361
+ "required": [
362
+ "mode"
363
+ ]
364
+ },
365
+ {
366
+ "type": "object",
367
+ "properties": {
368
+ "mode": {
369
+ "type": "string",
370
+ "const": "seller_optimized"
371
+ },
372
+ "optimization_goals": {
373
+ "type": "array",
374
+ "items": {
375
+ "$ref": "#/$defs/external:core~1canonical-optimization-goal.json"
376
+ }
377
+ }
378
+ },
379
+ "required": [
380
+ "mode",
381
+ "optimization_goals"
382
+ ]
383
+ }
384
+ ]
385
+ },
386
+ "external:core/canonical-optimization-goal.json": {
387
+ "discriminator": {
388
+ "propertyName": "kind"
389
+ },
390
+ "oneOf": [
391
+ {
392
+ "type": "object",
393
+ "properties": {
394
+ "kind": {
395
+ "type": "string",
396
+ "const": "metric"
397
+ },
398
+ "metric": {
399
+ "type": "string",
400
+ "enum": [
401
+ "clicks",
402
+ "views",
403
+ "completed_views",
404
+ "viewed_seconds",
405
+ "engagements",
406
+ "follows",
407
+ "saves",
408
+ "profile_visits",
409
+ "reach"
410
+ ]
411
+ },
412
+ "reach_unit": {
413
+ "$ref": "#/$defs/external:enums~1reach-unit.json"
414
+ },
415
+ "target_frequency": {
416
+ "type": "object",
417
+ "properties": {
418
+ "min": {
419
+ "type": "integer"
420
+ },
421
+ "max": {
422
+ "type": "integer"
423
+ },
424
+ "window": {
425
+ "$ref": "#/$defs/external:core~1duration.json"
426
+ }
427
+ },
428
+ "required": [
429
+ "window"
430
+ ],
431
+ "anyOf": [
432
+ {
433
+ "required": [
434
+ "min"
435
+ ]
436
+ },
437
+ {
438
+ "required": [
439
+ "max"
440
+ ]
441
+ }
442
+ ]
443
+ },
444
+ "view_duration_seconds": {
445
+ "type": "number"
446
+ },
447
+ "target": {
448
+ "type": "object",
449
+ "properties": {
450
+ "kind": {
451
+ "type": "string",
452
+ "const": "threshold_rate"
453
+ },
454
+ "value": {
455
+ "type": "number"
456
+ }
457
+ },
458
+ "required": [
459
+ "kind",
460
+ "value"
461
+ ]
462
+ },
463
+ "priority": {
464
+ "type": "integer"
465
+ }
466
+ },
467
+ "required": [
468
+ "kind",
469
+ "metric"
470
+ ]
471
+ },
472
+ {
473
+ "type": "object",
474
+ "properties": {
475
+ "kind": {
476
+ "type": "string",
477
+ "const": "event"
478
+ },
479
+ "event_sources": {
480
+ "type": "array",
481
+ "items": {
482
+ "type": "object",
483
+ "properties": {
484
+ "event_source_id": {
485
+ "type": "string"
486
+ },
487
+ "event_type": {
488
+ "$ref": "#/$defs/external:enums~1event-type.json"
489
+ },
490
+ "custom_event_name": {
491
+ "type": "string"
492
+ },
493
+ "value_field": {
494
+ "type": "string"
495
+ },
496
+ "value_factor": {
497
+ "type": "number"
498
+ }
499
+ },
500
+ "required": [
501
+ "event_source_id",
502
+ "event_type"
503
+ ]
504
+ }
505
+ },
506
+ "target": {
507
+ "type": "object",
508
+ "properties": {
509
+ "kind": {
510
+ "type": "string",
511
+ "const": "maximize_value"
512
+ }
513
+ },
514
+ "required": [
515
+ "kind"
516
+ ]
517
+ },
518
+ "attribution_window": {
519
+ "$ref": "#/$defs/external:core~1attribution-window.json"
520
+ },
521
+ "priority": {
522
+ "type": "integer"
523
+ }
524
+ },
525
+ "required": [
526
+ "kind",
527
+ "event_sources"
528
+ ]
529
+ },
530
+ {
531
+ "type": "object",
532
+ "properties": {
533
+ "kind": {
534
+ "type": "string",
535
+ "const": "vendor_metric"
536
+ },
537
+ "vendor": {
538
+ "$ref": "#/$defs/external:core~1brand-key.json"
539
+ },
540
+ "metric_id": {
541
+ "$ref": "#/$defs/external:core~1vendor-metric-id.json"
542
+ },
543
+ "target": {
544
+ "type": "object",
545
+ "properties": {
546
+ "kind": {
547
+ "type": "string",
548
+ "const": "threshold_rate"
549
+ },
550
+ "value": {
551
+ "type": "number"
552
+ }
553
+ },
554
+ "required": [
555
+ "kind",
556
+ "value"
557
+ ]
558
+ },
559
+ "priority": {
560
+ "type": "integer"
561
+ }
562
+ },
563
+ "required": [
564
+ "kind",
565
+ "vendor",
566
+ "metric_id"
567
+ ]
568
+ }
569
+ ]
570
+ },
571
+ "external:enums/reach-unit.json": {
572
+ "type": "string",
573
+ "enum": [
574
+ "individuals",
575
+ "households",
576
+ "devices",
577
+ "accounts",
578
+ "cookies",
579
+ "custom"
580
+ ]
581
+ },
582
+ "external:core/duration.json": {
583
+ "type": "object",
584
+ "properties": {
585
+ "interval": {
586
+ "type": "integer"
587
+ },
588
+ "unit": {
589
+ "type": "string",
590
+ "enum": [
591
+ "seconds",
592
+ "minutes",
593
+ "hours",
594
+ "days",
595
+ "campaign"
596
+ ]
597
+ }
598
+ },
599
+ "required": [
600
+ "interval",
601
+ "unit"
602
+ ]
603
+ },
604
+ "external:enums/event-type.json": {
605
+ "type": "string",
606
+ "enum": [
607
+ "page_view",
608
+ "view_content",
609
+ "select_content",
610
+ "select_item",
611
+ "search",
612
+ "share",
613
+ "add_to_cart",
614
+ "remove_from_cart",
615
+ "viewed_cart",
616
+ "add_to_wishlist",
617
+ "initiate_checkout",
618
+ "add_payment_info",
619
+ "purchase",
620
+ "refund",
621
+ "lead",
622
+ "qualify_lead",
623
+ "close_convert_lead",
624
+ "disqualify_lead",
625
+ "complete_registration",
626
+ "subscribe",
627
+ "follow",
628
+ "content_view",
629
+ "watch_milestone",
630
+ "start_trial",
631
+ "app_install",
632
+ "app_launch",
633
+ "contact",
634
+ "schedule",
635
+ "donate",
636
+ "submit_application",
637
+ "custom"
638
+ ]
639
+ },
640
+ "external:core/attribution-window.json": {
641
+ "type": "object",
642
+ "properties": {
643
+ "post_click": {
644
+ "allOf": [
645
+ {
646
+ "$ref": "#/$defs/external:core~1duration.json"
647
+ }
648
+ ]
649
+ },
650
+ "post_view": {
651
+ "allOf": [
652
+ {
653
+ "$ref": "#/$defs/external:core~1duration.json"
654
+ }
655
+ ]
656
+ },
657
+ "model": {
658
+ "$ref": "#/$defs/external:enums~1attribution-model.json"
659
+ }
660
+ },
661
+ "additionalProperties": true
662
+ },
663
+ "external:enums/attribution-model.json": {
664
+ "type": "string",
665
+ "enum": [
666
+ "last_touch",
667
+ "first_touch",
668
+ "linear",
669
+ "time_decay",
670
+ "data_driven"
671
+ ]
672
+ },
673
+ "external:core/vendor-metric-id.json": {
674
+ "type": "string"
675
+ },
676
+ "external:enums/pacing.json": {
677
+ "type": "string",
678
+ "enum": [
679
+ "even",
680
+ "asap",
681
+ "front_loaded"
682
+ ]
683
+ },
684
+ "external:core/bidding-policy.json": {
685
+ "type": "object",
686
+ "properties": {
687
+ "automatic": {
688
+ "type": "boolean",
689
+ "const": true
690
+ },
691
+ "bid_amount": {
692
+ "type": "number"
693
+ },
694
+ "max_bid": {
695
+ "type": "number"
696
+ },
697
+ "cost_per": {
698
+ "type": "object",
699
+ "properties": {
700
+ "amount": {
701
+ "type": "number"
702
+ },
703
+ "strength": {
704
+ "type": "string",
705
+ "enum": [
706
+ "cap",
707
+ "target"
708
+ ]
709
+ }
710
+ },
711
+ "required": [
712
+ "amount",
713
+ "strength"
714
+ ]
715
+ },
716
+ "roas": {
717
+ "type": "object",
718
+ "properties": {
719
+ "value": {
720
+ "type": "number"
721
+ },
722
+ "strength": {
723
+ "type": "string",
724
+ "enum": [
725
+ "floor",
726
+ "target"
727
+ ]
728
+ }
729
+ },
730
+ "required": [
731
+ "value",
732
+ "strength"
733
+ ]
734
+ }
735
+ },
736
+ "allOf": [
737
+ {
738
+ "not": {
739
+ "anyOf": [
740
+ {
741
+ "required": [
742
+ "automatic",
743
+ "bid_amount"
744
+ ]
745
+ },
746
+ {
747
+ "required": [
748
+ "automatic",
749
+ "max_bid"
750
+ ]
751
+ },
752
+ {
753
+ "required": [
754
+ "automatic",
755
+ "cost_per"
756
+ ]
757
+ },
758
+ {
759
+ "required": [
760
+ "automatic",
761
+ "roas"
762
+ ]
763
+ },
764
+ {
765
+ "required": [
766
+ "bid_amount",
767
+ "max_bid"
768
+ ]
769
+ },
770
+ {
771
+ "required": [
772
+ "bid_amount",
773
+ "cost_per"
774
+ ]
775
+ },
776
+ {
777
+ "required": [
778
+ "bid_amount",
779
+ "roas"
780
+ ]
781
+ },
782
+ {
783
+ "required": [
784
+ "cost_per",
785
+ "roas"
786
+ ]
787
+ }
788
+ ]
789
+ }
790
+ }
791
+ ]
792
+ },
793
+ "external:media-buy/package-control.json": {
794
+ "type": "object",
795
+ "properties": {
796
+ "package_id": {
797
+ "type": "string"
798
+ },
799
+ "budget": {
800
+ "type": [
801
+ "number",
802
+ "null"
803
+ ]
804
+ },
805
+ "daily_budget_cap": {
806
+ "type": [
807
+ "number",
808
+ "null"
809
+ ]
810
+ },
811
+ "min_spend_target": {
812
+ "type": [
813
+ "number",
814
+ "null"
815
+ ]
816
+ },
817
+ "impressions": {
818
+ "type": "number"
819
+ },
820
+ "pacing": {
821
+ "$ref": "#/$defs/external:enums~1pacing.json"
822
+ },
823
+ "bidding": {
824
+ "anyOf": [
825
+ {
826
+ "$ref": "#/$defs/external:core~1bidding-policy.json"
827
+ },
828
+ {
829
+ "type": "null"
830
+ }
831
+ ]
832
+ },
833
+ "paused": {
834
+ "type": "boolean"
835
+ },
836
+ "canceled": {
837
+ "type": "boolean",
838
+ "const": true
839
+ },
840
+ "cancellation_reason": {
841
+ "type": "string"
842
+ },
843
+ "targeting_overlay": {
844
+ "$ref": "#/$defs/external:core~1targeting.json"
845
+ },
846
+ "catalog_ids": {
847
+ "type": "array",
848
+ "items": {
849
+ "type": "string"
850
+ }
851
+ },
852
+ "keyword_targets_add": {
853
+ "type": "array",
854
+ "items": {
855
+ "$ref": "#/$defs/external:core~1keyword-target.json"
856
+ }
857
+ },
858
+ "keyword_targets_remove": {
859
+ "type": "array",
860
+ "items": {
861
+ "$ref": "#/$defs/external:core~1keyword-target.json"
862
+ }
863
+ },
864
+ "negative_keywords_add": {
865
+ "type": "array",
866
+ "items": {
867
+ "$ref": "#/$defs/external:core~1keyword-target.json"
868
+ }
869
+ },
870
+ "negative_keywords_remove": {
871
+ "type": "array",
872
+ "items": {
873
+ "$ref": "#/$defs/external:core~1keyword-target.json"
874
+ }
875
+ },
876
+ "optimization_goals": {
877
+ "type": "array",
878
+ "items": {
879
+ "$ref": "#/$defs/external:core~1canonical-optimization-goal.json"
880
+ }
881
+ }
882
+ },
883
+ "required": [
884
+ "package_id"
885
+ ],
886
+ "anyOf": [
887
+ {
888
+ "required": [
889
+ "budget"
890
+ ]
891
+ },
892
+ {
893
+ "required": [
894
+ "daily_budget_cap"
895
+ ]
896
+ },
897
+ {
898
+ "required": [
899
+ "min_spend_target"
900
+ ]
901
+ },
902
+ {
903
+ "required": [
904
+ "impressions"
905
+ ]
906
+ },
907
+ {
908
+ "required": [
909
+ "pacing"
910
+ ]
911
+ },
912
+ {
913
+ "required": [
914
+ "bidding"
915
+ ]
916
+ },
917
+ {
918
+ "required": [
919
+ "paused"
920
+ ]
921
+ },
922
+ {
923
+ "required": [
924
+ "canceled"
925
+ ]
926
+ },
927
+ {
928
+ "required": [
929
+ "targeting_overlay"
930
+ ]
931
+ },
932
+ {
933
+ "required": [
934
+ "catalog_ids"
935
+ ]
936
+ },
937
+ {
938
+ "required": [
939
+ "keyword_targets_add"
940
+ ]
941
+ },
942
+ {
943
+ "required": [
944
+ "keyword_targets_remove"
945
+ ]
946
+ },
947
+ {
948
+ "required": [
949
+ "negative_keywords_add"
950
+ ]
951
+ },
952
+ {
953
+ "required": [
954
+ "negative_keywords_remove"
955
+ ]
956
+ },
957
+ {
958
+ "required": [
959
+ "optimization_goals"
960
+ ]
961
+ }
962
+ ],
963
+ "allOf": [
964
+ {
965
+ "if": {
966
+ "required": [
967
+ "targeting_overlay"
968
+ ]
969
+ },
970
+ "then": {
971
+ "not": {
972
+ "anyOf": [
973
+ {
974
+ "required": [
975
+ "keyword_targets_add"
976
+ ]
977
+ },
978
+ {
979
+ "required": [
980
+ "keyword_targets_remove"
981
+ ]
982
+ },
983
+ {
984
+ "required": [
985
+ "negative_keywords_add"
986
+ ]
987
+ },
988
+ {
989
+ "required": [
990
+ "negative_keywords_remove"
991
+ ]
992
+ }
993
+ ]
994
+ }
995
+ }
996
+ },
997
+ {
998
+ "if": {
999
+ "required": [
1000
+ "cancellation_reason"
1001
+ ]
1002
+ },
1003
+ "then": {
1004
+ "required": [
1005
+ "canceled"
1006
+ ]
1007
+ }
1008
+ },
1009
+ {
1010
+ "if": {
1011
+ "required": [
1012
+ "canceled"
1013
+ ]
1014
+ },
1015
+ "then": {
1016
+ "not": {
1017
+ "anyOf": [
1018
+ {
1019
+ "required": [
1020
+ "budget"
1021
+ ]
1022
+ },
1023
+ {
1024
+ "required": [
1025
+ "daily_budget_cap"
1026
+ ]
1027
+ },
1028
+ {
1029
+ "required": [
1030
+ "min_spend_target"
1031
+ ]
1032
+ },
1033
+ {
1034
+ "required": [
1035
+ "impressions"
1036
+ ]
1037
+ },
1038
+ {
1039
+ "required": [
1040
+ "pacing"
1041
+ ]
1042
+ },
1043
+ {
1044
+ "required": [
1045
+ "bidding"
1046
+ ]
1047
+ },
1048
+ {
1049
+ "required": [
1050
+ "paused"
1051
+ ]
1052
+ },
1053
+ {
1054
+ "required": [
1055
+ "targeting_overlay"
1056
+ ]
1057
+ },
1058
+ {
1059
+ "required": [
1060
+ "catalog_ids"
1061
+ ]
1062
+ },
1063
+ {
1064
+ "required": [
1065
+ "keyword_targets_add"
1066
+ ]
1067
+ },
1068
+ {
1069
+ "required": [
1070
+ "keyword_targets_remove"
1071
+ ]
1072
+ },
1073
+ {
1074
+ "required": [
1075
+ "negative_keywords_add"
1076
+ ]
1077
+ },
1078
+ {
1079
+ "required": [
1080
+ "negative_keywords_remove"
1081
+ ]
1082
+ },
1083
+ {
1084
+ "required": [
1085
+ "optimization_goals"
1086
+ ]
1087
+ }
1088
+ ]
1089
+ }
1090
+ }
1091
+ }
1092
+ ],
1093
+ "not": {
1094
+ "anyOf": [
1095
+ {
1096
+ "required": [
1097
+ "creatives"
1098
+ ]
1099
+ },
1100
+ {
1101
+ "required": [
1102
+ "creative_assignments"
1103
+ ]
1104
+ },
1105
+ {
1106
+ "required": [
1107
+ "start_time"
1108
+ ]
1109
+ },
1110
+ {
1111
+ "required": [
1112
+ "end_time"
1113
+ ]
1114
+ },
1115
+ {
1116
+ "required": [
1117
+ "product_id"
1118
+ ]
1119
+ },
1120
+ {
1121
+ "required": [
1122
+ "pricing_option_id"
1123
+ ]
1124
+ },
1125
+ {
1126
+ "required": [
1127
+ "catalogs"
1128
+ ]
1129
+ }
1130
+ ]
1131
+ }
1132
+ },
1133
+ "external:core/targeting.json": {
1134
+ "type": "object",
1135
+ "properties": {
1136
+ "geo_countries": {
1137
+ "type": "array",
1138
+ "items": {
1139
+ "type": "string"
1140
+ }
1141
+ },
1142
+ "geo_countries_exclude": {
1143
+ "type": "array",
1144
+ "items": {
1145
+ "type": "string"
1146
+ }
1147
+ },
1148
+ "geo_regions": {
1149
+ "type": "array",
1150
+ "items": {
1151
+ "type": "string"
1152
+ }
1153
+ },
1154
+ "geo_regions_exclude": {
1155
+ "type": "array",
1156
+ "items": {
1157
+ "type": "string"
1158
+ }
1159
+ },
1160
+ "geo_metros": {
1161
+ "type": "array",
1162
+ "items": {
1163
+ "type": "object",
1164
+ "properties": {
1165
+ "system": {
1166
+ "$ref": "#/$defs/external:enums~1metro-system.json"
1167
+ },
1168
+ "values": {
1169
+ "type": "array",
1170
+ "items": {
1171
+ "type": "string"
1172
+ }
1173
+ }
1174
+ },
1175
+ "required": [
1176
+ "system",
1177
+ "values"
1178
+ ]
1179
+ }
1180
+ },
1181
+ "geo_metros_exclude": {
1182
+ "type": "array",
1183
+ "items": {
1184
+ "type": "object",
1185
+ "properties": {
1186
+ "system": {
1187
+ "$ref": "#/$defs/external:enums~1metro-system.json"
1188
+ },
1189
+ "values": {
1190
+ "type": "array",
1191
+ "items": {
1192
+ "type": "string"
1193
+ }
1194
+ }
1195
+ },
1196
+ "required": [
1197
+ "system",
1198
+ "values"
1199
+ ]
1200
+ }
1201
+ },
1202
+ "geo_postal_areas": {
1203
+ "type": "array",
1204
+ "items": {
1205
+ "$ref": "#/$defs/external:core~1postal-area.json"
1206
+ }
1207
+ },
1208
+ "geo_postal_areas_exclude": {
1209
+ "type": "array",
1210
+ "items": {
1211
+ "$ref": "#/$defs/external:core~1postal-area.json"
1212
+ }
1213
+ },
1214
+ "geo_places": {
1215
+ "type": "array",
1216
+ "items": {
1217
+ "$ref": "#/$defs/external:core~1geo-place-area.json"
1218
+ }
1219
+ },
1220
+ "geo_places_exclude": {
1221
+ "type": "array",
1222
+ "items": {
1223
+ "$ref": "#/$defs/external:core~1geo-place-area.json"
1224
+ }
1225
+ },
1226
+ "daypart_targets": {
1227
+ "type": "array",
1228
+ "items": {
1229
+ "$ref": "#/$defs/external:core~1daypart-target.json"
1230
+ }
1231
+ },
1232
+ "axe_include_segment": {
1233
+ "type": "string"
1234
+ },
1235
+ "axe_exclude_segment": {
1236
+ "type": "string"
1237
+ },
1238
+ "audience_include": {
1239
+ "type": "array",
1240
+ "items": {
1241
+ "type": "string"
1242
+ }
1243
+ },
1244
+ "audience_exclude": {
1245
+ "type": "array",
1246
+ "items": {
1247
+ "type": "string"
1248
+ }
1249
+ },
1250
+ "signal_targeting_groups": {
1251
+ "$ref": "#/$defs/external:core~1package-signal-targeting-groups.json"
1252
+ },
1253
+ "signal_targeting": {
1254
+ "type": "array",
1255
+ "items": {
1256
+ "$ref": "#/$defs/external:core~1signal-targeting.json"
1257
+ }
1258
+ },
1259
+ "demographics": {
1260
+ "$ref": "#/$defs/external:core~1demographic-targeting-intent.json"
1261
+ },
1262
+ "frequency_cap": {
1263
+ "$ref": "#/$defs/external:core~1frequency-cap.json"
1264
+ },
1265
+ "property_list": {
1266
+ "$ref": "#/$defs/external:core~1property-list-ref.json"
1267
+ },
1268
+ "property_list_exclude": {
1269
+ "$ref": "#/$defs/external:core~1property-list-ref.json"
1270
+ },
1271
+ "collection_list": {
1272
+ "$ref": "#/$defs/external:core~1collection-list-ref.json"
1273
+ },
1274
+ "collection_list_exclude": {
1275
+ "$ref": "#/$defs/external:core~1collection-list-ref.json"
1276
+ },
1277
+ "placement_selection": {
1278
+ "$ref": "#/$defs/external:core~1placement-selection.json"
1279
+ },
1280
+ "age_restriction": {
1281
+ "type": "object",
1282
+ "properties": {
1283
+ "min": {
1284
+ "type": "integer"
1285
+ },
1286
+ "verification_required": {
1287
+ "type": "boolean"
1288
+ },
1289
+ "accepted_methods": {
1290
+ "type": "array",
1291
+ "items": {
1292
+ "$ref": "#/$defs/external:enums~1age-verification-method.json"
1293
+ }
1294
+ }
1295
+ },
1296
+ "required": [
1297
+ "min"
1298
+ ]
1299
+ },
1300
+ "device_platform": {
1301
+ "type": "array",
1302
+ "items": {
1303
+ "$ref": "#/$defs/external:enums~1device-platform.json"
1304
+ }
1305
+ },
1306
+ "device_platform_exclude": {
1307
+ "type": "array",
1308
+ "items": {
1309
+ "$ref": "#/$defs/external:enums~1device-platform.json"
1310
+ }
1311
+ },
1312
+ "device_type": {
1313
+ "type": "array",
1314
+ "items": {
1315
+ "$ref": "#/$defs/external:enums~1device-type.json"
1316
+ }
1317
+ },
1318
+ "device_type_exclude": {
1319
+ "type": "array",
1320
+ "items": {
1321
+ "$ref": "#/$defs/external:enums~1device-type.json"
1322
+ }
1323
+ },
1324
+ "browser": {
1325
+ "type": "array",
1326
+ "items": {
1327
+ "$ref": "#/$defs/external:enums~1browser-family.json"
1328
+ }
1329
+ },
1330
+ "browser_exclude": {
1331
+ "type": "array",
1332
+ "items": {
1333
+ "$ref": "#/$defs/external:enums~1browser-family.json"
1334
+ }
1335
+ },
1336
+ "store_catchments": {
1337
+ "type": "array",
1338
+ "items": {
1339
+ "type": "object",
1340
+ "properties": {
1341
+ "catalog_id": {
1342
+ "type": "string"
1343
+ },
1344
+ "store_ids": {
1345
+ "type": "array",
1346
+ "items": {
1347
+ "type": "string"
1348
+ }
1349
+ },
1350
+ "catchment_ids": {
1351
+ "type": "array",
1352
+ "items": {
1353
+ "type": "string"
1354
+ }
1355
+ }
1356
+ },
1357
+ "required": [
1358
+ "catalog_id"
1359
+ ],
1360
+ "additionalProperties": true
1361
+ }
1362
+ },
1363
+ "geo_proximity": {
1364
+ "type": "array",
1365
+ "items": {
1366
+ "type": "object",
1367
+ "properties": {
1368
+ "lat": {
1369
+ "type": "number"
1370
+ },
1371
+ "lng": {
1372
+ "type": "number"
1373
+ },
1374
+ "label": {
1375
+ "type": "string"
1376
+ },
1377
+ "travel_time": {
1378
+ "type": "object",
1379
+ "properties": {
1380
+ "value": {
1381
+ "type": "number"
1382
+ },
1383
+ "unit": {
1384
+ "$ref": "#/$defs/external:enums~1travel-time-unit.json"
1385
+ }
1386
+ },
1387
+ "required": [
1388
+ "value",
1389
+ "unit"
1390
+ ]
1391
+ },
1392
+ "transport_mode": {
1393
+ "$ref": "#/$defs/external:enums~1transport-mode.json"
1394
+ },
1395
+ "radius": {
1396
+ "type": "object",
1397
+ "properties": {
1398
+ "value": {
1399
+ "type": "number"
1400
+ },
1401
+ "unit": {
1402
+ "$ref": "#/$defs/external:enums~1distance-unit.json"
1403
+ }
1404
+ },
1405
+ "required": [
1406
+ "value",
1407
+ "unit"
1408
+ ]
1409
+ },
1410
+ "geometry": {
1411
+ "type": "object",
1412
+ "properties": {
1413
+ "type": {
1414
+ "type": "string",
1415
+ "enum": [
1416
+ "Polygon",
1417
+ "MultiPolygon"
1418
+ ]
1419
+ },
1420
+ "coordinates": {
1421
+ "type": "array"
1422
+ }
1423
+ },
1424
+ "required": [
1425
+ "type",
1426
+ "coordinates"
1427
+ ]
1428
+ },
1429
+ "ext": {
1430
+ "$ref": "#/$defs/external:core~1ext.json"
1431
+ }
1432
+ },
1433
+ "oneOf": [
1434
+ {
1435
+ "required": [
1436
+ "lat",
1437
+ "lng",
1438
+ "travel_time",
1439
+ "transport_mode"
1440
+ ],
1441
+ "not": {
1442
+ "anyOf": [
1443
+ {
1444
+ "required": [
1445
+ "radius"
1446
+ ]
1447
+ },
1448
+ {
1449
+ "required": [
1450
+ "geometry"
1451
+ ]
1452
+ }
1453
+ ]
1454
+ }
1455
+ },
1456
+ {
1457
+ "required": [
1458
+ "lat",
1459
+ "lng",
1460
+ "radius"
1461
+ ],
1462
+ "not": {
1463
+ "anyOf": [
1464
+ {
1465
+ "required": [
1466
+ "travel_time"
1467
+ ]
1468
+ },
1469
+ {
1470
+ "required": [
1471
+ "geometry"
1472
+ ]
1473
+ }
1474
+ ]
1475
+ }
1476
+ },
1477
+ {
1478
+ "required": [
1479
+ "geometry"
1480
+ ],
1481
+ "not": {
1482
+ "anyOf": [
1483
+ {
1484
+ "required": [
1485
+ "travel_time"
1486
+ ]
1487
+ },
1488
+ {
1489
+ "required": [
1490
+ "radius"
1491
+ ]
1492
+ }
1493
+ ]
1494
+ }
1495
+ }
1496
+ ],
1497
+ "additionalProperties": true
1498
+ }
1499
+ },
1500
+ "language": {
1501
+ "type": "array",
1502
+ "items": {
1503
+ "$ref": "#/$defs/external:core~1locale-tag.json"
1504
+ }
1505
+ },
1506
+ "keyword_targets": {
1507
+ "type": "array",
1508
+ "items": {
1509
+ "type": "object",
1510
+ "properties": {
1511
+ "keyword": {
1512
+ "type": "string"
1513
+ },
1514
+ "match_type": {
1515
+ "$ref": "#/$defs/external:enums~1match-type.json"
1516
+ },
1517
+ "bid_price": {
1518
+ "type": "number"
1519
+ }
1520
+ },
1521
+ "required": [
1522
+ "keyword",
1523
+ "match_type"
1524
+ ]
1525
+ }
1526
+ },
1527
+ "negative_keywords": {
1528
+ "type": "array",
1529
+ "items": {
1530
+ "type": "object",
1531
+ "properties": {
1532
+ "keyword": {
1533
+ "type": "string"
1534
+ },
1535
+ "match_type": {
1536
+ "$ref": "#/$defs/external:enums~1match-type.json"
1537
+ }
1538
+ },
1539
+ "required": [
1540
+ "keyword",
1541
+ "match_type"
1542
+ ]
1543
+ }
1544
+ }
1545
+ },
1546
+ "allOf": [
1547
+ {
1548
+ "if": {
1549
+ "required": [
1550
+ "demographics",
1551
+ "age_restriction"
1552
+ ]
1553
+ },
1554
+ "then": {
1555
+ "properties": {
1556
+ "demographics": {
1557
+ "properties": {
1558
+ "age": {
1559
+ "properties": {
1560
+ "include_unknown": {
1561
+ "const": false
1562
+ }
1563
+ }
1564
+ }
1565
+ }
1566
+ }
1567
+ }
1568
+ }
1569
+ },
1570
+ {
1571
+ "if": {
1572
+ "properties": {
1573
+ "age_restriction": {
1574
+ "properties": {
1575
+ "verification_required": {
1576
+ "const": true
1577
+ }
1578
+ },
1579
+ "required": [
1580
+ "verification_required"
1581
+ ]
1582
+ },
1583
+ "demographics": {
1584
+ "properties": {
1585
+ "age": {
1586
+ "required": [
1587
+ "accepted_bases"
1588
+ ]
1589
+ }
1590
+ },
1591
+ "required": [
1592
+ "age"
1593
+ ]
1594
+ }
1595
+ },
1596
+ "required": [
1597
+ "demographics",
1598
+ "age_restriction"
1599
+ ]
1600
+ },
1601
+ "then": {
1602
+ "properties": {
1603
+ "demographics": {
1604
+ "properties": {
1605
+ "age": {
1606
+ "properties": {
1607
+ "accepted_bases": {
1608
+ "contains": {
1609
+ "const": "verified"
1610
+ }
1611
+ }
1612
+ }
1613
+ }
1614
+ }
1615
+ }
1616
+ }
1617
+ }
1618
+ }
1619
+ ],
1620
+ "additionalProperties": true
1621
+ },
1622
+ "external:enums/metro-system.json": {
1623
+ "type": "string",
1624
+ "enum": [
1625
+ "nielsen_dma",
1626
+ "uk_itl1",
1627
+ "uk_itl2",
1628
+ "eurostat_nuts2",
1629
+ "custom"
1630
+ ]
1631
+ },
1632
+ "external:core/postal-area.json": {
1633
+ "anyOf": [
1634
+ {
1635
+ "type": "object",
1636
+ "allOf": [
1637
+ {
1638
+ "$ref": "#/$defs/external:core~1postal-country-system.json"
1639
+ }
1640
+ ],
1641
+ "properties": {
1642
+ "country": {
1643
+ "type": "string"
1644
+ },
1645
+ "system": {
1646
+ "$ref": "#/$defs/external:enums~1postal-system.json"
1647
+ },
1648
+ "values": {
1649
+ "type": "array",
1650
+ "items": {
1651
+ "type": "string"
1652
+ }
1653
+ }
1654
+ },
1655
+ "required": [
1656
+ "country",
1657
+ "system",
1658
+ "values"
1659
+ ]
1660
+ },
1661
+ {
1662
+ "type": "object",
1663
+ "properties": {
1664
+ "system": {
1665
+ "$ref": "#/$defs/external:enums~1legacy-postal-system.json"
1666
+ },
1667
+ "values": {
1668
+ "type": "array",
1669
+ "items": {
1670
+ "type": "string"
1671
+ }
1672
+ }
1673
+ },
1674
+ "required": [
1675
+ "system",
1676
+ "values"
1677
+ ]
1678
+ }
1679
+ ]
1680
+ },
1681
+ "external:core/postal-country-system.json": {
1682
+ "type": "object",
1683
+ "properties": {
1684
+ "country": {
1685
+ "type": "string"
1686
+ },
1687
+ "system": {
1688
+ "$ref": "#/$defs/external:enums~1postal-system.json"
1689
+ }
1690
+ },
1691
+ "required": [
1692
+ "country",
1693
+ "system"
1694
+ ],
1695
+ "anyOf": [
1696
+ {
1697
+ "properties": {
1698
+ "country": {
1699
+ "const": "US"
1700
+ },
1701
+ "system": {
1702
+ "enum": [
1703
+ "zip",
1704
+ "zip_plus_four"
1705
+ ]
1706
+ }
1707
+ }
1708
+ },
1709
+ {
1710
+ "properties": {
1711
+ "country": {
1712
+ "const": "GB"
1713
+ },
1714
+ "system": {
1715
+ "enum": [
1716
+ "outward",
1717
+ "full"
1718
+ ]
1719
+ }
1720
+ }
1721
+ },
1722
+ {
1723
+ "properties": {
1724
+ "country": {
1725
+ "const": "CA"
1726
+ },
1727
+ "system": {
1728
+ "enum": [
1729
+ "fsa",
1730
+ "full"
1731
+ ]
1732
+ }
1733
+ }
1734
+ },
1735
+ {
1736
+ "properties": {
1737
+ "country": {
1738
+ "enum": [
1739
+ "DE",
1740
+ "CH",
1741
+ "AT"
1742
+ ]
1743
+ },
1744
+ "system": {
1745
+ "const": "plz"
1746
+ }
1747
+ }
1748
+ },
1749
+ {
1750
+ "properties": {
1751
+ "country": {
1752
+ "const": "FR"
1753
+ },
1754
+ "system": {
1755
+ "const": "code_postal"
1756
+ }
1757
+ }
1758
+ },
1759
+ {
1760
+ "properties": {
1761
+ "country": {
1762
+ "const": "AU"
1763
+ },
1764
+ "system": {
1765
+ "const": "postcode"
1766
+ }
1767
+ }
1768
+ },
1769
+ {
1770
+ "properties": {
1771
+ "country": {
1772
+ "const": "BR"
1773
+ },
1774
+ "system": {
1775
+ "const": "cep"
1776
+ }
1777
+ }
1778
+ },
1779
+ {
1780
+ "properties": {
1781
+ "country": {
1782
+ "const": "IN"
1783
+ },
1784
+ "system": {
1785
+ "const": "pin"
1786
+ }
1787
+ }
1788
+ },
1789
+ {
1790
+ "properties": {
1791
+ "country": {
1792
+ "const": "ZA"
1793
+ },
1794
+ "system": {
1795
+ "const": "postal_code"
1796
+ }
1797
+ }
1798
+ },
1799
+ {
1800
+ "properties": {
1801
+ "country": {
1802
+ "not": {
1803
+ "enum": [
1804
+ "US",
1805
+ "GB",
1806
+ "CA",
1807
+ "DE",
1808
+ "CH",
1809
+ "AT",
1810
+ "FR",
1811
+ "AU",
1812
+ "BR",
1813
+ "IN",
1814
+ "ZA"
1815
+ ]
1816
+ }
1817
+ },
1818
+ "system": {
1819
+ "enum": [
1820
+ "postal_code",
1821
+ "custom"
1822
+ ]
1823
+ }
1824
+ }
1825
+ }
1826
+ ]
1827
+ },
1828
+ "external:enums/postal-system.json": {
1829
+ "type": "string",
1830
+ "enum": [
1831
+ "postal_code",
1832
+ "zip",
1833
+ "zip_plus_four",
1834
+ "outward",
1835
+ "full",
1836
+ "fsa",
1837
+ "plz",
1838
+ "code_postal",
1839
+ "postcode",
1840
+ "cep",
1841
+ "pin",
1842
+ "custom",
1843
+ "us_zip",
1844
+ "us_zip_plus_four",
1845
+ "gb_outward",
1846
+ "gb_full",
1847
+ "ca_fsa",
1848
+ "ca_full",
1849
+ "de_plz",
1850
+ "fr_code_postal",
1851
+ "au_postcode",
1852
+ "ch_plz",
1853
+ "at_plz"
1854
+ ]
1855
+ },
1856
+ "external:enums/legacy-postal-system.json": {
1857
+ "type": "string",
1858
+ "enum": [
1859
+ "us_zip",
1860
+ "us_zip_plus_four",
1861
+ "gb_outward",
1862
+ "gb_full",
1863
+ "ca_fsa",
1864
+ "ca_full",
1865
+ "de_plz",
1866
+ "fr_code_postal",
1867
+ "au_postcode",
1868
+ "ch_plz",
1869
+ "at_plz"
1870
+ ]
1871
+ },
1872
+ "external:core/geo-place-area.json": {
1873
+ "type": "object",
1874
+ "properties": {
1875
+ "country": {
1876
+ "type": "string"
1877
+ },
1878
+ "system": {
1879
+ "$ref": "#/$defs/external:core~1geo-place-system.json"
1880
+ },
1881
+ "system_version": {
1882
+ "type": "string"
1883
+ },
1884
+ "place_type": {
1885
+ "$ref": "#/$defs/external:core~1geo-place-type.json"
1886
+ },
1887
+ "values": {
1888
+ "type": "array",
1889
+ "items": {
1890
+ "type": "string"
1891
+ }
1892
+ },
1893
+ "value_labels": {
1894
+ "type": "object",
1895
+ "additionalProperties": {
1896
+ "type": "string"
1897
+ }
1898
+ },
1899
+ "ext": {
1900
+ "$ref": "#/$defs/external:core~1ext.json"
1901
+ }
1902
+ },
1903
+ "required": [
1904
+ "country",
1905
+ "system",
1906
+ "place_type",
1907
+ "values"
1908
+ ],
1909
+ "allOf": [
1910
+ {
1911
+ "if": {
1912
+ "properties": {
1913
+ "system": {
1914
+ "enum": [
1915
+ "geonames",
1916
+ "google_ads",
1917
+ "microsoft_ads"
1918
+ ]
1919
+ }
1920
+ },
1921
+ "required": [
1922
+ "system"
1923
+ ]
1924
+ },
1925
+ "then": {
1926
+ "properties": {
1927
+ "values": {
1928
+ "items": {
1929
+ "type": "string"
1930
+ }
1931
+ }
1932
+ }
1933
+ }
1934
+ }
1935
+ ]
1936
+ },
1937
+ "external:core/geo-place-system.json": {
1938
+ "anyOf": [
1939
+ {
1940
+ "type": "string",
1941
+ "enum": [
1942
+ "geonames",
1943
+ "google_ads",
1944
+ "microsoft_ads"
1945
+ ]
1946
+ },
1947
+ {
1948
+ "type": "string"
1949
+ }
1950
+ ]
1951
+ },
1952
+ "external:core/geo-place-type.json": {
1953
+ "anyOf": [
1954
+ {
1955
+ "type": "string",
1956
+ "enum": [
1957
+ "airport",
1958
+ "borough",
1959
+ "city",
1960
+ "city_region",
1961
+ "commune",
1962
+ "county",
1963
+ "district",
1964
+ "municipality",
1965
+ "neighborhood",
1966
+ "post_town",
1967
+ "prefecture",
1968
+ "province",
1969
+ "quarter",
1970
+ "state",
1971
+ "territory",
1972
+ "ward"
1973
+ ]
1974
+ },
1975
+ {
1976
+ "type": "string"
1977
+ }
1978
+ ]
1979
+ },
1980
+ "external:core/ext.json": {
1981
+ "type": "object",
1982
+ "additionalProperties": true
1983
+ },
1984
+ "external:core/daypart-target.json": {
1985
+ "type": "object",
1986
+ "properties": {
1987
+ "days": {
1988
+ "type": "array",
1989
+ "items": {
1990
+ "$ref": "#/$defs/external:enums~1day-of-week.json"
1991
+ }
1992
+ },
1993
+ "start_hour": {
1994
+ "type": "integer"
1995
+ },
1996
+ "end_hour": {
1997
+ "type": "integer"
1998
+ },
1999
+ "label": {
2000
+ "type": "string"
2001
+ }
2002
+ },
2003
+ "required": [
2004
+ "days",
2005
+ "start_hour",
2006
+ "end_hour"
2007
+ ]
2008
+ },
2009
+ "external:enums/day-of-week.json": {
2010
+ "type": "string",
2011
+ "enum": [
2012
+ "monday",
2013
+ "tuesday",
2014
+ "wednesday",
2015
+ "thursday",
2016
+ "friday",
2017
+ "saturday",
2018
+ "sunday"
2019
+ ]
2020
+ },
2021
+ "external:core/package-signal-targeting-groups.json": {
2022
+ "type": "object",
2023
+ "properties": {
2024
+ "operator": {
2025
+ "type": "string",
2026
+ "enum": [
2027
+ "all"
2028
+ ]
2029
+ },
2030
+ "groups": {
2031
+ "type": "array",
2032
+ "items": {
2033
+ "$ref": "#/$defs/external:core~1package-signal-targeting-group.json"
2034
+ }
2035
+ }
2036
+ },
2037
+ "required": [
2038
+ "operator",
2039
+ "groups"
2040
+ ],
2041
+ "additionalProperties": true
2042
+ },
2043
+ "external:core/package-signal-targeting-group.json": {
2044
+ "type": "object",
2045
+ "properties": {
2046
+ "operator": {
2047
+ "type": "string",
2048
+ "enum": [
2049
+ "any",
2050
+ "none"
2051
+ ]
2052
+ },
2053
+ "signals": {
2054
+ "type": "array",
2055
+ "items": {
2056
+ "$ref": "#/$defs/external:core~1package-signal-targeting.json"
2057
+ }
2058
+ }
2059
+ },
2060
+ "required": [
2061
+ "operator",
2062
+ "signals"
2063
+ ],
2064
+ "additionalProperties": true
2065
+ },
2066
+ "external:core/package-signal-targeting.json": {
2067
+ "type": "object",
2068
+ "allOf": [
2069
+ {
2070
+ "$ref": "#/$defs/external:core~1signal-targeting-expression.json"
2071
+ }
2072
+ ],
2073
+ "properties": {
2074
+ "pricing_option_id": {
2075
+ "type": "string"
2076
+ },
2077
+ "signal_agent_segment_id": {
2078
+ "type": "string"
2079
+ },
2080
+ "activation_key": {
2081
+ "$ref": "#/$defs/external:core~1activation-key.json"
2082
+ }
2083
+ },
2084
+ "additionalProperties": true
2085
+ },
2086
+ "external:core/signal-targeting-expression.json": {
2087
+ "discriminator": {
2088
+ "propertyName": "value_type"
2089
+ },
2090
+ "oneOf": [
2091
+ {
2092
+ "type": "object",
2093
+ "properties": {
2094
+ "signal_ref": {
2095
+ "$ref": "#/$defs/external:core~1signal-ref.json"
2096
+ },
2097
+ "value_type": {
2098
+ "type": "string",
2099
+ "const": "binary"
2100
+ },
2101
+ "value": {
2102
+ "type": "boolean",
2103
+ "const": true
2104
+ }
2105
+ },
2106
+ "required": [
2107
+ "signal_ref",
2108
+ "value_type",
2109
+ "value"
2110
+ ],
2111
+ "additionalProperties": true
2112
+ },
2113
+ {
2114
+ "type": "object",
2115
+ "properties": {
2116
+ "signal_ref": {
2117
+ "$ref": "#/$defs/external:core~1signal-ref.json"
2118
+ },
2119
+ "value_type": {
2120
+ "type": "string",
2121
+ "const": "categorical"
2122
+ },
2123
+ "values": {
2124
+ "type": "array",
2125
+ "items": {
2126
+ "type": "string"
2127
+ }
2128
+ }
2129
+ },
2130
+ "required": [
2131
+ "signal_ref",
2132
+ "value_type",
2133
+ "values"
2134
+ ],
2135
+ "additionalProperties": true
2136
+ },
2137
+ {
2138
+ "type": "object",
2139
+ "properties": {
2140
+ "signal_ref": {
2141
+ "$ref": "#/$defs/external:core~1signal-ref.json"
2142
+ },
2143
+ "value_type": {
2144
+ "type": "string",
2145
+ "const": "numeric"
2146
+ },
2147
+ "min_value": {
2148
+ "type": "number"
2149
+ },
2150
+ "max_value": {
2151
+ "type": "number"
2152
+ }
2153
+ },
2154
+ "required": [
2155
+ "signal_ref",
2156
+ "value_type"
2157
+ ],
2158
+ "anyOf": [
2159
+ {
2160
+ "required": [
2161
+ "min_value"
2162
+ ]
2163
+ },
2164
+ {
2165
+ "required": [
2166
+ "max_value"
2167
+ ]
2168
+ }
2169
+ ],
2170
+ "additionalProperties": true
2171
+ }
2172
+ ]
2173
+ },
2174
+ "external:core/signal-ref.json": {
2175
+ "discriminator": {
2176
+ "propertyName": "scope"
2177
+ },
2178
+ "oneOf": [
2179
+ {
2180
+ "type": "object",
2181
+ "properties": {
2182
+ "scope": {
2183
+ "type": "string",
2184
+ "const": "product"
2185
+ },
2186
+ "signal_id": {
2187
+ "type": "string"
2188
+ }
2189
+ },
2190
+ "required": [
2191
+ "scope",
2192
+ "signal_id"
2193
+ ],
2194
+ "not": {
2195
+ "anyOf": [
2196
+ {
2197
+ "required": [
2198
+ "data_provider_domain"
2199
+ ]
2200
+ },
2201
+ {
2202
+ "required": [
2203
+ "signal_source_url"
2204
+ ]
2205
+ },
2206
+ {
2207
+ "required": [
2208
+ "agent_url"
2209
+ ]
2210
+ },
2211
+ {
2212
+ "required": [
2213
+ "source"
2214
+ ]
2215
+ },
2216
+ {
2217
+ "required": [
2218
+ "id"
2219
+ ]
2220
+ }
2221
+ ]
2222
+ },
2223
+ "additionalProperties": true
2224
+ },
2225
+ {
2226
+ "type": "object",
2227
+ "properties": {
2228
+ "scope": {
2229
+ "type": "string",
2230
+ "const": "data_provider"
2231
+ },
2232
+ "data_provider_domain": {
2233
+ "type": "string"
2234
+ },
2235
+ "signal_id": {
2236
+ "type": "string"
2237
+ }
2238
+ },
2239
+ "required": [
2240
+ "scope",
2241
+ "data_provider_domain",
2242
+ "signal_id"
2243
+ ],
2244
+ "not": {
2245
+ "anyOf": [
2246
+ {
2247
+ "required": [
2248
+ "agent_url"
2249
+ ]
2250
+ },
2251
+ {
2252
+ "required": [
2253
+ "signal_source_url"
2254
+ ]
2255
+ },
2256
+ {
2257
+ "required": [
2258
+ "source"
2259
+ ]
2260
+ },
2261
+ {
2262
+ "required": [
2263
+ "id"
2264
+ ]
2265
+ }
2266
+ ]
2267
+ },
2268
+ "additionalProperties": true
2269
+ },
2270
+ {
2271
+ "type": "object",
2272
+ "properties": {
2273
+ "scope": {
2274
+ "type": "string",
2275
+ "const": "signal_source"
2276
+ },
2277
+ "signal_source_url": {
2278
+ "type": "string"
2279
+ },
2280
+ "signal_id": {
2281
+ "type": "string"
2282
+ }
2283
+ },
2284
+ "required": [
2285
+ "scope",
2286
+ "signal_source_url",
2287
+ "signal_id"
2288
+ ],
2289
+ "not": {
2290
+ "anyOf": [
2291
+ {
2292
+ "required": [
2293
+ "data_provider_domain"
2294
+ ]
2295
+ },
2296
+ {
2297
+ "required": [
2298
+ "agent_url"
2299
+ ]
2300
+ },
2301
+ {
2302
+ "required": [
2303
+ "source"
2304
+ ]
2305
+ },
2306
+ {
2307
+ "required": [
2308
+ "id"
2309
+ ]
2310
+ }
2311
+ ]
2312
+ },
2313
+ "additionalProperties": true
2314
+ }
2315
+ ]
2316
+ },
2317
+ "external:core/activation-key.json": {
2318
+ "type": "object",
2319
+ "discriminator": {
2320
+ "propertyName": "type"
2321
+ },
2322
+ "oneOf": [
2323
+ {
2324
+ "properties": {
2325
+ "type": {
2326
+ "type": "string",
2327
+ "const": "segment_id"
2328
+ },
2329
+ "segment_id": {
2330
+ "type": "string"
2331
+ }
2332
+ },
2333
+ "required": [
2334
+ "type",
2335
+ "segment_id"
2336
+ ],
2337
+ "additionalProperties": true
2338
+ },
2339
+ {
2340
+ "properties": {
2341
+ "type": {
2342
+ "type": "string",
2343
+ "const": "key_value"
2344
+ },
2345
+ "key": {
2346
+ "type": "string"
2347
+ },
2348
+ "value": {
2349
+ "type": "string"
2350
+ }
2351
+ },
2352
+ "required": [
2353
+ "type",
2354
+ "key",
2355
+ "value"
2356
+ ],
2357
+ "additionalProperties": true
2358
+ }
2359
+ ]
2360
+ },
2361
+ "external:core/signal-targeting.json": {
2362
+ "discriminator": {
2363
+ "propertyName": "value_type"
2364
+ },
2365
+ "oneOf": [
2366
+ {
2367
+ "type": "object",
2368
+ "properties": {
2369
+ "signal_ref": {
2370
+ "$ref": "#/$defs/external:core~1signal-ref.json"
2371
+ },
2372
+ "signal_id": {
2373
+ "$ref": "#/$defs/external:core~1signal-id.json"
2374
+ },
2375
+ "value_type": {
2376
+ "type": "string",
2377
+ "const": "binary"
2378
+ },
2379
+ "value": {
2380
+ "type": "boolean"
2381
+ }
2382
+ },
2383
+ "required": [
2384
+ "value_type",
2385
+ "value"
2386
+ ],
2387
+ "anyOf": [
2388
+ {
2389
+ "required": [
2390
+ "signal_ref"
2391
+ ]
2392
+ },
2393
+ {
2394
+ "required": [
2395
+ "signal_id"
2396
+ ]
2397
+ }
2398
+ ],
2399
+ "additionalProperties": true
2400
+ },
2401
+ {
2402
+ "type": "object",
2403
+ "properties": {
2404
+ "signal_ref": {
2405
+ "$ref": "#/$defs/external:core~1signal-ref.json"
2406
+ },
2407
+ "signal_id": {
2408
+ "$ref": "#/$defs/external:core~1signal-id.json"
2409
+ },
2410
+ "value_type": {
2411
+ "type": "string",
2412
+ "const": "categorical"
2413
+ },
2414
+ "values": {
2415
+ "type": "array",
2416
+ "items": {
2417
+ "type": "string"
2418
+ }
2419
+ }
2420
+ },
2421
+ "required": [
2422
+ "value_type",
2423
+ "values"
2424
+ ],
2425
+ "anyOf": [
2426
+ {
2427
+ "required": [
2428
+ "signal_ref"
2429
+ ]
2430
+ },
2431
+ {
2432
+ "required": [
2433
+ "signal_id"
2434
+ ]
2435
+ }
2436
+ ],
2437
+ "additionalProperties": true
2438
+ },
2439
+ {
2440
+ "type": "object",
2441
+ "properties": {
2442
+ "signal_ref": {
2443
+ "$ref": "#/$defs/external:core~1signal-ref.json"
2444
+ },
2445
+ "signal_id": {
2446
+ "$ref": "#/$defs/external:core~1signal-id.json"
2447
+ },
2448
+ "value_type": {
2449
+ "type": "string",
2450
+ "const": "numeric"
2451
+ },
2452
+ "min_value": {
2453
+ "type": "number"
2454
+ },
2455
+ "max_value": {
2456
+ "type": "number"
2457
+ }
2458
+ },
2459
+ "required": [
2460
+ "value_type"
2461
+ ],
2462
+ "anyOf": [
2463
+ {
2464
+ "required": [
2465
+ "signal_ref"
2466
+ ]
2467
+ },
2468
+ {
2469
+ "required": [
2470
+ "signal_id"
2471
+ ]
2472
+ }
2473
+ ],
2474
+ "additionalProperties": true
2475
+ }
2476
+ ]
2477
+ },
2478
+ "external:core/signal-id.json": {
2479
+ "discriminator": {
2480
+ "propertyName": "source"
2481
+ },
2482
+ "oneOf": [
2483
+ {
2484
+ "type": "object",
2485
+ "properties": {
2486
+ "source": {
2487
+ "type": "string",
2488
+ "const": "catalog"
2489
+ },
2490
+ "data_provider_domain": {
2491
+ "type": "string"
2492
+ },
2493
+ "id": {
2494
+ "type": "string"
2495
+ }
2496
+ },
2497
+ "required": [
2498
+ "source",
2499
+ "data_provider_domain",
2500
+ "id"
2501
+ ],
2502
+ "additionalProperties": true
2503
+ },
2504
+ {
2505
+ "type": "object",
2506
+ "properties": {
2507
+ "source": {
2508
+ "type": "string",
2509
+ "const": "agent"
2510
+ },
2511
+ "agent_url": {
2512
+ "type": "string"
2513
+ },
2514
+ "id": {
2515
+ "type": "string"
2516
+ }
2517
+ },
2518
+ "required": [
2519
+ "source",
2520
+ "agent_url",
2521
+ "id"
2522
+ ],
2523
+ "additionalProperties": true
2524
+ }
2525
+ ]
2526
+ },
2527
+ "external:core/demographic-targeting-intent.json": {
2528
+ "type": "object",
2529
+ "properties": {
2530
+ "age": {
2531
+ "allOf": [
2532
+ {
2533
+ "$ref": "#/$defs/external:core~1demographic-age-range.json"
2534
+ },
2535
+ {
2536
+ "type": "object",
2537
+ "properties": {
2538
+ "accepted_bases": {
2539
+ "type": "array",
2540
+ "items": {
2541
+ "$ref": "#/$defs/external:enums~1age-determination-basis.json"
2542
+ }
2543
+ },
2544
+ "accepted_verification_methods": {
2545
+ "type": "array",
2546
+ "items": {
2547
+ "$ref": "#/$defs/external:enums~1age-verification-method.json"
2548
+ }
2549
+ }
2550
+ },
2551
+ "allOf": [
2552
+ {
2553
+ "if": {
2554
+ "required": [
2555
+ "accepted_verification_methods"
2556
+ ]
2557
+ },
2558
+ "then": {
2559
+ "required": [
2560
+ "accepted_bases"
2561
+ ],
2562
+ "properties": {
2563
+ "accepted_bases": {
2564
+ "contains": {
2565
+ "const": "verified"
2566
+ }
2567
+ }
2568
+ }
2569
+ }
2570
+ }
2571
+ ],
2572
+ "additionalProperties": true
2573
+ }
2574
+ ]
2575
+ }
2576
+ },
2577
+ "required": [
2578
+ "age"
2579
+ ],
2580
+ "additionalProperties": true
2581
+ },
2582
+ "external:core/demographic-age-range.json": {
2583
+ "type": "object",
2584
+ "properties": {
2585
+ "min": {
2586
+ "type": "integer"
2587
+ },
2588
+ "max": {
2589
+ "type": "integer"
2590
+ },
2591
+ "include_unknown": {
2592
+ "type": "boolean"
2593
+ }
2594
+ },
2595
+ "required": [
2596
+ "include_unknown"
2597
+ ],
2598
+ "anyOf": [
2599
+ {
2600
+ "required": [
2601
+ "min"
2602
+ ]
2603
+ },
2604
+ {
2605
+ "required": [
2606
+ "max"
2607
+ ]
2608
+ }
2609
+ ],
2610
+ "additionalProperties": true
2611
+ },
2612
+ "external:enums/age-determination-basis.json": {
2613
+ "type": "string",
2614
+ "enum": [
2615
+ "verified",
2616
+ "declared",
2617
+ "inferred"
2618
+ ]
2619
+ },
2620
+ "external:enums/age-verification-method.json": {
2621
+ "type": "string",
2622
+ "enum": [
2623
+ "facial_age_estimation",
2624
+ "id_document",
2625
+ "digital_id",
2626
+ "credit_card",
2627
+ "world_id"
2628
+ ]
2629
+ },
2630
+ "external:core/frequency-cap.json": {
2631
+ "type": "object",
2632
+ "properties": {
2633
+ "suppress": {
2634
+ "allOf": [
2635
+ {
2636
+ "$ref": "#/$defs/external:core~1duration.json"
2637
+ }
2638
+ ]
2639
+ },
2640
+ "suppress_minutes": {
2641
+ "type": "number"
2642
+ },
2643
+ "max_impressions": {
2644
+ "type": "integer"
2645
+ },
2646
+ "per": {
2647
+ "allOf": [
2648
+ {
2649
+ "$ref": "#/$defs/external:enums~1reach-unit.json"
2650
+ }
2651
+ ]
2652
+ },
2653
+ "window": {
2654
+ "allOf": [
2655
+ {
2656
+ "$ref": "#/$defs/external:core~1duration.json"
2657
+ }
2658
+ ]
2659
+ }
2660
+ },
2661
+ "anyOf": [
2662
+ {
2663
+ "required": [
2664
+ "suppress"
2665
+ ]
2666
+ },
2667
+ {
2668
+ "required": [
2669
+ "suppress_minutes"
2670
+ ]
2671
+ },
2672
+ {
2673
+ "required": [
2674
+ "max_impressions"
2675
+ ]
2676
+ }
2677
+ ],
2678
+ "additionalProperties": true,
2679
+ "dependentRequired": {
2680
+ "max_impressions": [
2681
+ "per",
2682
+ "window"
2683
+ ],
2684
+ "per": [
2685
+ "max_impressions"
2686
+ ],
2687
+ "window": [
2688
+ "max_impressions"
2689
+ ]
2690
+ }
2691
+ },
2692
+ "external:core/property-list-ref.json": {
2693
+ "type": "object",
2694
+ "properties": {
2695
+ "agent_url": {
2696
+ "type": "string"
2697
+ },
2698
+ "list_id": {
2699
+ "type": "string"
2700
+ },
2701
+ "auth_token": {
2702
+ "type": "string"
2703
+ }
2704
+ },
2705
+ "required": [
2706
+ "agent_url",
2707
+ "list_id"
2708
+ ]
2709
+ },
2710
+ "external:core/collection-list-ref.json": {
2711
+ "type": "object",
2712
+ "properties": {
2713
+ "agent_url": {
2714
+ "type": "string"
2715
+ },
2716
+ "list_id": {
2717
+ "type": "string"
2718
+ },
2719
+ "auth_token": {
2720
+ "type": "string"
2721
+ }
2722
+ },
2723
+ "required": [
2724
+ "agent_url",
2725
+ "list_id"
2726
+ ]
2727
+ },
2728
+ "external:core/placement-selection.json": {
2729
+ "type": "object",
2730
+ "discriminator": {
2731
+ "propertyName": "mode"
2732
+ },
2733
+ "oneOf": [
2734
+ {
2735
+ "type": "object",
2736
+ "properties": {
2737
+ "mode": {
2738
+ "type": "string",
2739
+ "const": "selected"
2740
+ },
2741
+ "placement_refs": {
2742
+ "type": "array",
2743
+ "items": {
2744
+ "allOf": [
2745
+ {
2746
+ "$ref": "#/$defs/external:core~1placement-ref.json"
2747
+ },
2748
+ {
2749
+ "required": [
2750
+ "publisher_domain"
2751
+ ]
2752
+ }
2753
+ ]
2754
+ }
2755
+ },
2756
+ "ext": {
2757
+ "$ref": "#/$defs/external:core~1ext.json"
2758
+ }
2759
+ },
2760
+ "required": [
2761
+ "mode",
2762
+ "placement_refs"
2763
+ ]
2764
+ },
2765
+ {
2766
+ "type": "object",
2767
+ "properties": {
2768
+ "mode": {
2769
+ "type": "string",
2770
+ "const": "default"
2771
+ },
2772
+ "ext": {
2773
+ "$ref": "#/$defs/external:core~1ext.json"
2774
+ }
2775
+ },
2776
+ "required": [
2777
+ "mode"
2778
+ ]
2779
+ }
2780
+ ]
2781
+ },
2782
+ "external:core/placement-ref.json": {
2783
+ "type": "object",
2784
+ "properties": {
2785
+ "publisher_domain": {
2786
+ "type": "string"
2787
+ },
2788
+ "placement_id": {
2789
+ "type": "string"
2790
+ }
2791
+ },
2792
+ "required": [
2793
+ "placement_id"
2794
+ ],
2795
+ "additionalProperties": true
2796
+ },
2797
+ "external:enums/device-platform.json": {
2798
+ "type": "string",
2799
+ "enum": [
2800
+ "ios",
2801
+ "android",
2802
+ "windows",
2803
+ "macos",
2804
+ "linux",
2805
+ "chromeos",
2806
+ "tvos",
2807
+ "tizen",
2808
+ "webos",
2809
+ "fire_os",
2810
+ "roku_os",
2811
+ "unknown"
2812
+ ]
2813
+ },
2814
+ "external:enums/device-type.json": {
2815
+ "type": "string",
2816
+ "enum": [
2817
+ "desktop",
2818
+ "mobile",
2819
+ "tablet",
2820
+ "ctv",
2821
+ "dooh",
2822
+ "unknown"
2823
+ ]
2824
+ },
2825
+ "external:enums/browser-family.json": {
2826
+ "type": "string",
2827
+ "enum": [
2828
+ "chrome",
2829
+ "safari",
2830
+ "firefox",
2831
+ "edge",
2832
+ "opera",
2833
+ "samsung_internet",
2834
+ "android_webview",
2835
+ "other",
2836
+ "unknown"
2837
+ ]
2838
+ },
2839
+ "external:enums/travel-time-unit.json": {
2840
+ "type": "string",
2841
+ "enum": [
2842
+ "min",
2843
+ "hr"
2844
+ ]
2845
+ },
2846
+ "external:enums/transport-mode.json": {
2847
+ "type": "string",
2848
+ "enum": [
2849
+ "walking",
2850
+ "cycling",
2851
+ "driving",
2852
+ "public_transport"
2853
+ ]
2854
+ },
2855
+ "external:enums/distance-unit.json": {
2856
+ "type": "string",
2857
+ "enum": [
2858
+ "km",
2859
+ "mi",
2860
+ "m"
2861
+ ]
2862
+ },
2863
+ "external:core/locale-tag.json": {
2864
+ "type": "string"
2865
+ },
2866
+ "external:enums/match-type.json": {
2867
+ "type": "string",
2868
+ "enum": [
2869
+ "broad",
2870
+ "phrase",
2871
+ "exact"
2872
+ ]
2873
+ },
2874
+ "external:core/keyword-target.json": {
2875
+ "type": "object",
2876
+ "properties": {
2877
+ "keyword": {
2878
+ "type": "string"
2879
+ },
2880
+ "match_type": {
2881
+ "$ref": "#/$defs/external:enums~1match-type.json"
2882
+ },
2883
+ "bid_price": {
2884
+ "type": "number"
2885
+ }
2886
+ },
2887
+ "required": [
2888
+ "keyword",
2889
+ "match_type"
2890
+ ]
2891
+ },
2892
+ "external:core/reporting-webhook.json": {
2893
+ "type": "object",
2894
+ "properties": {
2895
+ "url": {
2896
+ "type": "string"
2897
+ },
2898
+ "token": {
2899
+ "type": "string"
2900
+ },
2901
+ "authentication": {
2902
+ "type": "object",
2903
+ "properties": {
2904
+ "schemes": {
2905
+ "type": "array",
2906
+ "items": {
2907
+ "$ref": "#/$defs/external:enums~1auth-scheme.json"
2908
+ }
2909
+ },
2910
+ "credentials": {
2911
+ "type": "string"
2912
+ }
2913
+ },
2914
+ "required": [
2915
+ "schemes",
2916
+ "credentials"
2917
+ ]
2918
+ },
2919
+ "reporting_frequency": {
2920
+ "type": "string",
2921
+ "enum": [
2922
+ "hourly",
2923
+ "daily",
2924
+ "monthly"
2925
+ ]
2926
+ },
2927
+ "requested_metrics": {
2928
+ "type": "array",
2929
+ "items": {
2930
+ "$ref": "#/$defs/external:enums~1available-metric.json"
2931
+ }
2932
+ }
2933
+ },
2934
+ "required": [
2935
+ "url",
2936
+ "authentication",
2937
+ "reporting_frequency"
2938
+ ],
2939
+ "additionalProperties": true
2940
+ },
2941
+ "external:enums/auth-scheme.json": {
2942
+ "type": "string",
2943
+ "enum": [
2944
+ "Bearer",
2945
+ "HMAC-SHA256"
2946
+ ]
2947
+ },
2948
+ "external:enums/available-metric.json": {
2949
+ "type": "string",
2950
+ "enum": [
2951
+ "impressions",
2952
+ "spend",
2953
+ "clicks",
2954
+ "ctr",
2955
+ "views",
2956
+ "completed_views",
2957
+ "completion_rate",
2958
+ "conversions",
2959
+ "conversion_value",
2960
+ "commissionable_value",
2961
+ "roas",
2962
+ "cost_per_acquisition",
2963
+ "new_to_brand_rate",
2964
+ "leads",
2965
+ "reach",
2966
+ "frequency",
2967
+ "grps",
2968
+ "engagements",
2969
+ "engagement_rate",
2970
+ "follows",
2971
+ "saves",
2972
+ "profile_visits",
2973
+ "viewability",
2974
+ "quartile_data",
2975
+ "dooh_metrics",
2976
+ "cost_per_click",
2977
+ "cost_per_completed_view",
2978
+ "cpm",
2979
+ "downloads",
2980
+ "units_sold",
2981
+ "new_to_brand_units",
2982
+ "plays",
2983
+ "incremental_sales_lift",
2984
+ "brand_lift",
2985
+ "foot_traffic",
2986
+ "conversion_lift",
2987
+ "brand_search_lift"
2988
+ ]
2989
+ },
2990
+ "external:core/push-notification-config.json": {
2991
+ "type": "object",
2992
+ "properties": {
2993
+ "url": {
2994
+ "type": "string"
2995
+ },
2996
+ "operation_id": {
2997
+ "type": "string"
2998
+ },
2999
+ "token": {
3000
+ "type": "string"
3001
+ },
3002
+ "authentication": {
3003
+ "type": "object",
3004
+ "properties": {
3005
+ "schemes": {
3006
+ "type": "array",
3007
+ "items": {
3008
+ "$ref": "#/$defs/external:enums~1auth-scheme.json"
3009
+ }
3010
+ },
3011
+ "credentials": {
3012
+ "type": "string"
3013
+ }
3014
+ },
3015
+ "required": [
3016
+ "schemes",
3017
+ "credentials"
3018
+ ]
3019
+ }
3020
+ },
3021
+ "required": [
3022
+ "url"
3023
+ ]
3024
+ },
3025
+ "external:core/context.json": {
3026
+ "type": "object",
3027
+ "additionalProperties": true
3028
+ }
3029
+ }
3030
+ }