@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,601 @@
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/accept-proposal-request.json",
4
+ "type": "object",
5
+ "x-mutates-state": true,
6
+ "x-governed-commitment": {
7
+ "scope": "conditional",
8
+ "triggers": [
9
+ "creates_commitment",
10
+ "increases_obligation",
11
+ "extends_term",
12
+ "resumes_execution",
13
+ "reallocates_delivery"
14
+ ],
15
+ "exemptions": [
16
+ "negotiated_cancellation",
17
+ "decrease_only"
18
+ ],
19
+ "precedence": "trigger_overrides_exemption"
20
+ },
21
+ "x-operation-family": "accept_proposal",
22
+ "x-added-in": "3.2.0",
23
+ "x-legacy-fallback": {
24
+ "tool": "create_media_buy",
25
+ "mode": "orchestrated"
26
+ },
27
+ "properties": {
28
+ "adcp_version": {
29
+ "$ref": "#/$defs/external:core~1version-envelope.json/properties/adcp_version"
30
+ },
31
+ "idempotency_key": {
32
+ "type": "string",
33
+ "minLength": 16,
34
+ "maxLength": 255,
35
+ "pattern": "^[A-Za-z0-9_.:-]{16,255}$"
36
+ },
37
+ "account": {
38
+ "$ref": "#/$defs/external:core~1canonical-account-ref.json"
39
+ },
40
+ "proposal_id": {
41
+ "type": "string",
42
+ "minLength": 1,
43
+ "x-entity": "proposal"
44
+ },
45
+ "proposal_terms_digest": {
46
+ "type": "string",
47
+ "pattern": "^sha256:[A-Za-z0-9_-]{43}$"
48
+ },
49
+ "total_budget": {
50
+ "type": "object",
51
+ "properties": {
52
+ "amount": {
53
+ "type": "number",
54
+ "minimum": 0
55
+ },
56
+ "currency": {
57
+ "type": "string",
58
+ "pattern": "^[A-Z]{3}$"
59
+ }
60
+ },
61
+ "required": [
62
+ "amount",
63
+ "currency"
64
+ ],
65
+ "additionalProperties": false
66
+ },
67
+ "daily_budget_cap": {
68
+ "type": "number",
69
+ "minimum": 0
70
+ },
71
+ "budget_cap_timezone": {
72
+ "type": "string",
73
+ "minLength": 1
74
+ },
75
+ "io_acceptance": {
76
+ "type": "object",
77
+ "properties": {
78
+ "io_id": {
79
+ "type": "string",
80
+ "minLength": 1
81
+ },
82
+ "accepted_at": {
83
+ "type": "string",
84
+ "format": "date-time"
85
+ },
86
+ "signatory": {
87
+ "type": "string",
88
+ "minLength": 1,
89
+ "maxLength": 250
90
+ },
91
+ "signature_id": {
92
+ "type": "string",
93
+ "minLength": 1
94
+ }
95
+ },
96
+ "required": [
97
+ "io_id",
98
+ "accepted_at",
99
+ "signatory"
100
+ ],
101
+ "additionalProperties": false
102
+ },
103
+ "purchase_order_ref": {
104
+ "type": "string",
105
+ "minLength": 1,
106
+ "maxLength": 255
107
+ },
108
+ "governance_context": {
109
+ "type": "string",
110
+ "minLength": 1,
111
+ "maxLength": 4096
112
+ },
113
+ "push_notification_config": {
114
+ "$ref": "#/$defs/external:core~1push-notification-config.json"
115
+ },
116
+ "reporting_webhook": {
117
+ "$ref": "#/$defs/external:core~1reporting-webhook.json"
118
+ },
119
+ "opportunity": {
120
+ "allOf": [
121
+ {
122
+ "$ref": "#/$defs/external:core~1opportunity-context.json"
123
+ },
124
+ {
125
+ "properties": {
126
+ "status": {
127
+ "const": "closed"
128
+ }
129
+ },
130
+ "if": {
131
+ "properties": {
132
+ "status": {
133
+ "const": "closed"
134
+ }
135
+ },
136
+ "required": [
137
+ "status"
138
+ ]
139
+ },
140
+ "then": {
141
+ "properties": {
142
+ "close_reason": {
143
+ "const": "accepted_with_seller"
144
+ }
145
+ }
146
+ }
147
+ }
148
+ ]
149
+ },
150
+ "context": {
151
+ "$ref": "#/$defs/external:core~1context.json"
152
+ },
153
+ "ext": {
154
+ "$ref": "#/$defs/external:core~1ext.json"
155
+ }
156
+ },
157
+ "required": [
158
+ "idempotency_key",
159
+ "account",
160
+ "proposal_id",
161
+ "proposal_terms_digest"
162
+ ],
163
+ "additionalProperties": false,
164
+ "not": {
165
+ "anyOf": [
166
+ {
167
+ "required": [
168
+ "packages"
169
+ ]
170
+ },
171
+ {
172
+ "required": [
173
+ "purchases"
174
+ ]
175
+ },
176
+ {
177
+ "required": [
178
+ "creatives"
179
+ ]
180
+ },
181
+ {
182
+ "required": [
183
+ "creative_assignments"
184
+ ]
185
+ }
186
+ ]
187
+ },
188
+ "$defs": {
189
+ "external:core/version-envelope.json": {
190
+ "type": "object",
191
+ "properties": {
192
+ "adcp_version": {
193
+ "type": "string",
194
+ "pattern": "^(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[a-zA-Z0-9](?:[a-zA-Z0-9.-]*[a-zA-Z0-9])?)?$"
195
+ },
196
+ "adcp_major_version": {
197
+ "type": "integer",
198
+ "deprecated": true,
199
+ "minimum": 1,
200
+ "maximum": 99
201
+ }
202
+ }
203
+ },
204
+ "external:core/canonical-account-ref.json": {
205
+ "type": "object",
206
+ "anyOf": [
207
+ {
208
+ "properties": {
209
+ "account_id": {
210
+ "type": "string",
211
+ "minLength": 1,
212
+ "x-entity": "account"
213
+ }
214
+ },
215
+ "required": [
216
+ "account_id"
217
+ ],
218
+ "additionalProperties": false
219
+ },
220
+ {
221
+ "properties": {
222
+ "brand": {
223
+ "$ref": "#/$defs/external:core~1brand-key.json"
224
+ },
225
+ "operator": {
226
+ "type": "string",
227
+ "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$",
228
+ "x-entity": "operator"
229
+ },
230
+ "operator_unit": {
231
+ "$ref": "#/$defs/external:core~1operator-unit.json"
232
+ },
233
+ "currency": {
234
+ "type": "string",
235
+ "pattern": "^[A-Z]{3}$"
236
+ },
237
+ "timezone": {
238
+ "type": "string",
239
+ "minLength": 1
240
+ },
241
+ "sandbox": {
242
+ "type": "boolean",
243
+ "default": false
244
+ }
245
+ },
246
+ "required": [
247
+ "brand",
248
+ "operator"
249
+ ],
250
+ "additionalProperties": false
251
+ }
252
+ ]
253
+ },
254
+ "external:core/brand-key.json": {
255
+ "type": "object",
256
+ "properties": {
257
+ "domain": {
258
+ "type": "string",
259
+ "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$"
260
+ },
261
+ "brand_id": {
262
+ "$ref": "#/$defs/external:core~1brand-id.json"
263
+ },
264
+ "countries": {
265
+ "type": "array",
266
+ "items": {
267
+ "type": "string",
268
+ "pattern": "^[A-Z]{2}$"
269
+ },
270
+ "minItems": 1,
271
+ "uniqueItems": true
272
+ }
273
+ },
274
+ "required": [
275
+ "domain"
276
+ ],
277
+ "additionalProperties": false
278
+ },
279
+ "external:core/brand-id.json": {
280
+ "type": "string",
281
+ "pattern": "^[a-z0-9_]+$",
282
+ "x-entity": "advertiser_brand"
283
+ },
284
+ "external:core/operator-unit.json": {
285
+ "x-entity": "operator_unit",
286
+ "type": "object",
287
+ "properties": {
288
+ "id": {
289
+ "type": "string",
290
+ "minLength": 1,
291
+ "maxLength": 255,
292
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$"
293
+ },
294
+ "name": {
295
+ "type": "string",
296
+ "minLength": 1,
297
+ "maxLength": 200
298
+ }
299
+ },
300
+ "required": [
301
+ "id"
302
+ ],
303
+ "additionalProperties": false
304
+ },
305
+ "external:core/push-notification-config.json": {
306
+ "type": "object",
307
+ "properties": {
308
+ "url": {
309
+ "type": "string",
310
+ "format": "uri"
311
+ },
312
+ "operation_id": {
313
+ "type": "string",
314
+ "minLength": 1,
315
+ "maxLength": 255,
316
+ "pattern": "^[A-Za-z0-9_.:-]{1,255}$"
317
+ },
318
+ "token": {
319
+ "type": "string",
320
+ "minLength": 16,
321
+ "maxLength": 4096
322
+ },
323
+ "authentication": {
324
+ "type": "object",
325
+ "deprecated": true,
326
+ "properties": {
327
+ "schemes": {
328
+ "type": "array",
329
+ "items": {
330
+ "$ref": "#/$defs/external:enums~1auth-scheme.json"
331
+ },
332
+ "minItems": 1,
333
+ "maxItems": 1
334
+ },
335
+ "credentials": {
336
+ "type": "string",
337
+ "minLength": 32
338
+ }
339
+ },
340
+ "required": [
341
+ "schemes",
342
+ "credentials"
343
+ ],
344
+ "additionalProperties": false
345
+ }
346
+ },
347
+ "required": [
348
+ "url"
349
+ ]
350
+ },
351
+ "external:enums/auth-scheme.json": {
352
+ "deprecated": true,
353
+ "type": "string",
354
+ "enum": [
355
+ "Bearer",
356
+ "HMAC-SHA256"
357
+ ]
358
+ },
359
+ "external:core/reporting-webhook.json": {
360
+ "type": "object",
361
+ "properties": {
362
+ "url": {
363
+ "type": "string",
364
+ "format": "uri"
365
+ },
366
+ "token": {
367
+ "type": "string",
368
+ "minLength": 16
369
+ },
370
+ "authentication": {
371
+ "type": "object",
372
+ "deprecated": true,
373
+ "properties": {
374
+ "schemes": {
375
+ "type": "array",
376
+ "items": {
377
+ "$ref": "#/$defs/external:enums~1auth-scheme.json"
378
+ },
379
+ "minItems": 1,
380
+ "maxItems": 1
381
+ },
382
+ "credentials": {
383
+ "type": "string",
384
+ "minLength": 32
385
+ }
386
+ },
387
+ "required": [
388
+ "schemes",
389
+ "credentials"
390
+ ],
391
+ "additionalProperties": false
392
+ },
393
+ "reporting_frequency": {
394
+ "type": "string",
395
+ "enum": [
396
+ "hourly",
397
+ "daily",
398
+ "monthly"
399
+ ]
400
+ },
401
+ "requested_metrics": {
402
+ "type": "array",
403
+ "items": {
404
+ "$ref": "#/$defs/external:enums~1available-metric.json"
405
+ },
406
+ "uniqueItems": true
407
+ }
408
+ },
409
+ "required": [
410
+ "url",
411
+ "authentication",
412
+ "reporting_frequency"
413
+ ],
414
+ "additionalProperties": true
415
+ },
416
+ "external:enums/available-metric.json": {
417
+ "type": "string",
418
+ "enum": [
419
+ "impressions",
420
+ "spend",
421
+ "clicks",
422
+ "ctr",
423
+ "views",
424
+ "completed_views",
425
+ "completion_rate",
426
+ "conversions",
427
+ "conversion_value",
428
+ "commissionable_value",
429
+ "roas",
430
+ "cost_per_acquisition",
431
+ "new_to_brand_rate",
432
+ "leads",
433
+ "reach",
434
+ "frequency",
435
+ "grps",
436
+ "engagements",
437
+ "engagement_rate",
438
+ "follows",
439
+ "saves",
440
+ "profile_visits",
441
+ "viewability",
442
+ "quartile_data",
443
+ "dooh_metrics",
444
+ "cost_per_click",
445
+ "cost_per_completed_view",
446
+ "cpm",
447
+ "downloads",
448
+ "units_sold",
449
+ "new_to_brand_units",
450
+ "plays",
451
+ "incremental_sales_lift",
452
+ "brand_lift",
453
+ "foot_traffic",
454
+ "conversion_lift",
455
+ "brand_search_lift"
456
+ ]
457
+ },
458
+ "external:core/opportunity-context.json": {
459
+ "type": "object",
460
+ "properties": {
461
+ "opportunity_id": {
462
+ "type": "string",
463
+ "minLength": 1,
464
+ "maxLength": 255,
465
+ "pattern": "^[A-Za-z0-9_.:-]{1,255}$",
466
+ "x-entity": "opportunity"
467
+ },
468
+ "phase": {
469
+ "type": "string",
470
+ "enum": [
471
+ "exploratory",
472
+ "planning",
473
+ "active_sourcing"
474
+ ]
475
+ },
476
+ "intent": {
477
+ "type": "string",
478
+ "enum": [
479
+ "test",
480
+ "speculative",
481
+ "planning",
482
+ "live_rfp"
483
+ ]
484
+ },
485
+ "planning_horizon": {
486
+ "$ref": "#/$defs/external:core~1date-range.json"
487
+ },
488
+ "response_deadline": {
489
+ "type": "string",
490
+ "format": "date-time"
491
+ },
492
+ "status": {
493
+ "type": "string",
494
+ "enum": [
495
+ "open",
496
+ "closed"
497
+ ]
498
+ },
499
+ "close_reason": {
500
+ "type": "string",
501
+ "enum": [
502
+ "accepted_with_seller",
503
+ "purchased_elsewhere",
504
+ "selected_alternative",
505
+ "not_pursued",
506
+ "budget_changed",
507
+ "timing_changed",
508
+ "other"
509
+ ]
510
+ },
511
+ "close_detail": {
512
+ "type": "string",
513
+ "minLength": 1,
514
+ "maxLength": 500
515
+ }
516
+ },
517
+ "required": [
518
+ "opportunity_id"
519
+ ],
520
+ "allOf": [
521
+ {
522
+ "if": {
523
+ "properties": {
524
+ "status": {
525
+ "const": "closed"
526
+ }
527
+ },
528
+ "required": [
529
+ "status"
530
+ ]
531
+ },
532
+ "then": {
533
+ "required": [
534
+ "close_reason"
535
+ ]
536
+ },
537
+ "else": {
538
+ "not": {
539
+ "anyOf": [
540
+ {
541
+ "required": [
542
+ "close_reason"
543
+ ]
544
+ },
545
+ {
546
+ "required": [
547
+ "close_detail"
548
+ ]
549
+ }
550
+ ]
551
+ }
552
+ }
553
+ },
554
+ {
555
+ "if": {
556
+ "properties": {
557
+ "close_reason": {
558
+ "const": "other"
559
+ }
560
+ },
561
+ "required": [
562
+ "close_reason"
563
+ ]
564
+ },
565
+ "then": {
566
+ "required": [
567
+ "close_detail"
568
+ ]
569
+ }
570
+ }
571
+ ],
572
+ "additionalProperties": false
573
+ },
574
+ "external:core/date-range.json": {
575
+ "type": "object",
576
+ "properties": {
577
+ "start": {
578
+ "type": "string",
579
+ "format": "date"
580
+ },
581
+ "end": {
582
+ "type": "string",
583
+ "format": "date"
584
+ }
585
+ },
586
+ "required": [
587
+ "start",
588
+ "end"
589
+ ],
590
+ "additionalProperties": true
591
+ },
592
+ "external:core/context.json": {
593
+ "type": "object",
594
+ "additionalProperties": true
595
+ },
596
+ "external:core/ext.json": {
597
+ "type": "object",
598
+ "additionalProperties": true
599
+ }
600
+ }
601
+ }