@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,4799 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/mcp/2026-07-28/profiles/media-buy/media-buy/buy-products-response.json",
4
+ "allOf": [
5
+ {
6
+ "$ref": "#/$defs/external:media-buy~1media-buy-commitment-response.json"
7
+ }
8
+ ],
9
+ "$defs": {
10
+ "external:media-buy/media-buy-commitment-response.json": {
11
+ "type": "object",
12
+ "discriminator": {
13
+ "propertyName": "status"
14
+ },
15
+ "oneOf": [
16
+ {
17
+ "type": "object",
18
+ "x-adcp-validation": {
19
+ "verifier_constraints": {
20
+ "accepted_proposal_binding": {
21
+ "media_buy_id": "equals_accepted_proposal.media_buy_id",
22
+ "proposal_status": "accepted",
23
+ "on_violation": "reject_response"
24
+ }
25
+ }
26
+ },
27
+ "properties": {
28
+ "status": {
29
+ "type": "string",
30
+ "const": "completed"
31
+ },
32
+ "media_buy_id": {
33
+ "type": "string",
34
+ "minLength": 1,
35
+ "x-entity": "media_buy"
36
+ },
37
+ "revision": {
38
+ "type": "integer",
39
+ "minimum": 1
40
+ },
41
+ "media_buy_status": {
42
+ "$ref": "#/$defs/external:enums~1media-buy-status.json"
43
+ },
44
+ "confirmed_at": {
45
+ "type": [
46
+ "string",
47
+ "null"
48
+ ],
49
+ "format": "date-time"
50
+ },
51
+ "accepted_proposal": {
52
+ "allOf": [
53
+ {
54
+ "$ref": "#/$defs/external:core~1canonical-proposal.json"
55
+ },
56
+ {
57
+ "properties": {
58
+ "proposal_status": {
59
+ "type": "string",
60
+ "const": "accepted"
61
+ },
62
+ "media_buy_id": {
63
+ "type": "string",
64
+ "minLength": 1,
65
+ "x-entity": "media_buy"
66
+ }
67
+ },
68
+ "required": [
69
+ "proposal_status",
70
+ "media_buy_id",
71
+ "accepted_at",
72
+ "commercial_terms",
73
+ "terms_digest"
74
+ ]
75
+ }
76
+ ]
77
+ },
78
+ "purchase_bindings": {
79
+ "type": "array",
80
+ "x-adcp-validation": {
81
+ "verifier_constraints": {
82
+ "complete_purchase_bijection": {
83
+ "binding_count": "equals_accepted_proposal.commercial_terms.purchases.length",
84
+ "purchase_indexes": "unique_contiguous_zero_based_range",
85
+ "product_id": "equals_indexed_purchase.product_id",
86
+ "package_ids": "unique",
87
+ "on_violation": "reject_response"
88
+ }
89
+ }
90
+ },
91
+ "items": {
92
+ "type": "object",
93
+ "properties": {
94
+ "purchase_index": {
95
+ "type": "integer",
96
+ "minimum": 0
97
+ },
98
+ "product_id": {
99
+ "type": "string",
100
+ "minLength": 1,
101
+ "x-entity": "product"
102
+ },
103
+ "package_id": {
104
+ "type": "string",
105
+ "minLength": 1,
106
+ "x-entity": "package"
107
+ }
108
+ },
109
+ "required": [
110
+ "purchase_index",
111
+ "product_id",
112
+ "package_id"
113
+ ],
114
+ "additionalProperties": false
115
+ },
116
+ "minItems": 1,
117
+ "uniqueItems": true
118
+ },
119
+ "available_actions": {
120
+ "type": "array",
121
+ "items": {
122
+ "$ref": "#/$defs/external:core~1canonical-media-buy-action.json"
123
+ },
124
+ "uniqueItems": true
125
+ },
126
+ "warnings": {
127
+ "type": "array",
128
+ "items": {
129
+ "allOf": [
130
+ {
131
+ "$ref": "#/$defs/external:core~1warning.json"
132
+ },
133
+ {
134
+ "properties": {
135
+ "code": {
136
+ "enum": [
137
+ "inventory_shortfall_forecast",
138
+ "flight_change_creates_pacing_risk"
139
+ ]
140
+ }
141
+ }
142
+ }
143
+ ]
144
+ },
145
+ "minItems": 1
146
+ },
147
+ "context": {
148
+ "$ref": "#/$defs/external:core~1context.json"
149
+ },
150
+ "ext": {
151
+ "$ref": "#/$defs/external:core~1ext.json"
152
+ },
153
+ "replayed": {
154
+ "type": "boolean",
155
+ "const": true
156
+ }
157
+ },
158
+ "required": [
159
+ "status",
160
+ "media_buy_id",
161
+ "revision",
162
+ "accepted_proposal",
163
+ "purchase_bindings",
164
+ "available_actions"
165
+ ],
166
+ "additionalProperties": false,
167
+ "not": {
168
+ "required": [
169
+ "errors"
170
+ ]
171
+ }
172
+ },
173
+ {
174
+ "type": "object",
175
+ "properties": {
176
+ "status": {
177
+ "type": "string",
178
+ "const": "failed"
179
+ },
180
+ "errors": {
181
+ "type": "array",
182
+ "items": {
183
+ "$ref": "#/$defs/external:core~1error.json"
184
+ },
185
+ "minItems": 1
186
+ },
187
+ "context": {
188
+ "$ref": "#/$defs/external:core~1context.json"
189
+ },
190
+ "ext": {
191
+ "$ref": "#/$defs/external:core~1ext.json"
192
+ },
193
+ "replayed": {
194
+ "type": "boolean",
195
+ "const": true
196
+ }
197
+ },
198
+ "required": [
199
+ "status",
200
+ "errors"
201
+ ],
202
+ "additionalProperties": false,
203
+ "not": {
204
+ "required": [
205
+ "media_buy_id"
206
+ ]
207
+ }
208
+ },
209
+ {
210
+ "type": "object",
211
+ "properties": {
212
+ "status": {
213
+ "type": "string",
214
+ "const": "submitted"
215
+ },
216
+ "task_id": {
217
+ "type": "string",
218
+ "minLength": 1,
219
+ "x-entity": "task"
220
+ },
221
+ "message": {
222
+ "type": "string",
223
+ "maxLength": 2000
224
+ },
225
+ "errors": {
226
+ "type": "array",
227
+ "items": {
228
+ "$ref": "#/$defs/external:core~1error.json"
229
+ }
230
+ },
231
+ "context": {
232
+ "$ref": "#/$defs/external:core~1context.json"
233
+ },
234
+ "ext": {
235
+ "$ref": "#/$defs/external:core~1ext.json"
236
+ },
237
+ "replayed": {
238
+ "type": "boolean",
239
+ "const": true
240
+ }
241
+ },
242
+ "required": [
243
+ "status",
244
+ "task_id"
245
+ ],
246
+ "additionalProperties": false,
247
+ "not": {
248
+ "required": [
249
+ "media_buy_id"
250
+ ]
251
+ }
252
+ }
253
+ ]
254
+ },
255
+ "external:enums/media-buy-status.json": {
256
+ "type": "string",
257
+ "enum": [
258
+ "pending_creatives",
259
+ "pending_start",
260
+ "active",
261
+ "paused",
262
+ "completed",
263
+ "rejected",
264
+ "canceled"
265
+ ]
266
+ },
267
+ "external:core/canonical-proposal.json": {
268
+ "type": "object",
269
+ "properties": {
270
+ "proposal_id": {
271
+ "type": "string",
272
+ "minLength": 1,
273
+ "maxLength": 255,
274
+ "x-entity": "proposal"
275
+ },
276
+ "proposal_kind": {
277
+ "type": "string",
278
+ "enum": [
279
+ "new_media_buy",
280
+ "media_buy_update",
281
+ "media_buy_cancellation"
282
+ ]
283
+ },
284
+ "parent_proposal_id": {
285
+ "type": "string",
286
+ "minLength": 1,
287
+ "maxLength": 255,
288
+ "x-entity": "proposal"
289
+ },
290
+ "media_buy_id": {
291
+ "type": "string",
292
+ "minLength": 1,
293
+ "x-entity": "media_buy"
294
+ },
295
+ "opportunity_id": {
296
+ "type": "string",
297
+ "minLength": 1,
298
+ "maxLength": 255,
299
+ "pattern": "^[A-Za-z0-9_.:-]{1,255}$",
300
+ "x-entity": "opportunity"
301
+ },
302
+ "base_media_buy_revision": {
303
+ "type": "integer",
304
+ "minimum": 1
305
+ },
306
+ "proposal_status": {
307
+ "$ref": "#/$defs/external:enums~1proposal-status.json"
308
+ },
309
+ "accepted_at": {
310
+ "type": "string",
311
+ "format": "date-time"
312
+ },
313
+ "expires_at": {
314
+ "type": "string",
315
+ "format": "date-time"
316
+ },
317
+ "name": {
318
+ "type": "string",
319
+ "minLength": 1,
320
+ "maxLength": 500
321
+ },
322
+ "description": {
323
+ "type": "string",
324
+ "maxLength": 2000
325
+ },
326
+ "brief_alignment": {
327
+ "type": "string",
328
+ "maxLength": 2000
329
+ },
330
+ "commercial_terms": {
331
+ "$ref": "#/$defs/external:media-buy~1commercial-terms.json"
332
+ },
333
+ "terms_digest": {
334
+ "type": "string",
335
+ "pattern": "^sha256:[A-Za-z0-9_-]{43}$"
336
+ },
337
+ "insertion_order": {
338
+ "$ref": "#/$defs/external:core~1insertion-order.json"
339
+ }
340
+ },
341
+ "required": [
342
+ "proposal_id",
343
+ "proposal_kind",
344
+ "proposal_status",
345
+ "name",
346
+ "commercial_terms",
347
+ "terms_digest"
348
+ ],
349
+ "allOf": [
350
+ {
351
+ "if": {
352
+ "properties": {
353
+ "proposal_kind": {
354
+ "enum": [
355
+ "media_buy_update",
356
+ "media_buy_cancellation"
357
+ ]
358
+ }
359
+ },
360
+ "required": [
361
+ "proposal_kind"
362
+ ]
363
+ },
364
+ "then": {
365
+ "required": [
366
+ "parent_proposal_id",
367
+ "media_buy_id",
368
+ "base_media_buy_revision"
369
+ ]
370
+ }
371
+ },
372
+ {
373
+ "if": {
374
+ "properties": {
375
+ "proposal_status": {
376
+ "const": "accepted"
377
+ }
378
+ },
379
+ "required": [
380
+ "proposal_status"
381
+ ]
382
+ },
383
+ "then": {
384
+ "required": [
385
+ "media_buy_id",
386
+ "accepted_at"
387
+ ]
388
+ }
389
+ },
390
+ {
391
+ "if": {
392
+ "properties": {
393
+ "proposal_status": {
394
+ "const": "committed"
395
+ }
396
+ },
397
+ "required": [
398
+ "proposal_status"
399
+ ]
400
+ },
401
+ "then": {
402
+ "required": [
403
+ "expires_at"
404
+ ]
405
+ }
406
+ },
407
+ {
408
+ "if": {
409
+ "properties": {
410
+ "proposal_kind": {
411
+ "const": "media_buy_cancellation"
412
+ }
413
+ },
414
+ "required": [
415
+ "proposal_kind"
416
+ ]
417
+ },
418
+ "then": {
419
+ "properties": {
420
+ "commercial_terms": {
421
+ "required": [
422
+ "cancellation_terms"
423
+ ]
424
+ }
425
+ }
426
+ }
427
+ }
428
+ ],
429
+ "additionalProperties": false
430
+ },
431
+ "external:enums/proposal-status.json": {
432
+ "type": "string",
433
+ "enum": [
434
+ "draft",
435
+ "committed",
436
+ "accepted"
437
+ ]
438
+ },
439
+ "external:media-buy/commercial-terms.json": {
440
+ "type": "object",
441
+ "x-adcp-validation": {
442
+ "verifier_constraints": {
443
+ "pricing_integrity": {
444
+ "pricing_option_ids": "each_purchase.pricing_option_id_equals_pricing.pricing_option_id",
445
+ "purchase_currencies": "all_purchase.pricing.currency_equal",
446
+ "total_budget_currency": "when_total_budget_present_equals_purchase_pricing_currency",
447
+ "monetary_fields": "purchase_budget_min_spend_and_bidding_use_purchase_pricing_currency",
448
+ "on_violation": "reject_proposal_or_commitment"
449
+ }
450
+ }
451
+ },
452
+ "properties": {
453
+ "source_feed_version": {
454
+ "type": "string",
455
+ "minLength": 1
456
+ },
457
+ "source_pricing_version": {
458
+ "type": "string",
459
+ "minLength": 1
460
+ },
461
+ "brand": {
462
+ "$ref": "#/$defs/external:core~1brand-key.json"
463
+ },
464
+ "advertiser_industry": {
465
+ "$ref": "#/$defs/external:enums~1advertiser-industry.json"
466
+ },
467
+ "purchases": {
468
+ "type": "array",
469
+ "items": {
470
+ "allOf": [
471
+ {
472
+ "$ref": "#/$defs/external:media-buy~1product-purchase.json"
473
+ },
474
+ {
475
+ "required": [
476
+ "product_id",
477
+ "pricing_option_id",
478
+ "pricing",
479
+ "start_time",
480
+ "end_time"
481
+ ]
482
+ }
483
+ ]
484
+ },
485
+ "minItems": 1,
486
+ "x-adcp-validation": {
487
+ "verifier_constraints": {
488
+ "resolved_purchase_terms": "Each purchase carries resolved start_time and end_time. Applicable measurement_terms and performance_standards are copied from the published offer or negotiated successor; omission means no such terms apply."
489
+ }
490
+ }
491
+ },
492
+ "start_time": {
493
+ "$ref": "#/$defs/external:core~1start-timing.json"
494
+ },
495
+ "end_time": {
496
+ "type": "string",
497
+ "format": "date-time"
498
+ },
499
+ "total_budget": {
500
+ "type": "object",
501
+ "properties": {
502
+ "amount": {
503
+ "type": "number",
504
+ "minimum": 0
505
+ },
506
+ "currency": {
507
+ "type": "string",
508
+ "pattern": "^[A-Z]{3}$"
509
+ }
510
+ },
511
+ "required": [
512
+ "amount",
513
+ "currency"
514
+ ],
515
+ "additionalProperties": false
516
+ },
517
+ "daily_budget_cap": {
518
+ "type": "number",
519
+ "minimum": 0
520
+ },
521
+ "budget_cap_timezone": {
522
+ "type": "string",
523
+ "minLength": 1
524
+ },
525
+ "budget_allocation": {
526
+ "$ref": "#/$defs/external:core~1canonical-budget-allocation.json"
527
+ },
528
+ "pacing": {
529
+ "$ref": "#/$defs/external:enums~1pacing.json"
530
+ },
531
+ "bidding": {
532
+ "$ref": "#/$defs/external:core~1bidding-policy.json"
533
+ },
534
+ "invoice_recipient": {
535
+ "$ref": "#/$defs/external:core~1business-entity.json"
536
+ },
537
+ "purchase_order_ref": {
538
+ "type": "string",
539
+ "minLength": 1,
540
+ "maxLength": 255
541
+ },
542
+ "agency_estimate_number": {
543
+ "type": "string",
544
+ "maxLength": 100
545
+ },
546
+ "reporting_commitments": {
547
+ "type": "array",
548
+ "items": {
549
+ "type": "object",
550
+ "properties": {
551
+ "purchase_index": {
552
+ "type": "integer",
553
+ "minimum": 0
554
+ },
555
+ "metrics": {
556
+ "type": "array",
557
+ "items": {
558
+ "$ref": "#/$defs/external:core~1canonical-reporting-commitment.json"
559
+ },
560
+ "minItems": 1
561
+ }
562
+ },
563
+ "required": [
564
+ "purchase_index",
565
+ "metrics"
566
+ ],
567
+ "additionalProperties": false
568
+ },
569
+ "minItems": 1
570
+ },
571
+ "cancellation_terms": {
572
+ "type": "object",
573
+ "properties": {
574
+ "effective_at": {
575
+ "type": "string",
576
+ "format": "date-time"
577
+ },
578
+ "fee": {
579
+ "type": "object",
580
+ "properties": {
581
+ "amount": {
582
+ "type": "number",
583
+ "minimum": 0
584
+ },
585
+ "currency": {
586
+ "type": "string",
587
+ "pattern": "^[A-Z]{3}$"
588
+ }
589
+ },
590
+ "required": [
591
+ "amount",
592
+ "currency"
593
+ ],
594
+ "additionalProperties": false
595
+ },
596
+ "reason": {
597
+ "type": "string",
598
+ "minLength": 1,
599
+ "maxLength": 500
600
+ }
601
+ },
602
+ "required": [
603
+ "effective_at"
604
+ ],
605
+ "additionalProperties": false
606
+ }
607
+ },
608
+ "required": [
609
+ "brand",
610
+ "purchases",
611
+ "start_time",
612
+ "end_time"
613
+ ],
614
+ "additionalProperties": false
615
+ },
616
+ "external:core/brand-key.json": {
617
+ "type": "object",
618
+ "properties": {
619
+ "domain": {
620
+ "type": "string",
621
+ "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$"
622
+ },
623
+ "brand_id": {
624
+ "$ref": "#/$defs/external:core~1brand-id.json"
625
+ },
626
+ "countries": {
627
+ "type": "array",
628
+ "items": {
629
+ "type": "string",
630
+ "pattern": "^[A-Z]{2}$"
631
+ },
632
+ "minItems": 1,
633
+ "uniqueItems": true
634
+ }
635
+ },
636
+ "required": [
637
+ "domain"
638
+ ],
639
+ "additionalProperties": false
640
+ },
641
+ "external:core/brand-id.json": {
642
+ "type": "string",
643
+ "pattern": "^[a-z0-9_]+$",
644
+ "x-entity": "advertiser_brand"
645
+ },
646
+ "external:enums/advertiser-industry.json": {
647
+ "type": "string",
648
+ "x-extensible": true,
649
+ "x-pattern": "^[a-z][a-z0-9_]+(\\.[a-z][a-z0-9_]+)?$",
650
+ "enum": [
651
+ "automotive",
652
+ "automotive.electric_vehicles",
653
+ "automotive.parts_accessories",
654
+ "automotive.luxury",
655
+ "beauty_cosmetics",
656
+ "beauty_cosmetics.skincare",
657
+ "beauty_cosmetics.fragrance",
658
+ "beauty_cosmetics.haircare",
659
+ "cannabis",
660
+ "cpg",
661
+ "cpg.personal_care",
662
+ "cpg.household",
663
+ "dating",
664
+ "education",
665
+ "education.higher_education",
666
+ "education.online_learning",
667
+ "education.k12",
668
+ "energy_utilities",
669
+ "energy_utilities.renewable",
670
+ "fashion_apparel",
671
+ "fashion_apparel.luxury",
672
+ "fashion_apparel.sportswear",
673
+ "finance",
674
+ "finance.banking",
675
+ "finance.insurance",
676
+ "finance.investment",
677
+ "finance.cryptocurrency",
678
+ "food_beverage",
679
+ "food_beverage.alcohol",
680
+ "food_beverage.restaurants",
681
+ "food_beverage.packaged_goods",
682
+ "gambling_betting",
683
+ "gambling_betting.sports_betting",
684
+ "gambling_betting.casino",
685
+ "gaming",
686
+ "gaming.mobile",
687
+ "gaming.console_pc",
688
+ "gaming.esports",
689
+ "government_nonprofit",
690
+ "government_nonprofit.political",
691
+ "government_nonprofit.charity",
692
+ "healthcare",
693
+ "healthcare.pharmaceutical",
694
+ "healthcare.medical_devices",
695
+ "healthcare.wellness",
696
+ "home_garden",
697
+ "home_garden.furniture",
698
+ "home_garden.home_improvement",
699
+ "media_entertainment",
700
+ "media_entertainment.podcasts",
701
+ "media_entertainment.music",
702
+ "media_entertainment.film_tv",
703
+ "media_entertainment.publishing",
704
+ "media_entertainment.live_events",
705
+ "pets",
706
+ "professional_services",
707
+ "professional_services.legal",
708
+ "professional_services.consulting",
709
+ "real_estate",
710
+ "real_estate.residential",
711
+ "real_estate.commercial",
712
+ "recruitment_hr",
713
+ "retail",
714
+ "retail.ecommerce",
715
+ "retail.department_stores",
716
+ "sports_fitness",
717
+ "sports_fitness.equipment",
718
+ "sports_fitness.teams_leagues",
719
+ "technology",
720
+ "technology.software",
721
+ "technology.hardware",
722
+ "technology.ai_ml",
723
+ "telecom",
724
+ "telecom.mobile_carriers",
725
+ "telecom.internet_providers",
726
+ "transportation_logistics",
727
+ "travel_hospitality",
728
+ "travel_hospitality.airlines",
729
+ "travel_hospitality.hotels",
730
+ "travel_hospitality.cruise",
731
+ "travel_hospitality.tourism"
732
+ ]
733
+ },
734
+ "external:media-buy/product-purchase.json": {
735
+ "type": "object",
736
+ "x-adcp-validation": {
737
+ "verifier_constraints": {
738
+ "direct_purchase_terms": "On buy_products, supplied start_time, end_time, measurement_terms, and performance_standards MUST exactly match the selected published offer; omission inherits that offer.",
739
+ "accepted_snapshot_terms": "Inside canonical-proposal.commercial_terms, each purchase MUST carry resolved start_time and end_time and MUST preserve every applicable measurement term and performance standard. Omission of measurement_terms or performance_standards means the accepted offer declared none.",
740
+ "pricing_identity": {
741
+ "pricing_option_id": "equals_pricing.pricing_option_id_when_pricing_present",
742
+ "on_violation": "reject_before_commitment"
743
+ }
744
+ }
745
+ },
746
+ "properties": {
747
+ "product_id": {
748
+ "type": "string",
749
+ "minLength": 1,
750
+ "x-entity": "product"
751
+ },
752
+ "pricing_option_id": {
753
+ "type": "string",
754
+ "minLength": 1,
755
+ "x-entity": "product_pricing_option"
756
+ },
757
+ "pricing": {
758
+ "$ref": "#/$defs/external:core~1canonical-pricing-option.json"
759
+ },
760
+ "format_option_refs": {
761
+ "type": "array",
762
+ "items": {
763
+ "$ref": "#/$defs/external:core~1format-option-ref.json"
764
+ },
765
+ "minItems": 1
766
+ },
767
+ "catalog_ids": {
768
+ "type": "array",
769
+ "items": {
770
+ "type": "string",
771
+ "minLength": 1,
772
+ "x-entity": "catalog"
773
+ },
774
+ "minItems": 1,
775
+ "uniqueItems": true
776
+ },
777
+ "budget": {
778
+ "type": "number",
779
+ "minimum": 0
780
+ },
781
+ "daily_budget_cap": {
782
+ "type": "number",
783
+ "minimum": 0
784
+ },
785
+ "min_spend_target": {
786
+ "type": "number",
787
+ "minimum": 0
788
+ },
789
+ "impressions": {
790
+ "type": "number",
791
+ "minimum": 0
792
+ },
793
+ "start_time": {
794
+ "type": "string",
795
+ "format": "date-time",
796
+ "not": {
797
+ "const": "asap"
798
+ }
799
+ },
800
+ "end_time": {
801
+ "type": "string",
802
+ "format": "date-time"
803
+ },
804
+ "pacing": {
805
+ "$ref": "#/$defs/external:enums~1pacing.json"
806
+ },
807
+ "bidding": {
808
+ "$ref": "#/$defs/external:core~1bidding-policy.json"
809
+ },
810
+ "targeting_overlay": {
811
+ "$ref": "#/$defs/external:core~1targeting.json"
812
+ },
813
+ "optimization_goals": {
814
+ "type": "array",
815
+ "items": {
816
+ "$ref": "#/$defs/external:core~1canonical-optimization-goal.json"
817
+ },
818
+ "minItems": 1
819
+ },
820
+ "audience_evidence_requirements": {
821
+ "$ref": "#/$defs/external:core~1product-audience-evidence-requirements.json"
822
+ },
823
+ "audience_evidence_pins": {
824
+ "type": "array",
825
+ "items": {
826
+ "$ref": "#/$defs/external:core~1audience-evidence-pin.json"
827
+ },
828
+ "minItems": 1
829
+ },
830
+ "agency_estimate_number": {
831
+ "type": "string",
832
+ "maxLength": 100
833
+ },
834
+ "context": {
835
+ "$ref": "#/$defs/external:core~1context.json"
836
+ },
837
+ "ext": {
838
+ "$ref": "#/$defs/external:core~1ext.json"
839
+ },
840
+ "measurement_terms": {
841
+ "$ref": "#/$defs/external:core~1canonical-measurement-terms.json"
842
+ },
843
+ "performance_standards": {
844
+ "type": "array",
845
+ "items": {
846
+ "$ref": "#/$defs/external:core~1canonical-performance-standard.json"
847
+ },
848
+ "minItems": 1
849
+ }
850
+ },
851
+ "required": [
852
+ "product_id",
853
+ "pricing_option_id"
854
+ ],
855
+ "additionalProperties": false,
856
+ "not": {
857
+ "anyOf": [
858
+ {
859
+ "required": [
860
+ "creatives"
861
+ ]
862
+ },
863
+ {
864
+ "required": [
865
+ "creative_assignments"
866
+ ]
867
+ },
868
+ {
869
+ "required": [
870
+ "catalogs"
871
+ ]
872
+ }
873
+ ]
874
+ }
875
+ },
876
+ "external:core/canonical-pricing-option.json": {
877
+ "type": "object",
878
+ "properties": {
879
+ "pricing_option_id": {
880
+ "type": "string",
881
+ "minLength": 1,
882
+ "x-entity": "product_pricing_option"
883
+ },
884
+ "pricing_model": {
885
+ "type": "string",
886
+ "enum": [
887
+ "cpm",
888
+ "vcpm",
889
+ "cpc",
890
+ "cpcv",
891
+ "cpv",
892
+ "cpp",
893
+ "cpa",
894
+ "revenue_share",
895
+ "flat_rate",
896
+ "time"
897
+ ]
898
+ },
899
+ "currency": {
900
+ "type": "string",
901
+ "pattern": "^[A-Z]{3}$"
902
+ },
903
+ "fixed_price": {
904
+ "type": "number",
905
+ "minimum": 0
906
+ },
907
+ "floor_price": {
908
+ "type": "number",
909
+ "minimum": 0
910
+ },
911
+ "price_guidance": {
912
+ "$ref": "#/$defs/external:pricing-options~1price-guidance.json"
913
+ },
914
+ "min_spend_per_package": {
915
+ "type": "number",
916
+ "minimum": 0
917
+ },
918
+ "price_breakdown": {
919
+ "$ref": "#/$defs/external:pricing-options~1price-breakdown.json"
920
+ },
921
+ "eligible_adjustments": {
922
+ "type": "array",
923
+ "items": {
924
+ "$ref": "#/$defs/external:enums~1adjustment-kind.json"
925
+ },
926
+ "uniqueItems": true
927
+ },
928
+ "parameters": {
929
+ "type": "object",
930
+ "additionalProperties": true
931
+ },
932
+ "event_type": {
933
+ "$ref": "#/$defs/external:enums~1event-type.json"
934
+ },
935
+ "custom_event_name": {
936
+ "type": "string",
937
+ "minLength": 1
938
+ },
939
+ "event_source_id": {
940
+ "type": "string",
941
+ "minLength": 1,
942
+ "x-entity": "event_source"
943
+ },
944
+ "commission_rate": {
945
+ "type": "number",
946
+ "exclusiveMinimum": 0,
947
+ "maximum": 1
948
+ },
949
+ "commission_basis_description": {
950
+ "type": "string",
951
+ "minLength": 1,
952
+ "maxLength": 1000
953
+ }
954
+ },
955
+ "required": [
956
+ "pricing_option_id",
957
+ "pricing_model",
958
+ "currency"
959
+ ],
960
+ "allOf": [
961
+ {
962
+ "not": {
963
+ "required": [
964
+ "fixed_price",
965
+ "floor_price"
966
+ ]
967
+ }
968
+ },
969
+ {
970
+ "if": {
971
+ "properties": {
972
+ "pricing_model": {
973
+ "const": "cpa"
974
+ }
975
+ },
976
+ "required": [
977
+ "pricing_model"
978
+ ]
979
+ },
980
+ "then": {
981
+ "required": [
982
+ "event_type",
983
+ "fixed_price"
984
+ ]
985
+ }
986
+ },
987
+ {
988
+ "if": {
989
+ "properties": {
990
+ "pricing_model": {
991
+ "const": "revenue_share"
992
+ }
993
+ },
994
+ "required": [
995
+ "pricing_model"
996
+ ]
997
+ },
998
+ "then": {
999
+ "required": [
1000
+ "event_type",
1001
+ "event_source_id",
1002
+ "commission_rate",
1003
+ "commission_basis_description"
1004
+ ]
1005
+ }
1006
+ },
1007
+ {
1008
+ "if": {
1009
+ "properties": {
1010
+ "pricing_model": {
1011
+ "enum": [
1012
+ "cpv",
1013
+ "cpp",
1014
+ "time"
1015
+ ]
1016
+ }
1017
+ },
1018
+ "required": [
1019
+ "pricing_model"
1020
+ ]
1021
+ },
1022
+ "then": {
1023
+ "required": [
1024
+ "parameters"
1025
+ ]
1026
+ }
1027
+ },
1028
+ {
1029
+ "if": {
1030
+ "properties": {
1031
+ "event_type": {
1032
+ "const": "custom"
1033
+ }
1034
+ },
1035
+ "required": [
1036
+ "event_type"
1037
+ ]
1038
+ },
1039
+ "then": {
1040
+ "required": [
1041
+ "custom_event_name"
1042
+ ]
1043
+ }
1044
+ }
1045
+ ],
1046
+ "additionalProperties": false
1047
+ },
1048
+ "external:pricing-options/price-guidance.json": {
1049
+ "type": "object",
1050
+ "properties": {
1051
+ "p25": {
1052
+ "type": "number",
1053
+ "minimum": 0
1054
+ },
1055
+ "p50": {
1056
+ "type": "number",
1057
+ "minimum": 0
1058
+ },
1059
+ "p75": {
1060
+ "type": "number",
1061
+ "minimum": 0
1062
+ },
1063
+ "p90": {
1064
+ "type": "number",
1065
+ "minimum": 0
1066
+ }
1067
+ },
1068
+ "additionalProperties": true
1069
+ },
1070
+ "external:pricing-options/price-breakdown.json": {
1071
+ "type": "object",
1072
+ "properties": {
1073
+ "list_price": {
1074
+ "type": "number",
1075
+ "exclusiveMinimum": 0
1076
+ },
1077
+ "adjustments": {
1078
+ "type": "array",
1079
+ "items": {
1080
+ "type": "object",
1081
+ "properties": {
1082
+ "kind": {
1083
+ "$ref": "#/$defs/external:enums~1adjustment-kind.json"
1084
+ },
1085
+ "name": {
1086
+ "type": "string",
1087
+ "maxLength": 64
1088
+ },
1089
+ "rate": {
1090
+ "type": "number",
1091
+ "exclusiveMinimum": 0,
1092
+ "exclusiveMaximum": 1
1093
+ },
1094
+ "amount": {
1095
+ "type": "number",
1096
+ "exclusiveMinimum": 0
1097
+ },
1098
+ "description": {
1099
+ "type": "string",
1100
+ "maxLength": 256
1101
+ },
1102
+ "beneficiary": {
1103
+ "type": "string",
1104
+ "maxLength": 256
1105
+ }
1106
+ },
1107
+ "required": [
1108
+ "kind",
1109
+ "name"
1110
+ ],
1111
+ "oneOf": [
1112
+ {
1113
+ "required": [
1114
+ "rate"
1115
+ ]
1116
+ },
1117
+ {
1118
+ "required": [
1119
+ "amount"
1120
+ ]
1121
+ }
1122
+ ],
1123
+ "additionalProperties": true
1124
+ },
1125
+ "minItems": 1,
1126
+ "maxItems": 20
1127
+ }
1128
+ },
1129
+ "required": [
1130
+ "list_price",
1131
+ "adjustments"
1132
+ ],
1133
+ "additionalProperties": true
1134
+ },
1135
+ "external:enums/adjustment-kind.json": {
1136
+ "type": "string",
1137
+ "enum": [
1138
+ "fee",
1139
+ "discount",
1140
+ "commission",
1141
+ "settlement"
1142
+ ]
1143
+ },
1144
+ "external:enums/event-type.json": {
1145
+ "type": "string",
1146
+ "enum": [
1147
+ "page_view",
1148
+ "view_content",
1149
+ "select_content",
1150
+ "select_item",
1151
+ "search",
1152
+ "share",
1153
+ "add_to_cart",
1154
+ "remove_from_cart",
1155
+ "viewed_cart",
1156
+ "add_to_wishlist",
1157
+ "initiate_checkout",
1158
+ "add_payment_info",
1159
+ "purchase",
1160
+ "refund",
1161
+ "lead",
1162
+ "qualify_lead",
1163
+ "close_convert_lead",
1164
+ "disqualify_lead",
1165
+ "complete_registration",
1166
+ "subscribe",
1167
+ "follow",
1168
+ "content_view",
1169
+ "watch_milestone",
1170
+ "start_trial",
1171
+ "app_install",
1172
+ "app_launch",
1173
+ "contact",
1174
+ "schedule",
1175
+ "donate",
1176
+ "submit_application",
1177
+ "custom"
1178
+ ]
1179
+ },
1180
+ "external:core/format-option-ref.json": {
1181
+ "type": "object",
1182
+ "discriminator": {
1183
+ "propertyName": "scope"
1184
+ },
1185
+ "oneOf": [
1186
+ {
1187
+ "type": "object",
1188
+ "properties": {
1189
+ "scope": {
1190
+ "type": "string",
1191
+ "const": "publisher"
1192
+ },
1193
+ "publisher_domain": {
1194
+ "type": "string",
1195
+ "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$"
1196
+ },
1197
+ "format_option_id": {
1198
+ "type": "string"
1199
+ }
1200
+ },
1201
+ "required": [
1202
+ "scope",
1203
+ "publisher_domain",
1204
+ "format_option_id"
1205
+ ],
1206
+ "additionalProperties": true
1207
+ },
1208
+ {
1209
+ "type": "object",
1210
+ "properties": {
1211
+ "scope": {
1212
+ "type": "string",
1213
+ "const": "product"
1214
+ },
1215
+ "format_option_id": {
1216
+ "type": "string"
1217
+ },
1218
+ "publisher_domain": false
1219
+ },
1220
+ "required": [
1221
+ "scope",
1222
+ "format_option_id"
1223
+ ],
1224
+ "additionalProperties": true
1225
+ }
1226
+ ],
1227
+ "additionalProperties": true
1228
+ },
1229
+ "external:enums/pacing.json": {
1230
+ "type": "string",
1231
+ "enum": [
1232
+ "even",
1233
+ "asap",
1234
+ "front_loaded"
1235
+ ]
1236
+ },
1237
+ "external:core/bidding-policy.json": {
1238
+ "type": "object",
1239
+ "properties": {
1240
+ "automatic": {
1241
+ "type": "boolean",
1242
+ "const": true
1243
+ },
1244
+ "bid_amount": {
1245
+ "type": "number",
1246
+ "exclusiveMinimum": 0
1247
+ },
1248
+ "max_bid": {
1249
+ "type": "number",
1250
+ "exclusiveMinimum": 0
1251
+ },
1252
+ "cost_per": {
1253
+ "type": "object",
1254
+ "properties": {
1255
+ "amount": {
1256
+ "type": "number",
1257
+ "exclusiveMinimum": 0
1258
+ },
1259
+ "strength": {
1260
+ "type": "string",
1261
+ "enum": [
1262
+ "cap",
1263
+ "target"
1264
+ ]
1265
+ }
1266
+ },
1267
+ "required": [
1268
+ "amount",
1269
+ "strength"
1270
+ ],
1271
+ "additionalProperties": false
1272
+ },
1273
+ "roas": {
1274
+ "type": "object",
1275
+ "properties": {
1276
+ "value": {
1277
+ "type": "number",
1278
+ "exclusiveMinimum": 0
1279
+ },
1280
+ "strength": {
1281
+ "type": "string",
1282
+ "enum": [
1283
+ "floor",
1284
+ "target"
1285
+ ]
1286
+ }
1287
+ },
1288
+ "required": [
1289
+ "value",
1290
+ "strength"
1291
+ ],
1292
+ "additionalProperties": false
1293
+ }
1294
+ },
1295
+ "minProperties": 1,
1296
+ "allOf": [
1297
+ {
1298
+ "not": {
1299
+ "anyOf": [
1300
+ {
1301
+ "required": [
1302
+ "automatic",
1303
+ "bid_amount"
1304
+ ]
1305
+ },
1306
+ {
1307
+ "required": [
1308
+ "automatic",
1309
+ "max_bid"
1310
+ ]
1311
+ },
1312
+ {
1313
+ "required": [
1314
+ "automatic",
1315
+ "cost_per"
1316
+ ]
1317
+ },
1318
+ {
1319
+ "required": [
1320
+ "automatic",
1321
+ "roas"
1322
+ ]
1323
+ },
1324
+ {
1325
+ "required": [
1326
+ "bid_amount",
1327
+ "max_bid"
1328
+ ]
1329
+ },
1330
+ {
1331
+ "required": [
1332
+ "bid_amount",
1333
+ "cost_per"
1334
+ ]
1335
+ },
1336
+ {
1337
+ "required": [
1338
+ "bid_amount",
1339
+ "roas"
1340
+ ]
1341
+ },
1342
+ {
1343
+ "required": [
1344
+ "cost_per",
1345
+ "roas"
1346
+ ]
1347
+ }
1348
+ ]
1349
+ }
1350
+ }
1351
+ ],
1352
+ "additionalProperties": false
1353
+ },
1354
+ "external:core/targeting.json": {
1355
+ "x-adcp-validation": {
1356
+ "disjoint_place_fields": {
1357
+ "include": "geo_places",
1358
+ "exclude": "geo_places_exclude",
1359
+ "identity": [
1360
+ "country",
1361
+ "system",
1362
+ "place_type",
1363
+ "value"
1364
+ ]
1365
+ },
1366
+ "description": "JSON Schema draft-07 cannot compare values across sibling arrays. Conformance tooling MUST reject any place identity present in both geo_places and geo_places_exclude. Catalog version is deliberately not part of place identity: a stable ID cannot be both included and excluded by assigning different versions."
1367
+ },
1368
+ "type": "object",
1369
+ "properties": {
1370
+ "geo_countries": {
1371
+ "type": "array",
1372
+ "items": {
1373
+ "type": "string",
1374
+ "pattern": "^[A-Z]{2}$"
1375
+ },
1376
+ "minItems": 1
1377
+ },
1378
+ "geo_countries_exclude": {
1379
+ "type": "array",
1380
+ "items": {
1381
+ "type": "string",
1382
+ "pattern": "^[A-Z]{2}$"
1383
+ },
1384
+ "minItems": 1
1385
+ },
1386
+ "geo_regions": {
1387
+ "type": "array",
1388
+ "items": {
1389
+ "type": "string",
1390
+ "pattern": "^[A-Z]{2}-[A-Z0-9]{1,3}$"
1391
+ },
1392
+ "minItems": 1
1393
+ },
1394
+ "geo_regions_exclude": {
1395
+ "type": "array",
1396
+ "x-adcp-validation": {
1397
+ "disjoint_with": "geo_regions",
1398
+ "spec": "docs/media-buy/advanced-topics/targeting.mdx#geo_regions_exclude"
1399
+ },
1400
+ "items": {
1401
+ "type": "string",
1402
+ "pattern": "^[A-Z]{2}-[A-Z0-9]{1,3}$"
1403
+ },
1404
+ "minItems": 1
1405
+ },
1406
+ "geo_metros": {
1407
+ "type": "array",
1408
+ "items": {
1409
+ "type": "object",
1410
+ "properties": {
1411
+ "system": {
1412
+ "$ref": "#/$defs/external:enums~1metro-system.json"
1413
+ },
1414
+ "values": {
1415
+ "type": "array",
1416
+ "items": {
1417
+ "type": "string"
1418
+ },
1419
+ "minItems": 1
1420
+ }
1421
+ },
1422
+ "required": [
1423
+ "system",
1424
+ "values"
1425
+ ],
1426
+ "additionalProperties": false
1427
+ },
1428
+ "minItems": 1
1429
+ },
1430
+ "geo_metros_exclude": {
1431
+ "type": "array",
1432
+ "items": {
1433
+ "type": "object",
1434
+ "properties": {
1435
+ "system": {
1436
+ "$ref": "#/$defs/external:enums~1metro-system.json"
1437
+ },
1438
+ "values": {
1439
+ "type": "array",
1440
+ "items": {
1441
+ "type": "string"
1442
+ },
1443
+ "minItems": 1
1444
+ }
1445
+ },
1446
+ "required": [
1447
+ "system",
1448
+ "values"
1449
+ ],
1450
+ "additionalProperties": false
1451
+ },
1452
+ "minItems": 1
1453
+ },
1454
+ "geo_postal_areas": {
1455
+ "type": "array",
1456
+ "items": {
1457
+ "$ref": "#/$defs/external:core~1postal-area.json"
1458
+ },
1459
+ "minItems": 1
1460
+ },
1461
+ "geo_postal_areas_exclude": {
1462
+ "type": "array",
1463
+ "items": {
1464
+ "$ref": "#/$defs/external:core~1postal-area.json"
1465
+ },
1466
+ "minItems": 1
1467
+ },
1468
+ "geo_places": {
1469
+ "type": "array",
1470
+ "items": {
1471
+ "$ref": "#/$defs/external:core~1geo-place-area.json",
1472
+ "x-adcp-schema-uri": "/schemas/core/geo-place-area.json"
1473
+ },
1474
+ "minItems": 1
1475
+ },
1476
+ "geo_places_exclude": {
1477
+ "type": "array",
1478
+ "items": {
1479
+ "$ref": "#/$defs/external:core~1geo-place-area.json",
1480
+ "x-adcp-schema-uri": "/schemas/core/geo-place-area.json"
1481
+ },
1482
+ "minItems": 1
1483
+ },
1484
+ "daypart_targets": {
1485
+ "type": "array",
1486
+ "items": {
1487
+ "$ref": "#/$defs/external:core~1daypart-target.json"
1488
+ },
1489
+ "minItems": 1
1490
+ },
1491
+ "axe_include_segment": {
1492
+ "type": "string",
1493
+ "deprecated": true
1494
+ },
1495
+ "axe_exclude_segment": {
1496
+ "type": "string",
1497
+ "deprecated": true
1498
+ },
1499
+ "audience_include": {
1500
+ "type": "array",
1501
+ "items": {
1502
+ "type": "string"
1503
+ },
1504
+ "minItems": 1
1505
+ },
1506
+ "audience_exclude": {
1507
+ "type": "array",
1508
+ "items": {
1509
+ "type": "string"
1510
+ },
1511
+ "minItems": 1
1512
+ },
1513
+ "signal_targeting_groups": {
1514
+ "$ref": "#/$defs/external:core~1package-signal-targeting-groups.json"
1515
+ },
1516
+ "signal_targeting": {
1517
+ "type": "array",
1518
+ "deprecated": true,
1519
+ "items": {
1520
+ "$ref": "#/$defs/external:core~1signal-targeting.json"
1521
+ },
1522
+ "minItems": 1
1523
+ },
1524
+ "demographics": {
1525
+ "$ref": "#/$defs/external:core~1demographic-targeting-intent.json"
1526
+ },
1527
+ "frequency_cap": {
1528
+ "$ref": "#/$defs/external:core~1frequency-cap.json"
1529
+ },
1530
+ "property_list": {
1531
+ "$ref": "#/$defs/external:core~1property-list-ref.json"
1532
+ },
1533
+ "property_list_exclude": {
1534
+ "$ref": "#/$defs/external:core~1property-list-ref.json"
1535
+ },
1536
+ "collection_list": {
1537
+ "$ref": "#/$defs/external:core~1collection-list-ref.json"
1538
+ },
1539
+ "collection_list_exclude": {
1540
+ "$ref": "#/$defs/external:core~1collection-list-ref.json"
1541
+ },
1542
+ "placement_selection": {
1543
+ "$ref": "#/$defs/external:core~1placement-selection.json"
1544
+ },
1545
+ "age_restriction": {
1546
+ "type": "object",
1547
+ "properties": {
1548
+ "min": {
1549
+ "type": "integer",
1550
+ "minimum": 13,
1551
+ "maximum": 99
1552
+ },
1553
+ "verification_required": {
1554
+ "type": "boolean",
1555
+ "default": false
1556
+ },
1557
+ "accepted_methods": {
1558
+ "type": "array",
1559
+ "items": {
1560
+ "$ref": "#/$defs/external:enums~1age-verification-method.json"
1561
+ },
1562
+ "minItems": 1
1563
+ }
1564
+ },
1565
+ "required": [
1566
+ "min"
1567
+ ],
1568
+ "additionalProperties": false
1569
+ },
1570
+ "device_platform": {
1571
+ "type": "array",
1572
+ "items": {
1573
+ "$ref": "#/$defs/external:enums~1device-platform.json"
1574
+ },
1575
+ "minItems": 1
1576
+ },
1577
+ "device_platform_exclude": {
1578
+ "type": "array",
1579
+ "items": {
1580
+ "$ref": "#/$defs/external:enums~1device-platform.json"
1581
+ },
1582
+ "minItems": 1
1583
+ },
1584
+ "device_type": {
1585
+ "type": "array",
1586
+ "items": {
1587
+ "$ref": "#/$defs/external:enums~1device-type.json"
1588
+ },
1589
+ "minItems": 1
1590
+ },
1591
+ "device_type_exclude": {
1592
+ "type": "array",
1593
+ "items": {
1594
+ "$ref": "#/$defs/external:enums~1device-type.json"
1595
+ },
1596
+ "minItems": 1
1597
+ },
1598
+ "browser": {
1599
+ "type": "array",
1600
+ "items": {
1601
+ "$ref": "#/$defs/external:enums~1browser-family.json"
1602
+ },
1603
+ "minItems": 1,
1604
+ "uniqueItems": true
1605
+ },
1606
+ "browser_exclude": {
1607
+ "type": "array",
1608
+ "items": {
1609
+ "$ref": "#/$defs/external:enums~1browser-family.json"
1610
+ },
1611
+ "minItems": 1,
1612
+ "uniqueItems": true
1613
+ },
1614
+ "store_catchments": {
1615
+ "type": "array",
1616
+ "items": {
1617
+ "type": "object",
1618
+ "properties": {
1619
+ "catalog_id": {
1620
+ "type": "string"
1621
+ },
1622
+ "store_ids": {
1623
+ "type": "array",
1624
+ "items": {
1625
+ "type": "string"
1626
+ },
1627
+ "minItems": 1
1628
+ },
1629
+ "catchment_ids": {
1630
+ "type": "array",
1631
+ "items": {
1632
+ "type": "string"
1633
+ },
1634
+ "minItems": 1
1635
+ }
1636
+ },
1637
+ "required": [
1638
+ "catalog_id"
1639
+ ],
1640
+ "additionalProperties": true
1641
+ },
1642
+ "minItems": 1
1643
+ },
1644
+ "geo_proximity": {
1645
+ "type": "array",
1646
+ "items": {
1647
+ "type": "object",
1648
+ "properties": {
1649
+ "lat": {
1650
+ "type": "number",
1651
+ "minimum": -90,
1652
+ "maximum": 90
1653
+ },
1654
+ "lng": {
1655
+ "type": "number",
1656
+ "minimum": -180,
1657
+ "maximum": 180
1658
+ },
1659
+ "label": {
1660
+ "type": "string"
1661
+ },
1662
+ "travel_time": {
1663
+ "type": "object",
1664
+ "properties": {
1665
+ "value": {
1666
+ "type": "number",
1667
+ "minimum": 1
1668
+ },
1669
+ "unit": {
1670
+ "$ref": "#/$defs/external:enums~1travel-time-unit.json"
1671
+ }
1672
+ },
1673
+ "required": [
1674
+ "value",
1675
+ "unit"
1676
+ ],
1677
+ "additionalProperties": false
1678
+ },
1679
+ "transport_mode": {
1680
+ "$ref": "#/$defs/external:enums~1transport-mode.json"
1681
+ },
1682
+ "radius": {
1683
+ "type": "object",
1684
+ "properties": {
1685
+ "value": {
1686
+ "type": "number",
1687
+ "exclusiveMinimum": 0
1688
+ },
1689
+ "unit": {
1690
+ "$ref": "#/$defs/external:enums~1distance-unit.json"
1691
+ }
1692
+ },
1693
+ "required": [
1694
+ "value",
1695
+ "unit"
1696
+ ],
1697
+ "additionalProperties": false
1698
+ },
1699
+ "geometry": {
1700
+ "type": "object",
1701
+ "properties": {
1702
+ "type": {
1703
+ "type": "string",
1704
+ "enum": [
1705
+ "Polygon",
1706
+ "MultiPolygon"
1707
+ ]
1708
+ },
1709
+ "coordinates": {
1710
+ "type": "array"
1711
+ }
1712
+ },
1713
+ "required": [
1714
+ "type",
1715
+ "coordinates"
1716
+ ],
1717
+ "additionalProperties": false
1718
+ },
1719
+ "ext": {
1720
+ "$ref": "#/$defs/external:core~1ext.json"
1721
+ }
1722
+ },
1723
+ "oneOf": [
1724
+ {
1725
+ "required": [
1726
+ "lat",
1727
+ "lng",
1728
+ "travel_time",
1729
+ "transport_mode"
1730
+ ],
1731
+ "not": {
1732
+ "anyOf": [
1733
+ {
1734
+ "required": [
1735
+ "radius"
1736
+ ]
1737
+ },
1738
+ {
1739
+ "required": [
1740
+ "geometry"
1741
+ ]
1742
+ }
1743
+ ]
1744
+ }
1745
+ },
1746
+ {
1747
+ "required": [
1748
+ "lat",
1749
+ "lng",
1750
+ "radius"
1751
+ ],
1752
+ "not": {
1753
+ "anyOf": [
1754
+ {
1755
+ "required": [
1756
+ "travel_time"
1757
+ ]
1758
+ },
1759
+ {
1760
+ "required": [
1761
+ "geometry"
1762
+ ]
1763
+ }
1764
+ ]
1765
+ }
1766
+ },
1767
+ {
1768
+ "required": [
1769
+ "geometry"
1770
+ ],
1771
+ "not": {
1772
+ "anyOf": [
1773
+ {
1774
+ "required": [
1775
+ "travel_time"
1776
+ ]
1777
+ },
1778
+ {
1779
+ "required": [
1780
+ "radius"
1781
+ ]
1782
+ }
1783
+ ]
1784
+ }
1785
+ }
1786
+ ],
1787
+ "additionalProperties": true
1788
+ },
1789
+ "minItems": 1
1790
+ },
1791
+ "language": {
1792
+ "type": "array",
1793
+ "items": {
1794
+ "$ref": "#/$defs/external:core~1locale-tag.json"
1795
+ },
1796
+ "minItems": 1
1797
+ },
1798
+ "keyword_targets": {
1799
+ "type": "array",
1800
+ "items": {
1801
+ "type": "object",
1802
+ "properties": {
1803
+ "keyword": {
1804
+ "type": "string",
1805
+ "minLength": 1
1806
+ },
1807
+ "match_type": {
1808
+ "$ref": "#/$defs/external:enums~1match-type.json"
1809
+ },
1810
+ "bid_price": {
1811
+ "type": "number",
1812
+ "minimum": 0
1813
+ }
1814
+ },
1815
+ "required": [
1816
+ "keyword",
1817
+ "match_type"
1818
+ ],
1819
+ "additionalProperties": false
1820
+ },
1821
+ "minItems": 1
1822
+ },
1823
+ "negative_keywords": {
1824
+ "type": "array",
1825
+ "items": {
1826
+ "type": "object",
1827
+ "properties": {
1828
+ "keyword": {
1829
+ "type": "string",
1830
+ "minLength": 1
1831
+ },
1832
+ "match_type": {
1833
+ "$ref": "#/$defs/external:enums~1match-type.json"
1834
+ }
1835
+ },
1836
+ "required": [
1837
+ "keyword",
1838
+ "match_type"
1839
+ ],
1840
+ "additionalProperties": false
1841
+ },
1842
+ "minItems": 1
1843
+ }
1844
+ },
1845
+ "allOf": [
1846
+ {
1847
+ "if": {
1848
+ "required": [
1849
+ "demographics",
1850
+ "age_restriction"
1851
+ ]
1852
+ },
1853
+ "then": {
1854
+ "properties": {
1855
+ "demographics": {
1856
+ "properties": {
1857
+ "age": {
1858
+ "properties": {
1859
+ "include_unknown": {
1860
+ "const": false
1861
+ }
1862
+ }
1863
+ }
1864
+ }
1865
+ }
1866
+ }
1867
+ }
1868
+ },
1869
+ {
1870
+ "if": {
1871
+ "properties": {
1872
+ "age_restriction": {
1873
+ "properties": {
1874
+ "verification_required": {
1875
+ "const": true
1876
+ }
1877
+ },
1878
+ "required": [
1879
+ "verification_required"
1880
+ ]
1881
+ },
1882
+ "demographics": {
1883
+ "properties": {
1884
+ "age": {
1885
+ "required": [
1886
+ "accepted_bases"
1887
+ ]
1888
+ }
1889
+ },
1890
+ "required": [
1891
+ "age"
1892
+ ]
1893
+ }
1894
+ },
1895
+ "required": [
1896
+ "demographics",
1897
+ "age_restriction"
1898
+ ]
1899
+ },
1900
+ "then": {
1901
+ "properties": {
1902
+ "demographics": {
1903
+ "properties": {
1904
+ "age": {
1905
+ "properties": {
1906
+ "accepted_bases": {
1907
+ "contains": {
1908
+ "const": "verified"
1909
+ }
1910
+ }
1911
+ }
1912
+ }
1913
+ }
1914
+ }
1915
+ }
1916
+ }
1917
+ }
1918
+ ],
1919
+ "additionalProperties": true
1920
+ },
1921
+ "external:enums/metro-system.json": {
1922
+ "type": "string",
1923
+ "enum": [
1924
+ "nielsen_dma",
1925
+ "uk_itl1",
1926
+ "uk_itl2",
1927
+ "eurostat_nuts2",
1928
+ "custom"
1929
+ ]
1930
+ },
1931
+ "external:core/postal-area.json": {
1932
+ "anyOf": [
1933
+ {
1934
+ "type": "object",
1935
+ "allOf": [
1936
+ {
1937
+ "$ref": "#/$defs/external:core~1postal-country-system.json"
1938
+ }
1939
+ ],
1940
+ "properties": {
1941
+ "country": {
1942
+ "type": "string",
1943
+ "pattern": "^[A-Z]{2}$"
1944
+ },
1945
+ "system": {
1946
+ "$ref": "#/$defs/external:enums~1postal-system.json"
1947
+ },
1948
+ "values": {
1949
+ "type": "array",
1950
+ "items": {
1951
+ "type": "string"
1952
+ },
1953
+ "minItems": 1
1954
+ }
1955
+ },
1956
+ "required": [
1957
+ "country",
1958
+ "system",
1959
+ "values"
1960
+ ],
1961
+ "additionalProperties": false
1962
+ },
1963
+ {
1964
+ "deprecated": true,
1965
+ "type": "object",
1966
+ "properties": {
1967
+ "system": {
1968
+ "$ref": "#/$defs/external:enums~1legacy-postal-system.json",
1969
+ "deprecated": true
1970
+ },
1971
+ "values": {
1972
+ "type": "array",
1973
+ "items": {
1974
+ "type": "string"
1975
+ },
1976
+ "minItems": 1
1977
+ }
1978
+ },
1979
+ "required": [
1980
+ "system",
1981
+ "values"
1982
+ ],
1983
+ "additionalProperties": false
1984
+ }
1985
+ ]
1986
+ },
1987
+ "external:core/postal-country-system.json": {
1988
+ "type": "object",
1989
+ "properties": {
1990
+ "country": {
1991
+ "type": "string",
1992
+ "pattern": "^[A-Z]{2}$"
1993
+ },
1994
+ "system": {
1995
+ "$ref": "#/$defs/external:enums~1postal-system.json"
1996
+ }
1997
+ },
1998
+ "required": [
1999
+ "country",
2000
+ "system"
2001
+ ],
2002
+ "anyOf": [
2003
+ {
2004
+ "properties": {
2005
+ "country": {
2006
+ "const": "US"
2007
+ },
2008
+ "system": {
2009
+ "enum": [
2010
+ "zip",
2011
+ "zip_plus_four"
2012
+ ]
2013
+ }
2014
+ }
2015
+ },
2016
+ {
2017
+ "properties": {
2018
+ "country": {
2019
+ "const": "GB"
2020
+ },
2021
+ "system": {
2022
+ "enum": [
2023
+ "outward",
2024
+ "full"
2025
+ ]
2026
+ }
2027
+ }
2028
+ },
2029
+ {
2030
+ "properties": {
2031
+ "country": {
2032
+ "const": "CA"
2033
+ },
2034
+ "system": {
2035
+ "enum": [
2036
+ "fsa",
2037
+ "full"
2038
+ ]
2039
+ }
2040
+ }
2041
+ },
2042
+ {
2043
+ "properties": {
2044
+ "country": {
2045
+ "enum": [
2046
+ "DE",
2047
+ "CH",
2048
+ "AT"
2049
+ ]
2050
+ },
2051
+ "system": {
2052
+ "const": "plz"
2053
+ }
2054
+ }
2055
+ },
2056
+ {
2057
+ "properties": {
2058
+ "country": {
2059
+ "const": "FR"
2060
+ },
2061
+ "system": {
2062
+ "const": "code_postal"
2063
+ }
2064
+ }
2065
+ },
2066
+ {
2067
+ "properties": {
2068
+ "country": {
2069
+ "const": "AU"
2070
+ },
2071
+ "system": {
2072
+ "const": "postcode"
2073
+ }
2074
+ }
2075
+ },
2076
+ {
2077
+ "properties": {
2078
+ "country": {
2079
+ "const": "BR"
2080
+ },
2081
+ "system": {
2082
+ "const": "cep"
2083
+ }
2084
+ }
2085
+ },
2086
+ {
2087
+ "properties": {
2088
+ "country": {
2089
+ "const": "IN"
2090
+ },
2091
+ "system": {
2092
+ "const": "pin"
2093
+ }
2094
+ }
2095
+ },
2096
+ {
2097
+ "properties": {
2098
+ "country": {
2099
+ "const": "ZA"
2100
+ },
2101
+ "system": {
2102
+ "const": "postal_code"
2103
+ }
2104
+ }
2105
+ },
2106
+ {
2107
+ "properties": {
2108
+ "country": {
2109
+ "not": {
2110
+ "enum": [
2111
+ "US",
2112
+ "GB",
2113
+ "CA",
2114
+ "DE",
2115
+ "CH",
2116
+ "AT",
2117
+ "FR",
2118
+ "AU",
2119
+ "BR",
2120
+ "IN",
2121
+ "ZA"
2122
+ ]
2123
+ }
2124
+ },
2125
+ "system": {
2126
+ "enum": [
2127
+ "postal_code",
2128
+ "custom"
2129
+ ]
2130
+ }
2131
+ }
2132
+ }
2133
+ ]
2134
+ },
2135
+ "external:enums/postal-system.json": {
2136
+ "type": "string",
2137
+ "enum": [
2138
+ "postal_code",
2139
+ "zip",
2140
+ "zip_plus_four",
2141
+ "outward",
2142
+ "full",
2143
+ "fsa",
2144
+ "plz",
2145
+ "code_postal",
2146
+ "postcode",
2147
+ "cep",
2148
+ "pin",
2149
+ "custom",
2150
+ "us_zip",
2151
+ "us_zip_plus_four",
2152
+ "gb_outward",
2153
+ "gb_full",
2154
+ "ca_fsa",
2155
+ "ca_full",
2156
+ "de_plz",
2157
+ "fr_code_postal",
2158
+ "au_postcode",
2159
+ "ch_plz",
2160
+ "at_plz"
2161
+ ]
2162
+ },
2163
+ "external:enums/legacy-postal-system.json": {
2164
+ "type": "string",
2165
+ "deprecated": true,
2166
+ "enum": [
2167
+ "us_zip",
2168
+ "us_zip_plus_four",
2169
+ "gb_outward",
2170
+ "gb_full",
2171
+ "ca_fsa",
2172
+ "ca_full",
2173
+ "de_plz",
2174
+ "fr_code_postal",
2175
+ "au_postcode",
2176
+ "ch_plz",
2177
+ "at_plz"
2178
+ ]
2179
+ },
2180
+ "external:core/geo-place-area.json": {
2181
+ "x-adcp-validation": {
2182
+ "map_keys_subset_of_array": {
2183
+ "map_field": "value_labels",
2184
+ "array_field": "values"
2185
+ },
2186
+ "description": "Every value_labels key MUST also appear in values. JSON Schema draft-07 cannot express this sibling-field key membership constraint, so conformance tooling must enforce it."
2187
+ },
2188
+ "type": "object",
2189
+ "properties": {
2190
+ "country": {
2191
+ "type": "string",
2192
+ "pattern": "^[A-Z]{2}$"
2193
+ },
2194
+ "system": {
2195
+ "$ref": "#/$defs/external:core~1geo-place-system.json"
2196
+ },
2197
+ "system_version": {
2198
+ "type": "string",
2199
+ "minLength": 1
2200
+ },
2201
+ "place_type": {
2202
+ "$ref": "#/$defs/external:core~1geo-place-type.json"
2203
+ },
2204
+ "values": {
2205
+ "type": "array",
2206
+ "items": {
2207
+ "type": "string",
2208
+ "minLength": 1
2209
+ },
2210
+ "minItems": 1,
2211
+ "uniqueItems": true
2212
+ },
2213
+ "value_labels": {
2214
+ "type": "object",
2215
+ "additionalProperties": {
2216
+ "type": "string",
2217
+ "minLength": 1
2218
+ }
2219
+ },
2220
+ "ext": {
2221
+ "$ref": "#/$defs/external:core~1ext.json"
2222
+ }
2223
+ },
2224
+ "required": [
2225
+ "country",
2226
+ "system",
2227
+ "place_type",
2228
+ "values"
2229
+ ],
2230
+ "allOf": [
2231
+ {
2232
+ "if": {
2233
+ "properties": {
2234
+ "system": {
2235
+ "enum": [
2236
+ "geonames",
2237
+ "google_ads",
2238
+ "microsoft_ads"
2239
+ ]
2240
+ }
2241
+ },
2242
+ "required": [
2243
+ "system"
2244
+ ]
2245
+ },
2246
+ "then": {
2247
+ "properties": {
2248
+ "values": {
2249
+ "items": {
2250
+ "type": "string",
2251
+ "pattern": "^[0-9]+$"
2252
+ }
2253
+ }
2254
+ }
2255
+ }
2256
+ }
2257
+ ],
2258
+ "additionalProperties": false
2259
+ },
2260
+ "external:core/geo-place-system.json": {
2261
+ "anyOf": [
2262
+ {
2263
+ "type": "string",
2264
+ "enum": [
2265
+ "geonames",
2266
+ "google_ads",
2267
+ "microsoft_ads"
2268
+ ]
2269
+ },
2270
+ {
2271
+ "type": "string",
2272
+ "format": "uri",
2273
+ "pattern": "^https://"
2274
+ }
2275
+ ]
2276
+ },
2277
+ "external:core/geo-place-type.json": {
2278
+ "anyOf": [
2279
+ {
2280
+ "type": "string",
2281
+ "enum": [
2282
+ "airport",
2283
+ "borough",
2284
+ "city",
2285
+ "city_region",
2286
+ "commune",
2287
+ "county",
2288
+ "district",
2289
+ "municipality",
2290
+ "neighborhood",
2291
+ "post_town",
2292
+ "prefecture",
2293
+ "province",
2294
+ "quarter",
2295
+ "state",
2296
+ "territory",
2297
+ "ward"
2298
+ ]
2299
+ },
2300
+ {
2301
+ "type": "string",
2302
+ "format": "uri",
2303
+ "pattern": "^https://"
2304
+ }
2305
+ ]
2306
+ },
2307
+ "external:core/ext.json": {
2308
+ "type": "object",
2309
+ "additionalProperties": true
2310
+ },
2311
+ "external:core/daypart-target.json": {
2312
+ "type": "object",
2313
+ "properties": {
2314
+ "days": {
2315
+ "type": "array",
2316
+ "items": {
2317
+ "$ref": "#/$defs/external:enums~1day-of-week.json"
2318
+ },
2319
+ "minItems": 1
2320
+ },
2321
+ "start_hour": {
2322
+ "type": "integer",
2323
+ "minimum": 0,
2324
+ "maximum": 23
2325
+ },
2326
+ "end_hour": {
2327
+ "type": "integer",
2328
+ "minimum": 1,
2329
+ "maximum": 24
2330
+ },
2331
+ "label": {
2332
+ "type": "string"
2333
+ }
2334
+ },
2335
+ "required": [
2336
+ "days",
2337
+ "start_hour",
2338
+ "end_hour"
2339
+ ],
2340
+ "additionalProperties": false
2341
+ },
2342
+ "external:enums/day-of-week.json": {
2343
+ "type": "string",
2344
+ "enum": [
2345
+ "monday",
2346
+ "tuesday",
2347
+ "wednesday",
2348
+ "thursday",
2349
+ "friday",
2350
+ "saturday",
2351
+ "sunday"
2352
+ ]
2353
+ },
2354
+ "external:core/package-signal-targeting-groups.json": {
2355
+ "type": "object",
2356
+ "properties": {
2357
+ "operator": {
2358
+ "type": "string",
2359
+ "enum": [
2360
+ "all"
2361
+ ]
2362
+ },
2363
+ "groups": {
2364
+ "type": "array",
2365
+ "items": {
2366
+ "$ref": "#/$defs/external:core~1package-signal-targeting-group.json"
2367
+ },
2368
+ "minItems": 1
2369
+ }
2370
+ },
2371
+ "required": [
2372
+ "operator",
2373
+ "groups"
2374
+ ],
2375
+ "additionalProperties": true
2376
+ },
2377
+ "external:core/package-signal-targeting-group.json": {
2378
+ "type": "object",
2379
+ "properties": {
2380
+ "operator": {
2381
+ "type": "string",
2382
+ "enum": [
2383
+ "any",
2384
+ "none"
2385
+ ]
2386
+ },
2387
+ "signals": {
2388
+ "type": "array",
2389
+ "items": {
2390
+ "$ref": "#/$defs/external:core~1package-signal-targeting.json"
2391
+ },
2392
+ "minItems": 1
2393
+ }
2394
+ },
2395
+ "required": [
2396
+ "operator",
2397
+ "signals"
2398
+ ],
2399
+ "additionalProperties": true
2400
+ },
2401
+ "external:core/package-signal-targeting.json": {
2402
+ "type": "object",
2403
+ "allOf": [
2404
+ {
2405
+ "$ref": "#/$defs/external:core~1signal-targeting-expression.json"
2406
+ }
2407
+ ],
2408
+ "properties": {
2409
+ "pricing_option_id": {
2410
+ "type": "string",
2411
+ "x-entity": "vendor_pricing_option"
2412
+ },
2413
+ "signal_agent_segment_id": {
2414
+ "type": "string",
2415
+ "x-entity": "signal_activation_id"
2416
+ },
2417
+ "activation_key": {
2418
+ "$ref": "#/$defs/external:core~1activation-key.json"
2419
+ }
2420
+ },
2421
+ "additionalProperties": true
2422
+ },
2423
+ "external:core/signal-targeting-expression.json": {
2424
+ "discriminator": {
2425
+ "propertyName": "value_type"
2426
+ },
2427
+ "oneOf": [
2428
+ {
2429
+ "type": "object",
2430
+ "properties": {
2431
+ "signal_ref": {
2432
+ "$ref": "#/$defs/external:core~1signal-ref.json"
2433
+ },
2434
+ "value_type": {
2435
+ "type": "string",
2436
+ "const": "binary"
2437
+ },
2438
+ "value": {
2439
+ "type": "boolean",
2440
+ "const": true
2441
+ }
2442
+ },
2443
+ "required": [
2444
+ "signal_ref",
2445
+ "value_type",
2446
+ "value"
2447
+ ],
2448
+ "additionalProperties": true
2449
+ },
2450
+ {
2451
+ "type": "object",
2452
+ "properties": {
2453
+ "signal_ref": {
2454
+ "$ref": "#/$defs/external:core~1signal-ref.json"
2455
+ },
2456
+ "value_type": {
2457
+ "type": "string",
2458
+ "const": "categorical"
2459
+ },
2460
+ "values": {
2461
+ "type": "array",
2462
+ "items": {
2463
+ "type": "string"
2464
+ },
2465
+ "minItems": 1
2466
+ }
2467
+ },
2468
+ "required": [
2469
+ "signal_ref",
2470
+ "value_type",
2471
+ "values"
2472
+ ],
2473
+ "additionalProperties": true
2474
+ },
2475
+ {
2476
+ "type": "object",
2477
+ "properties": {
2478
+ "signal_ref": {
2479
+ "$ref": "#/$defs/external:core~1signal-ref.json"
2480
+ },
2481
+ "value_type": {
2482
+ "type": "string",
2483
+ "const": "numeric"
2484
+ },
2485
+ "min_value": {
2486
+ "type": "number"
2487
+ },
2488
+ "max_value": {
2489
+ "type": "number"
2490
+ }
2491
+ },
2492
+ "required": [
2493
+ "signal_ref",
2494
+ "value_type"
2495
+ ],
2496
+ "anyOf": [
2497
+ {
2498
+ "required": [
2499
+ "min_value"
2500
+ ]
2501
+ },
2502
+ {
2503
+ "required": [
2504
+ "max_value"
2505
+ ]
2506
+ }
2507
+ ],
2508
+ "additionalProperties": true
2509
+ }
2510
+ ]
2511
+ },
2512
+ "external:core/signal-ref.json": {
2513
+ "x-entity": "signal",
2514
+ "discriminator": {
2515
+ "propertyName": "scope"
2516
+ },
2517
+ "oneOf": [
2518
+ {
2519
+ "type": "object",
2520
+ "properties": {
2521
+ "scope": {
2522
+ "type": "string",
2523
+ "const": "product"
2524
+ },
2525
+ "signal_id": {
2526
+ "type": "string",
2527
+ "pattern": "^[a-zA-Z0-9_-]+$"
2528
+ }
2529
+ },
2530
+ "required": [
2531
+ "scope",
2532
+ "signal_id"
2533
+ ],
2534
+ "not": {
2535
+ "anyOf": [
2536
+ {
2537
+ "required": [
2538
+ "data_provider_domain"
2539
+ ]
2540
+ },
2541
+ {
2542
+ "required": [
2543
+ "signal_source_url"
2544
+ ]
2545
+ },
2546
+ {
2547
+ "required": [
2548
+ "agent_url"
2549
+ ]
2550
+ },
2551
+ {
2552
+ "required": [
2553
+ "source"
2554
+ ]
2555
+ },
2556
+ {
2557
+ "required": [
2558
+ "id"
2559
+ ]
2560
+ }
2561
+ ]
2562
+ },
2563
+ "additionalProperties": true
2564
+ },
2565
+ {
2566
+ "type": "object",
2567
+ "properties": {
2568
+ "scope": {
2569
+ "type": "string",
2570
+ "const": "data_provider"
2571
+ },
2572
+ "data_provider_domain": {
2573
+ "type": "string",
2574
+ "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$"
2575
+ },
2576
+ "signal_id": {
2577
+ "type": "string",
2578
+ "pattern": "^[a-zA-Z0-9_-]+$"
2579
+ }
2580
+ },
2581
+ "required": [
2582
+ "scope",
2583
+ "data_provider_domain",
2584
+ "signal_id"
2585
+ ],
2586
+ "not": {
2587
+ "anyOf": [
2588
+ {
2589
+ "required": [
2590
+ "agent_url"
2591
+ ]
2592
+ },
2593
+ {
2594
+ "required": [
2595
+ "signal_source_url"
2596
+ ]
2597
+ },
2598
+ {
2599
+ "required": [
2600
+ "source"
2601
+ ]
2602
+ },
2603
+ {
2604
+ "required": [
2605
+ "id"
2606
+ ]
2607
+ }
2608
+ ]
2609
+ },
2610
+ "additionalProperties": true
2611
+ },
2612
+ {
2613
+ "type": "object",
2614
+ "properties": {
2615
+ "scope": {
2616
+ "type": "string",
2617
+ "const": "signal_source"
2618
+ },
2619
+ "signal_source_url": {
2620
+ "type": "string",
2621
+ "format": "uri"
2622
+ },
2623
+ "signal_id": {
2624
+ "type": "string",
2625
+ "pattern": "^[a-zA-Z0-9_-]+$"
2626
+ }
2627
+ },
2628
+ "required": [
2629
+ "scope",
2630
+ "signal_source_url",
2631
+ "signal_id"
2632
+ ],
2633
+ "not": {
2634
+ "anyOf": [
2635
+ {
2636
+ "required": [
2637
+ "data_provider_domain"
2638
+ ]
2639
+ },
2640
+ {
2641
+ "required": [
2642
+ "agent_url"
2643
+ ]
2644
+ },
2645
+ {
2646
+ "required": [
2647
+ "source"
2648
+ ]
2649
+ },
2650
+ {
2651
+ "required": [
2652
+ "id"
2653
+ ]
2654
+ }
2655
+ ]
2656
+ },
2657
+ "additionalProperties": true
2658
+ }
2659
+ ]
2660
+ },
2661
+ "external:core/activation-key.json": {
2662
+ "type": "object",
2663
+ "discriminator": {
2664
+ "propertyName": "type"
2665
+ },
2666
+ "oneOf": [
2667
+ {
2668
+ "properties": {
2669
+ "type": {
2670
+ "type": "string",
2671
+ "const": "segment_id"
2672
+ },
2673
+ "segment_id": {
2674
+ "type": "string"
2675
+ }
2676
+ },
2677
+ "required": [
2678
+ "type",
2679
+ "segment_id"
2680
+ ],
2681
+ "additionalProperties": true
2682
+ },
2683
+ {
2684
+ "properties": {
2685
+ "type": {
2686
+ "type": "string",
2687
+ "const": "key_value"
2688
+ },
2689
+ "key": {
2690
+ "type": "string"
2691
+ },
2692
+ "value": {
2693
+ "type": "string"
2694
+ }
2695
+ },
2696
+ "required": [
2697
+ "type",
2698
+ "key",
2699
+ "value"
2700
+ ],
2701
+ "additionalProperties": true
2702
+ }
2703
+ ]
2704
+ },
2705
+ "external:core/signal-targeting.json": {
2706
+ "discriminator": {
2707
+ "propertyName": "value_type"
2708
+ },
2709
+ "oneOf": [
2710
+ {
2711
+ "type": "object",
2712
+ "properties": {
2713
+ "signal_ref": {
2714
+ "$ref": "#/$defs/external:core~1signal-ref.json"
2715
+ },
2716
+ "signal_id": {
2717
+ "$ref": "#/$defs/external:core~1signal-id.json",
2718
+ "deprecated": true
2719
+ },
2720
+ "value_type": {
2721
+ "type": "string",
2722
+ "const": "binary"
2723
+ },
2724
+ "value": {
2725
+ "type": "boolean"
2726
+ }
2727
+ },
2728
+ "required": [
2729
+ "value_type",
2730
+ "value"
2731
+ ],
2732
+ "anyOf": [
2733
+ {
2734
+ "required": [
2735
+ "signal_ref"
2736
+ ]
2737
+ },
2738
+ {
2739
+ "required": [
2740
+ "signal_id"
2741
+ ]
2742
+ }
2743
+ ],
2744
+ "additionalProperties": true
2745
+ },
2746
+ {
2747
+ "type": "object",
2748
+ "properties": {
2749
+ "signal_ref": {
2750
+ "$ref": "#/$defs/external:core~1signal-ref.json"
2751
+ },
2752
+ "signal_id": {
2753
+ "$ref": "#/$defs/external:core~1signal-id.json",
2754
+ "deprecated": true
2755
+ },
2756
+ "value_type": {
2757
+ "type": "string",
2758
+ "const": "categorical"
2759
+ },
2760
+ "values": {
2761
+ "type": "array",
2762
+ "items": {
2763
+ "type": "string"
2764
+ },
2765
+ "minItems": 1
2766
+ }
2767
+ },
2768
+ "required": [
2769
+ "value_type",
2770
+ "values"
2771
+ ],
2772
+ "anyOf": [
2773
+ {
2774
+ "required": [
2775
+ "signal_ref"
2776
+ ]
2777
+ },
2778
+ {
2779
+ "required": [
2780
+ "signal_id"
2781
+ ]
2782
+ }
2783
+ ],
2784
+ "additionalProperties": true
2785
+ },
2786
+ {
2787
+ "type": "object",
2788
+ "properties": {
2789
+ "signal_ref": {
2790
+ "$ref": "#/$defs/external:core~1signal-ref.json"
2791
+ },
2792
+ "signal_id": {
2793
+ "$ref": "#/$defs/external:core~1signal-id.json",
2794
+ "deprecated": true
2795
+ },
2796
+ "value_type": {
2797
+ "type": "string",
2798
+ "const": "numeric"
2799
+ },
2800
+ "min_value": {
2801
+ "type": "number"
2802
+ },
2803
+ "max_value": {
2804
+ "type": "number"
2805
+ }
2806
+ },
2807
+ "required": [
2808
+ "value_type"
2809
+ ],
2810
+ "anyOf": [
2811
+ {
2812
+ "required": [
2813
+ "signal_ref"
2814
+ ]
2815
+ },
2816
+ {
2817
+ "required": [
2818
+ "signal_id"
2819
+ ]
2820
+ }
2821
+ ],
2822
+ "additionalProperties": true
2823
+ }
2824
+ ]
2825
+ },
2826
+ "external:core/signal-id.json": {
2827
+ "deprecated": true,
2828
+ "x-entity": "signal",
2829
+ "discriminator": {
2830
+ "propertyName": "source"
2831
+ },
2832
+ "oneOf": [
2833
+ {
2834
+ "type": "object",
2835
+ "properties": {
2836
+ "source": {
2837
+ "type": "string",
2838
+ "const": "catalog"
2839
+ },
2840
+ "data_provider_domain": {
2841
+ "type": "string",
2842
+ "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$"
2843
+ },
2844
+ "id": {
2845
+ "type": "string",
2846
+ "pattern": "^[a-zA-Z0-9_-]+$"
2847
+ }
2848
+ },
2849
+ "required": [
2850
+ "source",
2851
+ "data_provider_domain",
2852
+ "id"
2853
+ ],
2854
+ "additionalProperties": true
2855
+ },
2856
+ {
2857
+ "type": "object",
2858
+ "properties": {
2859
+ "source": {
2860
+ "type": "string",
2861
+ "const": "agent"
2862
+ },
2863
+ "agent_url": {
2864
+ "type": "string",
2865
+ "format": "uri"
2866
+ },
2867
+ "id": {
2868
+ "type": "string",
2869
+ "pattern": "^[a-zA-Z0-9_-]+$"
2870
+ }
2871
+ },
2872
+ "required": [
2873
+ "source",
2874
+ "agent_url",
2875
+ "id"
2876
+ ],
2877
+ "additionalProperties": true
2878
+ }
2879
+ ]
2880
+ },
2881
+ "external:core/demographic-targeting-intent.json": {
2882
+ "type": "object",
2883
+ "properties": {
2884
+ "age": {
2885
+ "allOf": [
2886
+ {
2887
+ "$ref": "#/$defs/external:core~1demographic-age-range.json"
2888
+ },
2889
+ {
2890
+ "type": "object",
2891
+ "properties": {
2892
+ "accepted_bases": {
2893
+ "type": "array",
2894
+ "items": {
2895
+ "$ref": "#/$defs/external:enums~1age-determination-basis.json"
2896
+ },
2897
+ "minItems": 1,
2898
+ "uniqueItems": true
2899
+ },
2900
+ "accepted_verification_methods": {
2901
+ "type": "array",
2902
+ "items": {
2903
+ "$ref": "#/$defs/external:enums~1age-verification-method.json"
2904
+ },
2905
+ "minItems": 1,
2906
+ "uniqueItems": true
2907
+ }
2908
+ },
2909
+ "allOf": [
2910
+ {
2911
+ "if": {
2912
+ "required": [
2913
+ "accepted_verification_methods"
2914
+ ]
2915
+ },
2916
+ "then": {
2917
+ "required": [
2918
+ "accepted_bases"
2919
+ ],
2920
+ "properties": {
2921
+ "accepted_bases": {
2922
+ "contains": {
2923
+ "const": "verified"
2924
+ }
2925
+ }
2926
+ }
2927
+ }
2928
+ }
2929
+ ],
2930
+ "additionalProperties": true
2931
+ }
2932
+ ]
2933
+ }
2934
+ },
2935
+ "required": [
2936
+ "age"
2937
+ ],
2938
+ "additionalProperties": true
2939
+ },
2940
+ "external:core/demographic-age-range.json": {
2941
+ "type": "object",
2942
+ "properties": {
2943
+ "min": {
2944
+ "type": "integer",
2945
+ "minimum": 0,
2946
+ "maximum": 150
2947
+ },
2948
+ "max": {
2949
+ "type": "integer",
2950
+ "minimum": 0,
2951
+ "maximum": 150
2952
+ },
2953
+ "include_unknown": {
2954
+ "type": "boolean"
2955
+ }
2956
+ },
2957
+ "required": [
2958
+ "include_unknown"
2959
+ ],
2960
+ "anyOf": [
2961
+ {
2962
+ "required": [
2963
+ "min"
2964
+ ]
2965
+ },
2966
+ {
2967
+ "required": [
2968
+ "max"
2969
+ ]
2970
+ }
2971
+ ],
2972
+ "additionalProperties": true
2973
+ },
2974
+ "external:enums/age-determination-basis.json": {
2975
+ "type": "string",
2976
+ "enum": [
2977
+ "verified",
2978
+ "declared",
2979
+ "inferred"
2980
+ ]
2981
+ },
2982
+ "external:enums/age-verification-method.json": {
2983
+ "type": "string",
2984
+ "enum": [
2985
+ "facial_age_estimation",
2986
+ "id_document",
2987
+ "digital_id",
2988
+ "credit_card",
2989
+ "world_id"
2990
+ ]
2991
+ },
2992
+ "external:core/frequency-cap.json": {
2993
+ "type": "object",
2994
+ "properties": {
2995
+ "suppress": {
2996
+ "allOf": [
2997
+ {
2998
+ "$ref": "#/$defs/external:core~1duration.json"
2999
+ }
3000
+ ]
3001
+ },
3002
+ "suppress_minutes": {
3003
+ "type": "number",
3004
+ "deprecated": true,
3005
+ "minimum": 0
3006
+ },
3007
+ "max_impressions": {
3008
+ "type": "integer",
3009
+ "minimum": 1
3010
+ },
3011
+ "per": {
3012
+ "allOf": [
3013
+ {
3014
+ "$ref": "#/$defs/external:enums~1reach-unit.json"
3015
+ }
3016
+ ]
3017
+ },
3018
+ "window": {
3019
+ "allOf": [
3020
+ {
3021
+ "$ref": "#/$defs/external:core~1duration.json"
3022
+ }
3023
+ ]
3024
+ }
3025
+ },
3026
+ "anyOf": [
3027
+ {
3028
+ "required": [
3029
+ "suppress"
3030
+ ]
3031
+ },
3032
+ {
3033
+ "required": [
3034
+ "suppress_minutes"
3035
+ ]
3036
+ },
3037
+ {
3038
+ "required": [
3039
+ "max_impressions"
3040
+ ]
3041
+ }
3042
+ ],
3043
+ "additionalProperties": true,
3044
+ "dependentRequired": {
3045
+ "max_impressions": [
3046
+ "per",
3047
+ "window"
3048
+ ],
3049
+ "per": [
3050
+ "max_impressions"
3051
+ ],
3052
+ "window": [
3053
+ "max_impressions"
3054
+ ]
3055
+ }
3056
+ },
3057
+ "external:core/duration.json": {
3058
+ "type": "object",
3059
+ "properties": {
3060
+ "interval": {
3061
+ "type": "integer",
3062
+ "minimum": 1
3063
+ },
3064
+ "unit": {
3065
+ "type": "string",
3066
+ "enum": [
3067
+ "seconds",
3068
+ "minutes",
3069
+ "hours",
3070
+ "days",
3071
+ "campaign"
3072
+ ]
3073
+ }
3074
+ },
3075
+ "required": [
3076
+ "interval",
3077
+ "unit"
3078
+ ],
3079
+ "additionalProperties": false
3080
+ },
3081
+ "external:enums/reach-unit.json": {
3082
+ "type": "string",
3083
+ "enum": [
3084
+ "individuals",
3085
+ "households",
3086
+ "devices",
3087
+ "accounts",
3088
+ "cookies",
3089
+ "custom"
3090
+ ]
3091
+ },
3092
+ "external:core/property-list-ref.json": {
3093
+ "type": "object",
3094
+ "properties": {
3095
+ "agent_url": {
3096
+ "type": "string",
3097
+ "format": "uri"
3098
+ },
3099
+ "list_id": {
3100
+ "type": "string",
3101
+ "minLength": 1,
3102
+ "x-entity": "property_list"
3103
+ },
3104
+ "auth_token": {
3105
+ "type": "string"
3106
+ }
3107
+ },
3108
+ "required": [
3109
+ "agent_url",
3110
+ "list_id"
3111
+ ],
3112
+ "additionalProperties": false
3113
+ },
3114
+ "external:core/collection-list-ref.json": {
3115
+ "type": "object",
3116
+ "properties": {
3117
+ "agent_url": {
3118
+ "type": "string",
3119
+ "format": "uri"
3120
+ },
3121
+ "list_id": {
3122
+ "type": "string",
3123
+ "minLength": 1,
3124
+ "x-entity": "collection_list"
3125
+ },
3126
+ "auth_token": {
3127
+ "type": "string"
3128
+ }
3129
+ },
3130
+ "required": [
3131
+ "agent_url",
3132
+ "list_id"
3133
+ ],
3134
+ "additionalProperties": false
3135
+ },
3136
+ "external:core/placement-selection.json": {
3137
+ "type": "object",
3138
+ "discriminator": {
3139
+ "propertyName": "mode"
3140
+ },
3141
+ "oneOf": [
3142
+ {
3143
+ "type": "object",
3144
+ "properties": {
3145
+ "mode": {
3146
+ "type": "string",
3147
+ "const": "selected"
3148
+ },
3149
+ "placement_refs": {
3150
+ "type": "array",
3151
+ "items": {
3152
+ "allOf": [
3153
+ {
3154
+ "$ref": "#/$defs/external:core~1placement-ref.json"
3155
+ },
3156
+ {
3157
+ "required": [
3158
+ "publisher_domain"
3159
+ ]
3160
+ }
3161
+ ]
3162
+ },
3163
+ "minItems": 1,
3164
+ "uniqueItems": true
3165
+ },
3166
+ "ext": {
3167
+ "$ref": "#/$defs/external:core~1ext.json"
3168
+ }
3169
+ },
3170
+ "required": [
3171
+ "mode",
3172
+ "placement_refs"
3173
+ ],
3174
+ "additionalProperties": false
3175
+ },
3176
+ {
3177
+ "type": "object",
3178
+ "properties": {
3179
+ "mode": {
3180
+ "type": "string",
3181
+ "const": "default"
3182
+ },
3183
+ "ext": {
3184
+ "$ref": "#/$defs/external:core~1ext.json"
3185
+ }
3186
+ },
3187
+ "required": [
3188
+ "mode"
3189
+ ],
3190
+ "additionalProperties": false
3191
+ }
3192
+ ]
3193
+ },
3194
+ "external:core/placement-ref.json": {
3195
+ "type": "object",
3196
+ "properties": {
3197
+ "publisher_domain": {
3198
+ "type": "string",
3199
+ "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$"
3200
+ },
3201
+ "placement_id": {
3202
+ "type": "string",
3203
+ "x-entity": "placement"
3204
+ }
3205
+ },
3206
+ "required": [
3207
+ "placement_id"
3208
+ ],
3209
+ "additionalProperties": true
3210
+ },
3211
+ "external:enums/device-platform.json": {
3212
+ "type": "string",
3213
+ "enum": [
3214
+ "ios",
3215
+ "android",
3216
+ "windows",
3217
+ "macos",
3218
+ "linux",
3219
+ "chromeos",
3220
+ "tvos",
3221
+ "tizen",
3222
+ "webos",
3223
+ "fire_os",
3224
+ "roku_os",
3225
+ "unknown"
3226
+ ]
3227
+ },
3228
+ "external:enums/device-type.json": {
3229
+ "type": "string",
3230
+ "enum": [
3231
+ "desktop",
3232
+ "mobile",
3233
+ "tablet",
3234
+ "ctv",
3235
+ "dooh",
3236
+ "unknown"
3237
+ ]
3238
+ },
3239
+ "external:enums/browser-family.json": {
3240
+ "type": "string",
3241
+ "enum": [
3242
+ "chrome",
3243
+ "safari",
3244
+ "firefox",
3245
+ "edge",
3246
+ "opera",
3247
+ "samsung_internet",
3248
+ "android_webview",
3249
+ "other",
3250
+ "unknown"
3251
+ ]
3252
+ },
3253
+ "external:enums/travel-time-unit.json": {
3254
+ "type": "string",
3255
+ "enum": [
3256
+ "min",
3257
+ "hr"
3258
+ ]
3259
+ },
3260
+ "external:enums/transport-mode.json": {
3261
+ "type": "string",
3262
+ "enum": [
3263
+ "walking",
3264
+ "cycling",
3265
+ "driving",
3266
+ "public_transport"
3267
+ ]
3268
+ },
3269
+ "external:enums/distance-unit.json": {
3270
+ "type": "string",
3271
+ "enum": [
3272
+ "km",
3273
+ "mi",
3274
+ "m"
3275
+ ]
3276
+ },
3277
+ "external:core/locale-tag.json": {
3278
+ "x-adcp-validation": {
3279
+ "verifier_constraints": {
3280
+ "well_formed": "rfc5646",
3281
+ "semantic_scope": "language_identity_only",
3282
+ "canonical_wire_profile": "adcp_bcp47_casing",
3283
+ "rfc5646_comparison": "case_insensitive",
3284
+ "non_profile": "reject"
3285
+ },
3286
+ "spec": "docs/protocol/language-and-localization.mdx#one-language-tag-primitive"
3287
+ },
3288
+ "type": "string",
3289
+ "minLength": 2,
3290
+ "maxLength": 63,
3291
+ "pattern": "^(?:[a-z]{2,8}(?:-[A-Z][a-z]{3})?(?:-(?:[A-Z]{2}|[0-9]{3}))?(?:-(?:[a-z0-9]{5,8}|[0-9][a-z0-9]{3}))*(?:-[0-9a-wy-z](?:-[a-z0-9]{2,8})+)*(?:-x(?:-[a-z0-9]{1,8})+)?|x(?:-[a-z0-9]{1,8})+)$"
3292
+ },
3293
+ "external:enums/match-type.json": {
3294
+ "type": "string",
3295
+ "enum": [
3296
+ "broad",
3297
+ "phrase",
3298
+ "exact"
3299
+ ]
3300
+ },
3301
+ "external:core/canonical-optimization-goal.json": {
3302
+ "discriminator": {
3303
+ "propertyName": "kind"
3304
+ },
3305
+ "oneOf": [
3306
+ {
3307
+ "type": "object",
3308
+ "properties": {
3309
+ "kind": {
3310
+ "type": "string",
3311
+ "const": "metric"
3312
+ },
3313
+ "metric": {
3314
+ "type": "string",
3315
+ "enum": [
3316
+ "clicks",
3317
+ "views",
3318
+ "completed_views",
3319
+ "viewed_seconds",
3320
+ "engagements",
3321
+ "follows",
3322
+ "saves",
3323
+ "profile_visits",
3324
+ "reach"
3325
+ ]
3326
+ },
3327
+ "reach_unit": {
3328
+ "$ref": "#/$defs/external:enums~1reach-unit.json"
3329
+ },
3330
+ "target_frequency": {
3331
+ "type": "object",
3332
+ "properties": {
3333
+ "min": {
3334
+ "type": "integer",
3335
+ "minimum": 1
3336
+ },
3337
+ "max": {
3338
+ "type": "integer",
3339
+ "minimum": 1
3340
+ },
3341
+ "window": {
3342
+ "$ref": "#/$defs/external:core~1duration.json"
3343
+ }
3344
+ },
3345
+ "required": [
3346
+ "window"
3347
+ ],
3348
+ "anyOf": [
3349
+ {
3350
+ "required": [
3351
+ "min"
3352
+ ]
3353
+ },
3354
+ {
3355
+ "required": [
3356
+ "max"
3357
+ ]
3358
+ }
3359
+ ],
3360
+ "additionalProperties": false
3361
+ },
3362
+ "view_duration_seconds": {
3363
+ "type": "number",
3364
+ "exclusiveMinimum": 0
3365
+ },
3366
+ "target": {
3367
+ "type": "object",
3368
+ "properties": {
3369
+ "kind": {
3370
+ "type": "string",
3371
+ "const": "threshold_rate"
3372
+ },
3373
+ "value": {
3374
+ "type": "number",
3375
+ "exclusiveMinimum": 0
3376
+ }
3377
+ },
3378
+ "required": [
3379
+ "kind",
3380
+ "value"
3381
+ ],
3382
+ "additionalProperties": false
3383
+ },
3384
+ "priority": {
3385
+ "type": "integer",
3386
+ "minimum": 1
3387
+ }
3388
+ },
3389
+ "required": [
3390
+ "kind",
3391
+ "metric"
3392
+ ],
3393
+ "additionalProperties": false
3394
+ },
3395
+ {
3396
+ "type": "object",
3397
+ "properties": {
3398
+ "kind": {
3399
+ "type": "string",
3400
+ "const": "event"
3401
+ },
3402
+ "event_sources": {
3403
+ "type": "array",
3404
+ "items": {
3405
+ "type": "object",
3406
+ "properties": {
3407
+ "event_source_id": {
3408
+ "type": "string",
3409
+ "minLength": 1,
3410
+ "x-entity": "event_source"
3411
+ },
3412
+ "event_type": {
3413
+ "$ref": "#/$defs/external:enums~1event-type.json"
3414
+ },
3415
+ "custom_event_name": {
3416
+ "type": "string",
3417
+ "minLength": 1
3418
+ },
3419
+ "value_field": {
3420
+ "type": "string",
3421
+ "minLength": 1
3422
+ },
3423
+ "value_factor": {
3424
+ "type": "number",
3425
+ "default": 1
3426
+ }
3427
+ },
3428
+ "required": [
3429
+ "event_source_id",
3430
+ "event_type"
3431
+ ],
3432
+ "additionalProperties": false
3433
+ },
3434
+ "minItems": 1
3435
+ },
3436
+ "target": {
3437
+ "type": "object",
3438
+ "properties": {
3439
+ "kind": {
3440
+ "type": "string",
3441
+ "const": "maximize_value"
3442
+ }
3443
+ },
3444
+ "required": [
3445
+ "kind"
3446
+ ],
3447
+ "additionalProperties": false
3448
+ },
3449
+ "attribution_window": {
3450
+ "$ref": "#/$defs/external:core~1attribution-window.json"
3451
+ },
3452
+ "priority": {
3453
+ "type": "integer",
3454
+ "minimum": 1
3455
+ }
3456
+ },
3457
+ "required": [
3458
+ "kind",
3459
+ "event_sources"
3460
+ ],
3461
+ "additionalProperties": false
3462
+ },
3463
+ {
3464
+ "type": "object",
3465
+ "properties": {
3466
+ "kind": {
3467
+ "type": "string",
3468
+ "const": "vendor_metric"
3469
+ },
3470
+ "vendor": {
3471
+ "$ref": "#/$defs/external:core~1brand-key.json"
3472
+ },
3473
+ "metric_id": {
3474
+ "$ref": "#/$defs/external:core~1vendor-metric-id.json"
3475
+ },
3476
+ "target": {
3477
+ "type": "object",
3478
+ "properties": {
3479
+ "kind": {
3480
+ "type": "string",
3481
+ "const": "threshold_rate"
3482
+ },
3483
+ "value": {
3484
+ "type": "number",
3485
+ "exclusiveMinimum": 0
3486
+ }
3487
+ },
3488
+ "required": [
3489
+ "kind",
3490
+ "value"
3491
+ ],
3492
+ "additionalProperties": false
3493
+ },
3494
+ "priority": {
3495
+ "type": "integer",
3496
+ "minimum": 1
3497
+ }
3498
+ },
3499
+ "required": [
3500
+ "kind",
3501
+ "vendor",
3502
+ "metric_id"
3503
+ ],
3504
+ "additionalProperties": false
3505
+ }
3506
+ ]
3507
+ },
3508
+ "external:core/attribution-window.json": {
3509
+ "type": "object",
3510
+ "properties": {
3511
+ "post_click": {
3512
+ "allOf": [
3513
+ {
3514
+ "$ref": "#/$defs/external:core~1duration.json"
3515
+ }
3516
+ ]
3517
+ },
3518
+ "post_view": {
3519
+ "allOf": [
3520
+ {
3521
+ "$ref": "#/$defs/external:core~1duration.json"
3522
+ }
3523
+ ]
3524
+ },
3525
+ "model": {
3526
+ "$ref": "#/$defs/external:enums~1attribution-model.json"
3527
+ }
3528
+ },
3529
+ "additionalProperties": true
3530
+ },
3531
+ "external:enums/attribution-model.json": {
3532
+ "type": "string",
3533
+ "enum": [
3534
+ "last_touch",
3535
+ "first_touch",
3536
+ "linear",
3537
+ "time_decay",
3538
+ "data_driven"
3539
+ ]
3540
+ },
3541
+ "external:core/vendor-metric-id.json": {
3542
+ "type": "string",
3543
+ "x-entity": "vendor_metric",
3544
+ "minLength": 1,
3545
+ "maxLength": 64,
3546
+ "pattern": "^[a-z][a-z0-9_]*$"
3547
+ },
3548
+ "external:core/product-audience-evidence-requirements.json": {
3549
+ "type": "object",
3550
+ "properties": {
3551
+ "requirement_mode": {
3552
+ "type": "string",
3553
+ "enum": [
3554
+ "required",
3555
+ "preferred"
3556
+ ]
3557
+ },
3558
+ "evidence_presence": {
3559
+ "type": "string",
3560
+ "enum": [
3561
+ "required",
3562
+ "when_available"
3563
+ ]
3564
+ },
3565
+ "accepted_methodologies": {
3566
+ "type": "array",
3567
+ "items": {
3568
+ "$ref": "#/$defs/external:enums~1audience-evidence-methodology.json"
3569
+ },
3570
+ "minItems": 1,
3571
+ "uniqueItems": true
3572
+ },
3573
+ "excluded_methodologies": {
3574
+ "type": "array",
3575
+ "items": {
3576
+ "$ref": "#/$defs/external:enums~1audience-evidence-methodology.json"
3577
+ },
3578
+ "minItems": 1,
3579
+ "uniqueItems": true
3580
+ },
3581
+ "accepted_evidence_types": {
3582
+ "type": "array",
3583
+ "items": {
3584
+ "type": "string",
3585
+ "enum": [
3586
+ "measured",
3587
+ "forecast",
3588
+ "seller_declared"
3589
+ ]
3590
+ },
3591
+ "minItems": 1,
3592
+ "uniqueItems": true
3593
+ },
3594
+ "accepted_providers": {
3595
+ "type": "array",
3596
+ "items": {
3597
+ "$ref": "#/$defs/external:core~1brand-key.json"
3598
+ },
3599
+ "minItems": 1
3600
+ },
3601
+ "excluded_providers": {
3602
+ "type": "array",
3603
+ "items": {
3604
+ "$ref": "#/$defs/external:core~1brand-key.json"
3605
+ },
3606
+ "minItems": 1
3607
+ },
3608
+ "accepted_subject_types": {
3609
+ "type": "array",
3610
+ "items": {
3611
+ "$ref": "#/$defs/external:enums~1audience-subject-type.json"
3612
+ },
3613
+ "minItems": 1,
3614
+ "uniqueItems": true
3615
+ },
3616
+ "accepted_resolution_methods": {
3617
+ "type": "array",
3618
+ "items": {
3619
+ "$ref": "#/$defs/external:enums~1audience-resolution-method.json"
3620
+ },
3621
+ "minItems": 1,
3622
+ "uniqueItems": true
3623
+ },
3624
+ "minimum_confidence": {
3625
+ "type": "number",
3626
+ "minimum": 0,
3627
+ "maximum": 1
3628
+ },
3629
+ "maximum_age": {
3630
+ "allOf": [
3631
+ {
3632
+ "$ref": "#/$defs/external:core~1duration.json"
3633
+ },
3634
+ {
3635
+ "properties": {
3636
+ "unit": {
3637
+ "enum": [
3638
+ "seconds",
3639
+ "minutes",
3640
+ "hours",
3641
+ "days"
3642
+ ]
3643
+ }
3644
+ }
3645
+ }
3646
+ ]
3647
+ },
3648
+ "methodology_documentation_required": {
3649
+ "type": "boolean",
3650
+ "default": false
3651
+ },
3652
+ "independent_attestation_required": {
3653
+ "type": "boolean",
3654
+ "default": false
3655
+ },
3656
+ "accepted_attestation_issuers": {
3657
+ "type": "array",
3658
+ "items": {
3659
+ "discriminator": {
3660
+ "propertyName": "type"
3661
+ },
3662
+ "oneOf": [
3663
+ {
3664
+ "type": "object",
3665
+ "properties": {
3666
+ "type": {
3667
+ "type": "string",
3668
+ "const": "brand"
3669
+ },
3670
+ "brand": {
3671
+ "$ref": "#/$defs/external:core~1brand-key.json"
3672
+ },
3673
+ "ext": {
3674
+ "$ref": "#/$defs/external:core~1ext.json"
3675
+ }
3676
+ },
3677
+ "required": [
3678
+ "type",
3679
+ "brand"
3680
+ ],
3681
+ "additionalProperties": false
3682
+ },
3683
+ {
3684
+ "type": "object",
3685
+ "properties": {
3686
+ "type": {
3687
+ "type": "string",
3688
+ "const": "agent"
3689
+ },
3690
+ "agent_url": {
3691
+ "type": "string",
3692
+ "format": "uri",
3693
+ "pattern": "^https://[^/?#@]+(?:/[^?#]*)?(?:\\?[^#]*)?$"
3694
+ },
3695
+ "ext": {
3696
+ "$ref": "#/$defs/external:core~1ext.json"
3697
+ }
3698
+ },
3699
+ "required": [
3700
+ "type",
3701
+ "agent_url"
3702
+ ],
3703
+ "additionalProperties": false
3704
+ },
3705
+ {
3706
+ "type": "object",
3707
+ "properties": {
3708
+ "type": {
3709
+ "type": "string",
3710
+ "const": "origin"
3711
+ },
3712
+ "origin": {
3713
+ "type": "string",
3714
+ "format": "uri",
3715
+ "pattern": "^https://[^/?#@]+$"
3716
+ },
3717
+ "ext": {
3718
+ "$ref": "#/$defs/external:core~1ext.json"
3719
+ }
3720
+ },
3721
+ "required": [
3722
+ "type",
3723
+ "origin"
3724
+ ],
3725
+ "additionalProperties": false
3726
+ }
3727
+ ]
3728
+ },
3729
+ "minItems": 1,
3730
+ "uniqueItems": true
3731
+ },
3732
+ "accepted_attestation_claim_types": {
3733
+ "type": "array",
3734
+ "items": {
3735
+ "type": "string",
3736
+ "format": "uri"
3737
+ },
3738
+ "minItems": 1,
3739
+ "uniqueItems": true
3740
+ },
3741
+ "ext": {
3742
+ "$ref": "#/$defs/external:core~1ext.json"
3743
+ }
3744
+ },
3745
+ "required": [
3746
+ "requirement_mode",
3747
+ "evidence_presence"
3748
+ ],
3749
+ "allOf": [
3750
+ {
3751
+ "if": {
3752
+ "properties": {
3753
+ "independent_attestation_required": {
3754
+ "const": true
3755
+ }
3756
+ },
3757
+ "required": [
3758
+ "independent_attestation_required"
3759
+ ]
3760
+ },
3761
+ "then": {
3762
+ "required": [
3763
+ "accepted_attestation_issuers"
3764
+ ]
3765
+ }
3766
+ }
3767
+ ],
3768
+ "additionalProperties": false
3769
+ },
3770
+ "external:enums/audience-evidence-methodology.json": {
3771
+ "type": "string",
3772
+ "enum": [
3773
+ "observed",
3774
+ "declared",
3775
+ "derived",
3776
+ "inferred",
3777
+ "modeled",
3778
+ "projected"
3779
+ ]
3780
+ },
3781
+ "external:enums/audience-subject-type.json": {
3782
+ "type": "string",
3783
+ "enum": [
3784
+ "individual",
3785
+ "household",
3786
+ "business",
3787
+ "contextual",
3788
+ "none"
3789
+ ]
3790
+ },
3791
+ "external:enums/audience-resolution-method.json": {
3792
+ "type": "string",
3793
+ "enum": [
3794
+ "deterministic_id",
3795
+ "probabilistic_device",
3796
+ "browser",
3797
+ "geographic",
3798
+ "content_signal",
3799
+ "mixed"
3800
+ ]
3801
+ },
3802
+ "external:core/audience-evidence-pin.json": {
3803
+ "type": "object",
3804
+ "properties": {
3805
+ "evidence_id": {
3806
+ "type": "string",
3807
+ "minLength": 1,
3808
+ "x-entity": "audience_evidence"
3809
+ },
3810
+ "snapshot_id": {
3811
+ "type": "string",
3812
+ "minLength": 1,
3813
+ "x-entity": "audience_evidence_snapshot"
3814
+ },
3815
+ "version": {
3816
+ "type": "string",
3817
+ "minLength": 1
3818
+ },
3819
+ "content_digest": {
3820
+ "type": "string",
3821
+ "pattern": "^sha256:[a-f0-9]{64}$"
3822
+ },
3823
+ "ext": {
3824
+ "$ref": "#/$defs/external:core~1ext.json"
3825
+ }
3826
+ },
3827
+ "required": [
3828
+ "evidence_id",
3829
+ "snapshot_id",
3830
+ "version",
3831
+ "content_digest"
3832
+ ],
3833
+ "additionalProperties": false
3834
+ },
3835
+ "external:core/context.json": {
3836
+ "type": "object",
3837
+ "additionalProperties": true
3838
+ },
3839
+ "external:core/canonical-measurement-terms.json": {
3840
+ "type": "object",
3841
+ "properties": {
3842
+ "billing_measurement": {
3843
+ "type": "object",
3844
+ "properties": {
3845
+ "vendor": {
3846
+ "$ref": "#/$defs/external:core~1brand-key.json"
3847
+ },
3848
+ "max_variance_percent": {
3849
+ "type": "number",
3850
+ "minimum": 0,
3851
+ "exclusiveMaximum": 100
3852
+ },
3853
+ "measurement_window": {
3854
+ "type": "string",
3855
+ "minLength": 1
3856
+ },
3857
+ "finalization_deadline_hours": {
3858
+ "type": "integer",
3859
+ "minimum": 0
3860
+ }
3861
+ },
3862
+ "required": [
3863
+ "vendor"
3864
+ ],
3865
+ "additionalProperties": false
3866
+ },
3867
+ "makegood_policy": {
3868
+ "type": "object",
3869
+ "properties": {
3870
+ "available_remedies": {
3871
+ "type": "array",
3872
+ "items": {
3873
+ "$ref": "#/$defs/external:enums~1makegood-remedy.json"
3874
+ },
3875
+ "minItems": 1,
3876
+ "uniqueItems": true
3877
+ }
3878
+ },
3879
+ "required": [
3880
+ "available_remedies"
3881
+ ],
3882
+ "additionalProperties": false
3883
+ }
3884
+ },
3885
+ "additionalProperties": false
3886
+ },
3887
+ "external:enums/makegood-remedy.json": {
3888
+ "type": "string",
3889
+ "enum": [
3890
+ "additional_delivery",
3891
+ "credit",
3892
+ "invoice_adjustment"
3893
+ ]
3894
+ },
3895
+ "external:core/canonical-performance-standard.json": {
3896
+ "type": "object",
3897
+ "properties": {
3898
+ "metric": {
3899
+ "$ref": "#/$defs/external:enums~1performance-standard-metric.json"
3900
+ },
3901
+ "threshold": {
3902
+ "type": "number",
3903
+ "minimum": 0,
3904
+ "maximum": 1
3905
+ },
3906
+ "standard": {
3907
+ "$ref": "#/$defs/external:enums~1viewability-standard.json"
3908
+ },
3909
+ "vendor": {
3910
+ "$ref": "#/$defs/external:core~1brand-key.json"
3911
+ }
3912
+ },
3913
+ "required": [
3914
+ "metric",
3915
+ "threshold",
3916
+ "vendor"
3917
+ ],
3918
+ "additionalProperties": false
3919
+ },
3920
+ "external:enums/performance-standard-metric.json": {
3921
+ "type": "string",
3922
+ "enum": [
3923
+ "viewability",
3924
+ "ivt",
3925
+ "completion_rate",
3926
+ "brand_safety",
3927
+ "attention_score"
3928
+ ]
3929
+ },
3930
+ "external:enums/viewability-standard.json": {
3931
+ "type": "string",
3932
+ "enum": [
3933
+ "mrc",
3934
+ "groupm"
3935
+ ]
3936
+ },
3937
+ "external:core/start-timing.json": {
3938
+ "oneOf": [
3939
+ {
3940
+ "type": "string",
3941
+ "const": "asap"
3942
+ },
3943
+ {
3944
+ "type": "string",
3945
+ "format": "date-time"
3946
+ }
3947
+ ]
3948
+ },
3949
+ "external:core/canonical-budget-allocation.json": {
3950
+ "discriminator": {
3951
+ "propertyName": "mode"
3952
+ },
3953
+ "oneOf": [
3954
+ {
3955
+ "type": "object",
3956
+ "properties": {
3957
+ "mode": {
3958
+ "type": "string",
3959
+ "const": "fixed"
3960
+ }
3961
+ },
3962
+ "required": [
3963
+ "mode"
3964
+ ],
3965
+ "additionalProperties": false
3966
+ },
3967
+ {
3968
+ "type": "object",
3969
+ "properties": {
3970
+ "mode": {
3971
+ "type": "string",
3972
+ "const": "seller_optimized"
3973
+ },
3974
+ "optimization_goals": {
3975
+ "type": "array",
3976
+ "items": {
3977
+ "$ref": "#/$defs/external:core~1canonical-optimization-goal.json"
3978
+ },
3979
+ "minItems": 1
3980
+ }
3981
+ },
3982
+ "required": [
3983
+ "mode",
3984
+ "optimization_goals"
3985
+ ],
3986
+ "additionalProperties": false
3987
+ }
3988
+ ]
3989
+ },
3990
+ "external:core/business-entity.json": {
3991
+ "type": "object",
3992
+ "properties": {
3993
+ "legal_name": {
3994
+ "type": "string",
3995
+ "maxLength": 200
3996
+ },
3997
+ "vat_id": {
3998
+ "type": "string",
3999
+ "pattern": "^[A-Z]{2}[A-Z0-9]{2,13}$"
4000
+ },
4001
+ "tax_id": {
4002
+ "type": "string",
4003
+ "maxLength": 30
4004
+ },
4005
+ "registration_number": {
4006
+ "type": "string",
4007
+ "maxLength": 50
4008
+ },
4009
+ "address": {
4010
+ "type": "object",
4011
+ "properties": {
4012
+ "street": {
4013
+ "type": "string",
4014
+ "maxLength": 200
4015
+ },
4016
+ "city": {
4017
+ "type": "string",
4018
+ "maxLength": 100
4019
+ },
4020
+ "postal_code": {
4021
+ "type": "string",
4022
+ "maxLength": 20
4023
+ },
4024
+ "region": {
4025
+ "type": "string",
4026
+ "maxLength": 100
4027
+ },
4028
+ "country": {
4029
+ "type": "string",
4030
+ "pattern": "^[A-Z]{2}$"
4031
+ }
4032
+ },
4033
+ "required": [
4034
+ "street",
4035
+ "city",
4036
+ "postal_code",
4037
+ "country"
4038
+ ],
4039
+ "additionalProperties": false
4040
+ },
4041
+ "contacts": {
4042
+ "type": "array",
4043
+ "items": {
4044
+ "type": "object",
4045
+ "properties": {
4046
+ "role": {
4047
+ "type": "string",
4048
+ "enum": [
4049
+ "billing",
4050
+ "legal",
4051
+ "creative",
4052
+ "general"
4053
+ ]
4054
+ },
4055
+ "name": {
4056
+ "type": "string",
4057
+ "maxLength": 200
4058
+ },
4059
+ "email": {
4060
+ "type": "string",
4061
+ "format": "email",
4062
+ "maxLength": 254
4063
+ },
4064
+ "phone": {
4065
+ "type": "string",
4066
+ "maxLength": 30
4067
+ }
4068
+ },
4069
+ "required": [
4070
+ "role"
4071
+ ],
4072
+ "additionalProperties": false
4073
+ },
4074
+ "maxItems": 10
4075
+ },
4076
+ "bank": {
4077
+ "type": "object",
4078
+ "writeOnly": true,
4079
+ "properties": {
4080
+ "account_holder": {
4081
+ "type": "string",
4082
+ "maxLength": 200
4083
+ },
4084
+ "iban": {
4085
+ "type": "string",
4086
+ "pattern": "^[A-Z]{2}[0-9]{2}[A-Z0-9]{4,30}$"
4087
+ },
4088
+ "bic": {
4089
+ "type": "string",
4090
+ "pattern": "^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$"
4091
+ },
4092
+ "routing_number": {
4093
+ "type": "string",
4094
+ "maxLength": 30
4095
+ },
4096
+ "account_number": {
4097
+ "type": "string",
4098
+ "maxLength": 30
4099
+ }
4100
+ },
4101
+ "required": [
4102
+ "account_holder"
4103
+ ],
4104
+ "additionalProperties": false
4105
+ },
4106
+ "ext": {
4107
+ "$ref": "#/$defs/external:core~1ext.json"
4108
+ }
4109
+ },
4110
+ "required": [
4111
+ "legal_name"
4112
+ ],
4113
+ "additionalProperties": false
4114
+ },
4115
+ "external:core/canonical-reporting-commitment.json": {
4116
+ "type": "object",
4117
+ "discriminator": {
4118
+ "propertyName": "scope"
4119
+ },
4120
+ "oneOf": [
4121
+ {
4122
+ "properties": {
4123
+ "scope": {
4124
+ "type": "string",
4125
+ "const": "standard"
4126
+ },
4127
+ "metric_id": {
4128
+ "$ref": "#/$defs/external:enums~1available-metric.json"
4129
+ },
4130
+ "qualifier": {
4131
+ "$ref": "#/$defs/external:core~1canonical-metric-qualifier.json"
4132
+ },
4133
+ "effective_at": {
4134
+ "type": "string",
4135
+ "format": "date-time"
4136
+ }
4137
+ },
4138
+ "required": [
4139
+ "scope",
4140
+ "metric_id"
4141
+ ],
4142
+ "additionalProperties": false
4143
+ },
4144
+ {
4145
+ "properties": {
4146
+ "scope": {
4147
+ "type": "string",
4148
+ "const": "vendor"
4149
+ },
4150
+ "vendor": {
4151
+ "$ref": "#/$defs/external:core~1brand-key.json"
4152
+ },
4153
+ "metric_id": {
4154
+ "$ref": "#/$defs/external:core~1vendor-metric-id.json"
4155
+ },
4156
+ "qualifier": {
4157
+ "$ref": "#/$defs/external:core~1canonical-metric-qualifier.json"
4158
+ },
4159
+ "effective_at": {
4160
+ "type": "string",
4161
+ "format": "date-time"
4162
+ }
4163
+ },
4164
+ "required": [
4165
+ "scope",
4166
+ "vendor",
4167
+ "metric_id"
4168
+ ],
4169
+ "additionalProperties": false
4170
+ }
4171
+ ]
4172
+ },
4173
+ "external:enums/available-metric.json": {
4174
+ "type": "string",
4175
+ "enum": [
4176
+ "impressions",
4177
+ "spend",
4178
+ "clicks",
4179
+ "ctr",
4180
+ "views",
4181
+ "completed_views",
4182
+ "completion_rate",
4183
+ "conversions",
4184
+ "conversion_value",
4185
+ "commissionable_value",
4186
+ "roas",
4187
+ "cost_per_acquisition",
4188
+ "new_to_brand_rate",
4189
+ "leads",
4190
+ "reach",
4191
+ "frequency",
4192
+ "grps",
4193
+ "engagements",
4194
+ "engagement_rate",
4195
+ "follows",
4196
+ "saves",
4197
+ "profile_visits",
4198
+ "viewability",
4199
+ "quartile_data",
4200
+ "dooh_metrics",
4201
+ "cost_per_click",
4202
+ "cost_per_completed_view",
4203
+ "cpm",
4204
+ "downloads",
4205
+ "units_sold",
4206
+ "new_to_brand_units",
4207
+ "plays",
4208
+ "incremental_sales_lift",
4209
+ "brand_lift",
4210
+ "foot_traffic",
4211
+ "conversion_lift",
4212
+ "brand_search_lift"
4213
+ ]
4214
+ },
4215
+ "external:core/canonical-metric-qualifier.json": {
4216
+ "type": "object",
4217
+ "properties": {
4218
+ "viewability_standard": {
4219
+ "$ref": "#/$defs/external:enums~1viewability-standard.json"
4220
+ },
4221
+ "completion_source": {
4222
+ "$ref": "#/$defs/external:enums~1completion-source.json"
4223
+ },
4224
+ "attribution_methodology": {
4225
+ "$ref": "#/$defs/external:enums~1attribution-methodology.json"
4226
+ },
4227
+ "attribution_window": {
4228
+ "$ref": "#/$defs/external:core~1duration.json"
4229
+ },
4230
+ "lift_dimension": {
4231
+ "$ref": "#/$defs/external:enums~1lift-dimension.json"
4232
+ }
4233
+ },
4234
+ "additionalProperties": false
4235
+ },
4236
+ "external:enums/completion-source.json": {
4237
+ "type": "string",
4238
+ "enum": [
4239
+ "seller_attested",
4240
+ "vendor_attested"
4241
+ ]
4242
+ },
4243
+ "external:enums/attribution-methodology.json": {
4244
+ "type": "string",
4245
+ "enum": [
4246
+ "deterministic_purchase",
4247
+ "probabilistic",
4248
+ "panel_based",
4249
+ "modeled"
4250
+ ]
4251
+ },
4252
+ "external:enums/lift-dimension.json": {
4253
+ "type": "string",
4254
+ "enum": [
4255
+ "awareness",
4256
+ "consideration",
4257
+ "favorability",
4258
+ "purchase_intent",
4259
+ "ad_recall"
4260
+ ]
4261
+ },
4262
+ "external:core/insertion-order.json": {
4263
+ "type": "object",
4264
+ "properties": {
4265
+ "io_id": {
4266
+ "type": "string",
4267
+ "maxLength": 255
4268
+ },
4269
+ "terms": {
4270
+ "type": "object",
4271
+ "properties": {
4272
+ "advertiser": {
4273
+ "type": "string",
4274
+ "maxLength": 500
4275
+ },
4276
+ "publisher": {
4277
+ "type": "string",
4278
+ "maxLength": 500
4279
+ },
4280
+ "total_budget": {
4281
+ "type": "object",
4282
+ "properties": {
4283
+ "amount": {
4284
+ "type": "number",
4285
+ "minimum": 0
4286
+ },
4287
+ "currency": {
4288
+ "type": "string",
4289
+ "minLength": 3,
4290
+ "maxLength": 3
4291
+ }
4292
+ },
4293
+ "required": [
4294
+ "amount",
4295
+ "currency"
4296
+ ]
4297
+ },
4298
+ "flight_start": {
4299
+ "type": "string",
4300
+ "format": "date-time"
4301
+ },
4302
+ "flight_end": {
4303
+ "type": "string",
4304
+ "format": "date-time"
4305
+ },
4306
+ "payment_terms": {
4307
+ "type": "string",
4308
+ "enum": [
4309
+ "net_30",
4310
+ "net_60",
4311
+ "net_90",
4312
+ "prepaid",
4313
+ "due_on_receipt"
4314
+ ]
4315
+ }
4316
+ },
4317
+ "additionalProperties": true
4318
+ },
4319
+ "terms_url": {
4320
+ "type": "string",
4321
+ "format": "uri"
4322
+ },
4323
+ "signing_url": {
4324
+ "type": "string",
4325
+ "format": "uri"
4326
+ },
4327
+ "requires_signature": {
4328
+ "type": "boolean"
4329
+ }
4330
+ },
4331
+ "required": [
4332
+ "io_id",
4333
+ "requires_signature"
4334
+ ],
4335
+ "additionalProperties": true
4336
+ },
4337
+ "external:core/canonical-media-buy-action.json": {
4338
+ "type": "object",
4339
+ "discriminator": {
4340
+ "propertyName": "task"
4341
+ },
4342
+ "oneOf": [
4343
+ {
4344
+ "properties": {
4345
+ "task": {
4346
+ "type": "string",
4347
+ "const": "control_media_buy"
4348
+ },
4349
+ "action": {
4350
+ "type": "string",
4351
+ "enum": [
4352
+ "pause",
4353
+ "resume",
4354
+ "cancel",
4355
+ "increase_budget",
4356
+ "decrease_budget",
4357
+ "reallocate_budget",
4358
+ "update_budget_allocation",
4359
+ "update_targeting",
4360
+ "update_pacing",
4361
+ "update_bidding",
4362
+ "update_frequency_caps",
4363
+ "update_catalog_assignments",
4364
+ "update_keywords",
4365
+ "update_optimization_goals",
4366
+ "update_impression_goal",
4367
+ "update_spend_target",
4368
+ "update_reporting_webhook",
4369
+ "remove_packages"
4370
+ ]
4371
+ },
4372
+ "mode": {
4373
+ "$ref": "#/$defs/external:enums~1canonical-media-buy-action-mode.json"
4374
+ },
4375
+ "sla": {
4376
+ "$ref": "#/$defs/external:core~1sla-window.json"
4377
+ },
4378
+ "terms_ref": {
4379
+ "type": "string"
4380
+ }
4381
+ },
4382
+ "required": [
4383
+ "task",
4384
+ "action",
4385
+ "mode"
4386
+ ],
4387
+ "additionalProperties": false
4388
+ },
4389
+ {
4390
+ "properties": {
4391
+ "task": {
4392
+ "type": "string",
4393
+ "const": "refine_proposals"
4394
+ },
4395
+ "action": {
4396
+ "type": "string",
4397
+ "enum": [
4398
+ "cancel",
4399
+ "extend_flight",
4400
+ "shorten_flight",
4401
+ "update_flight_dates",
4402
+ "increase_budget",
4403
+ "decrease_budget",
4404
+ "reallocate_budget",
4405
+ "update_budget_allocation",
4406
+ "update_targeting",
4407
+ "update_pacing",
4408
+ "update_bidding",
4409
+ "update_frequency_caps",
4410
+ "add_packages",
4411
+ "remove_packages"
4412
+ ]
4413
+ },
4414
+ "mode": {
4415
+ "$ref": "#/$defs/external:enums~1canonical-media-buy-action-mode.json"
4416
+ },
4417
+ "sla": {
4418
+ "$ref": "#/$defs/external:core~1sla-window.json"
4419
+ },
4420
+ "terms_ref": {
4421
+ "type": "string"
4422
+ }
4423
+ },
4424
+ "required": [
4425
+ "task",
4426
+ "action",
4427
+ "mode"
4428
+ ],
4429
+ "additionalProperties": false
4430
+ },
4431
+ {
4432
+ "properties": {
4433
+ "task": {
4434
+ "type": "string",
4435
+ "const": "sync_creatives"
4436
+ },
4437
+ "action": {
4438
+ "type": "string",
4439
+ "enum": [
4440
+ "replace_creative",
4441
+ "update_creative_assignments",
4442
+ "remove_creative"
4443
+ ]
4444
+ },
4445
+ "mode": {
4446
+ "$ref": "#/$defs/external:enums~1canonical-media-buy-action-mode.json"
4447
+ },
4448
+ "sla": {
4449
+ "$ref": "#/$defs/external:core~1sla-window.json"
4450
+ },
4451
+ "terms_ref": {
4452
+ "type": "string"
4453
+ }
4454
+ },
4455
+ "required": [
4456
+ "task",
4457
+ "action",
4458
+ "mode"
4459
+ ],
4460
+ "additionalProperties": false
4461
+ }
4462
+ ]
4463
+ },
4464
+ "external:enums/canonical-media-buy-action-mode.json": {
4465
+ "type": "string",
4466
+ "enum": [
4467
+ "self_serve",
4468
+ "conditional_self_serve",
4469
+ "requires_approval"
4470
+ ]
4471
+ },
4472
+ "external:core/sla-window.json": {
4473
+ "type": "object",
4474
+ "properties": {
4475
+ "response_max": {
4476
+ "type": "string",
4477
+ "pattern": "^P(?!$)(\\d+Y)?(\\d+M)?(\\d+D)?(T(\\d+H)?(\\d+M)?(\\d+S)?)?$"
4478
+ },
4479
+ "completion_max": {
4480
+ "type": "string",
4481
+ "pattern": "^P(?!$)(\\d+Y)?(\\d+M)?(\\d+D)?(T(\\d+H)?(\\d+M)?(\\d+S)?)?$"
4482
+ }
4483
+ },
4484
+ "additionalProperties": false
4485
+ },
4486
+ "external:core/warning.json": {
4487
+ "type": "object",
4488
+ "properties": {
4489
+ "code": {
4490
+ "$ref": "#/$defs/external:enums~1warning-code.json"
4491
+ },
4492
+ "message": {
4493
+ "type": "string",
4494
+ "minLength": 1,
4495
+ "maxLength": 2000
4496
+ },
4497
+ "affected_resource": {
4498
+ "$ref": "#/$defs/external:core~1warning-resource.json"
4499
+ },
4500
+ "details": {
4501
+ "type": "object",
4502
+ "additionalProperties": true
4503
+ },
4504
+ "ext": {
4505
+ "$ref": "#/$defs/external:core~1ext.json"
4506
+ }
4507
+ },
4508
+ "required": [
4509
+ "code",
4510
+ "message",
4511
+ "affected_resource"
4512
+ ],
4513
+ "allOf": [
4514
+ {
4515
+ "if": {
4516
+ "properties": {
4517
+ "code": {
4518
+ "enum": [
4519
+ "inventory_shortfall_forecast",
4520
+ "flight_change_creates_pacing_risk"
4521
+ ]
4522
+ }
4523
+ },
4524
+ "required": [
4525
+ "code"
4526
+ ]
4527
+ },
4528
+ "then": {
4529
+ "properties": {
4530
+ "affected_resource": {
4531
+ "properties": {
4532
+ "resource_type": {
4533
+ "const": "package"
4534
+ }
4535
+ }
4536
+ }
4537
+ }
4538
+ }
4539
+ },
4540
+ {
4541
+ "if": {
4542
+ "properties": {
4543
+ "code": {
4544
+ "const": "fields_ignored_due_to_precedence"
4545
+ }
4546
+ },
4547
+ "required": [
4548
+ "code"
4549
+ ]
4550
+ },
4551
+ "then": {
4552
+ "properties": {
4553
+ "affected_resource": {
4554
+ "properties": {
4555
+ "resource_type": {
4556
+ "enum": [
4557
+ "media_buy",
4558
+ "package"
4559
+ ]
4560
+ }
4561
+ }
4562
+ }
4563
+ }
4564
+ }
4565
+ }
4566
+ ],
4567
+ "x-adcp-validation": {
4568
+ "verifier_constraints": {
4569
+ "warning_capability_requirements": {
4570
+ "inventory_shortfall_forecast": {
4571
+ "supported_indicator_type": "inventory_shortfall_forecast"
4572
+ },
4573
+ "flight_change_creates_pacing_risk": {
4574
+ "supported_indicator_type": "pacing_risk"
4575
+ },
4576
+ "fields_ignored_due_to_precedence": null
4577
+ }
4578
+ },
4579
+ "spec": "specs/relationship-scoped-indicators.md#warning-contract"
4580
+ },
4581
+ "additionalProperties": true
4582
+ },
4583
+ "external:enums/warning-code.json": {
4584
+ "type": "string",
4585
+ "enum": [
4586
+ "inventory_shortfall_forecast",
4587
+ "flight_change_creates_pacing_risk",
4588
+ "fields_ignored_due_to_precedence"
4589
+ ]
4590
+ },
4591
+ "external:core/warning-resource.json": {
4592
+ "type": "object",
4593
+ "properties": {
4594
+ "resource_type": {
4595
+ "type": "string",
4596
+ "enum": [
4597
+ "media_buy",
4598
+ "package",
4599
+ "creative",
4600
+ "creative_assignment"
4601
+ ]
4602
+ },
4603
+ "media_buy_id": {
4604
+ "type": "string",
4605
+ "x-entity": "media_buy"
4606
+ },
4607
+ "package_id": {
4608
+ "type": "string",
4609
+ "x-entity": "package"
4610
+ },
4611
+ "creative_id": {
4612
+ "type": "string",
4613
+ "x-entity": "creative"
4614
+ }
4615
+ },
4616
+ "required": [
4617
+ "resource_type"
4618
+ ],
4619
+ "allOf": [
4620
+ {
4621
+ "if": {
4622
+ "properties": {
4623
+ "resource_type": {
4624
+ "const": "media_buy"
4625
+ }
4626
+ },
4627
+ "required": [
4628
+ "resource_type"
4629
+ ]
4630
+ },
4631
+ "then": {
4632
+ "required": [
4633
+ "media_buy_id"
4634
+ ]
4635
+ }
4636
+ },
4637
+ {
4638
+ "if": {
4639
+ "properties": {
4640
+ "resource_type": {
4641
+ "const": "package"
4642
+ }
4643
+ },
4644
+ "required": [
4645
+ "resource_type"
4646
+ ]
4647
+ },
4648
+ "then": {
4649
+ "required": [
4650
+ "media_buy_id",
4651
+ "package_id"
4652
+ ]
4653
+ }
4654
+ },
4655
+ {
4656
+ "if": {
4657
+ "properties": {
4658
+ "resource_type": {
4659
+ "const": "creative"
4660
+ }
4661
+ },
4662
+ "required": [
4663
+ "resource_type"
4664
+ ]
4665
+ },
4666
+ "then": {
4667
+ "required": [
4668
+ "creative_id"
4669
+ ]
4670
+ }
4671
+ },
4672
+ {
4673
+ "if": {
4674
+ "properties": {
4675
+ "resource_type": {
4676
+ "const": "creative_assignment"
4677
+ }
4678
+ },
4679
+ "required": [
4680
+ "resource_type"
4681
+ ]
4682
+ },
4683
+ "then": {
4684
+ "required": [
4685
+ "media_buy_id",
4686
+ "package_id",
4687
+ "creative_id"
4688
+ ]
4689
+ }
4690
+ }
4691
+ ],
4692
+ "additionalProperties": false
4693
+ },
4694
+ "external:core/error.json": {
4695
+ "type": "object",
4696
+ "properties": {
4697
+ "code": {
4698
+ "type": "string",
4699
+ "minLength": 1,
4700
+ "maxLength": 64
4701
+ },
4702
+ "message": {
4703
+ "type": "string"
4704
+ },
4705
+ "field": {
4706
+ "type": "string"
4707
+ },
4708
+ "suggestion": {
4709
+ "type": "string"
4710
+ },
4711
+ "retry_after": {
4712
+ "type": "number",
4713
+ "minimum": 1,
4714
+ "maximum": 3600
4715
+ },
4716
+ "issues": {
4717
+ "type": "array",
4718
+ "items": {
4719
+ "type": "object",
4720
+ "properties": {
4721
+ "pointer": {
4722
+ "type": "string"
4723
+ },
4724
+ "message": {
4725
+ "type": "string"
4726
+ },
4727
+ "keyword": {
4728
+ "type": "string"
4729
+ },
4730
+ "schemaPath": {
4731
+ "type": "string"
4732
+ },
4733
+ "schema_id": {
4734
+ "type": "string"
4735
+ },
4736
+ "discriminator": {
4737
+ "type": "array",
4738
+ "items": {
4739
+ "type": "object",
4740
+ "properties": {
4741
+ "property_name": {
4742
+ "type": "string"
4743
+ },
4744
+ "value": {
4745
+ "type": [
4746
+ "string",
4747
+ "number",
4748
+ "boolean",
4749
+ "null"
4750
+ ]
4751
+ }
4752
+ },
4753
+ "required": [
4754
+ "property_name",
4755
+ "value"
4756
+ ],
4757
+ "additionalProperties": false
4758
+ }
4759
+ }
4760
+ },
4761
+ "required": [
4762
+ "pointer",
4763
+ "message",
4764
+ "keyword"
4765
+ ],
4766
+ "additionalProperties": true
4767
+ }
4768
+ },
4769
+ "details": {
4770
+ "type": "object",
4771
+ "additionalProperties": true
4772
+ },
4773
+ "recovery": {
4774
+ "type": "string",
4775
+ "enum": [
4776
+ "transient",
4777
+ "correctable",
4778
+ "terminal"
4779
+ ]
4780
+ },
4781
+ "source": {
4782
+ "type": "string",
4783
+ "enum": [
4784
+ "producer",
4785
+ "sdk"
4786
+ ]
4787
+ },
4788
+ "sdk_id": {
4789
+ "type": "string"
4790
+ }
4791
+ },
4792
+ "required": [
4793
+ "code",
4794
+ "message"
4795
+ ],
4796
+ "additionalProperties": true
4797
+ }
4798
+ }
4799
+ }