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