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