@adcp/client 0.4.2 → 2.0.2
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.
- package/dist/lib/core/ADCPClient.d.ts +34 -1
- package/dist/lib/core/ADCPClient.d.ts.map +1 -1
- package/dist/lib/core/ADCPClient.js +46 -0
- package/dist/lib/core/ADCPClient.js.map +1 -1
- package/dist/lib/core/ADCPMultiAgentClient.d.ts +78 -0
- package/dist/lib/core/ADCPMultiAgentClient.d.ts.map +1 -1
- package/dist/lib/core/ADCPMultiAgentClient.js +99 -0
- package/dist/lib/core/ADCPMultiAgentClient.js.map +1 -1
- package/dist/lib/core/CreativeAgentClient.d.ts +148 -0
- package/dist/lib/core/CreativeAgentClient.d.ts.map +1 -0
- package/dist/lib/core/CreativeAgentClient.js +162 -0
- package/dist/lib/core/CreativeAgentClient.js.map +1 -0
- package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
- package/dist/lib/core/TaskExecutor.js +2 -1
- package/dist/lib/core/TaskExecutor.js.map +1 -1
- package/dist/lib/index.d.ts +2 -1
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +5 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/types/adcp.d.ts +4 -3
- package/dist/lib/types/adcp.d.ts.map +1 -1
- package/dist/lib/types/core.generated.d.ts +700 -136
- package/dist/lib/types/core.generated.d.ts.map +1 -1
- package/dist/lib/types/core.generated.js +2 -2
- package/dist/lib/types/index.d.ts +1 -0
- package/dist/lib/types/index.d.ts.map +1 -1
- package/dist/lib/types/tools.generated.d.ts +1629 -525
- package/dist/lib/types/tools.generated.d.ts.map +1 -1
- package/dist/lib/types/tools.generated.js.map +1 -1
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js +16 -4
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/version.d.ts +5 -5
- package/dist/lib/version.js +5 -5
- package/package.json +6 -2
|
@@ -65,15 +65,23 @@ export interface Package {
|
|
|
65
65
|
*/
|
|
66
66
|
product_id?: string;
|
|
67
67
|
/**
|
|
68
|
-
*
|
|
68
|
+
* Budget allocation for this package in the currency specified by the pricing option
|
|
69
69
|
*/
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
budget?: number;
|
|
71
|
+
pacing?: Pacing;
|
|
72
|
+
/**
|
|
73
|
+
* ID of the selected pricing option from the product's pricing_options array
|
|
74
|
+
*/
|
|
75
|
+
pricing_option_id?: string;
|
|
76
|
+
/**
|
|
77
|
+
* Bid price for auction-based CPM pricing (present if using cpm-auction-option)
|
|
78
|
+
*/
|
|
79
|
+
bid_price?: number;
|
|
72
80
|
/**
|
|
73
81
|
* Impression goal for this package
|
|
74
82
|
*/
|
|
75
83
|
impressions?: number;
|
|
76
|
-
targeting_overlay?:
|
|
84
|
+
targeting_overlay?: TargetingOverlay;
|
|
77
85
|
/**
|
|
78
86
|
* Creative assets assigned to this package
|
|
79
87
|
*/
|
|
@@ -81,71 +89,29 @@ export interface Package {
|
|
|
81
89
|
/**
|
|
82
90
|
* Format IDs that creative assets will be provided for this package
|
|
83
91
|
*/
|
|
84
|
-
|
|
92
|
+
format_ids_to_provide?: FormatID[];
|
|
85
93
|
status: PackageStatus;
|
|
86
94
|
}
|
|
87
95
|
/**
|
|
88
|
-
*
|
|
96
|
+
* Optional geographic refinements for media buys. Most targeting should be expressed in the brief and handled by the publisher. These fields are primarily for geographic restrictions (RCT testing, regulatory compliance).
|
|
89
97
|
*/
|
|
90
|
-
export interface
|
|
98
|
+
export interface TargetingOverlay {
|
|
91
99
|
/**
|
|
92
|
-
*
|
|
93
|
-
*/
|
|
94
|
-
total: number;
|
|
95
|
-
/**
|
|
96
|
-
* ISO 4217 currency code
|
|
97
|
-
*/
|
|
98
|
-
currency: string;
|
|
99
|
-
pacing?: Pacing;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Audience targeting criteria
|
|
103
|
-
*/
|
|
104
|
-
export interface Targeting {
|
|
105
|
-
/**
|
|
106
|
-
* Target specific countries (ISO codes)
|
|
100
|
+
* Restrict delivery to specific countries (ISO codes). Use for regulatory compliance or RCT testing.
|
|
107
101
|
*/
|
|
108
102
|
geo_country_any_of?: string[];
|
|
109
103
|
/**
|
|
110
|
-
*
|
|
104
|
+
* Restrict delivery to specific regions/states. Use for regulatory compliance or RCT testing.
|
|
111
105
|
*/
|
|
112
106
|
geo_region_any_of?: string[];
|
|
113
107
|
/**
|
|
114
|
-
*
|
|
108
|
+
* Restrict delivery to specific metro areas (DMA codes). Use for regulatory compliance or RCT testing.
|
|
115
109
|
*/
|
|
116
110
|
geo_metro_any_of?: string[];
|
|
117
111
|
/**
|
|
118
|
-
*
|
|
112
|
+
* Restrict delivery to specific postal/ZIP codes. Use for regulatory compliance or RCT testing.
|
|
119
113
|
*/
|
|
120
114
|
geo_postal_code_any_of?: string[];
|
|
121
|
-
/**
|
|
122
|
-
* Audience segment IDs to target
|
|
123
|
-
*/
|
|
124
|
-
audience_segment_any_of?: string[];
|
|
125
|
-
/**
|
|
126
|
-
* AXE segment ID to include for targeting
|
|
127
|
-
*/
|
|
128
|
-
axe_include_segment?: string;
|
|
129
|
-
/**
|
|
130
|
-
* AXE segment ID to exclude from targeting
|
|
131
|
-
*/
|
|
132
|
-
axe_exclude_segment?: string;
|
|
133
|
-
/**
|
|
134
|
-
* Signal IDs from get_signals
|
|
135
|
-
*/
|
|
136
|
-
signals?: string[];
|
|
137
|
-
/**
|
|
138
|
-
* Target specific device types
|
|
139
|
-
*/
|
|
140
|
-
device_type_any_of?: ('desktop' | 'mobile' | 'tablet' | 'connected_tv' | 'smart_speaker')[];
|
|
141
|
-
/**
|
|
142
|
-
* Target specific operating systems
|
|
143
|
-
*/
|
|
144
|
-
os_any_of?: ('windows' | 'macos' | 'ios' | 'android' | 'linux' | 'roku' | 'tvos' | 'other')[];
|
|
145
|
-
/**
|
|
146
|
-
* Target specific browsers
|
|
147
|
-
*/
|
|
148
|
-
browser_any_of?: ('chrome' | 'firefox' | 'safari' | 'edge' | 'other')[];
|
|
149
115
|
frequency_cap?: FrequencyCap;
|
|
150
116
|
}
|
|
151
117
|
/**
|
|
@@ -171,26 +137,36 @@ export interface CreativeAssignment {
|
|
|
171
137
|
weight?: number;
|
|
172
138
|
}
|
|
173
139
|
/**
|
|
174
|
-
*
|
|
175
|
-
*/
|
|
176
|
-
export type CreativeAsset = CreativeAsset1 & CreativeAsset2;
|
|
177
|
-
/**
|
|
178
|
-
* Type of snippet content
|
|
140
|
+
* Structured format identifier with agent URL and format name
|
|
179
141
|
*/
|
|
180
|
-
export
|
|
142
|
+
export interface FormatID {
|
|
143
|
+
/**
|
|
144
|
+
* URL of the agent that defines this format (e.g., 'https://creatives.adcontextprotocol.org' for standard formats, or 'https://publisher.com/.well-known/adcp/sales' for custom formats)
|
|
145
|
+
*/
|
|
146
|
+
agent_url: string;
|
|
147
|
+
/**
|
|
148
|
+
* Format identifier within the agent's namespace (e.g., 'display_300x250', 'video_standard_30s')
|
|
149
|
+
*/
|
|
150
|
+
id: string;
|
|
151
|
+
}
|
|
181
152
|
/**
|
|
182
|
-
*
|
|
153
|
+
* VAST (Video Ad Serving Template) tag for third-party video ad serving
|
|
183
154
|
*/
|
|
184
|
-
export type
|
|
185
|
-
export type
|
|
186
|
-
[k: string]: unknown;
|
|
187
|
-
} | {
|
|
155
|
+
export type VASTAsset = VASTAsset1 & VASTAsset2;
|
|
156
|
+
export type VASTAsset2 = {
|
|
188
157
|
[k: string]: unknown;
|
|
189
158
|
};
|
|
190
|
-
|
|
159
|
+
/**
|
|
160
|
+
* DAAST (Digital Audio Ad Serving Template) tag for third-party audio ad serving
|
|
161
|
+
*/
|
|
162
|
+
export type DAASTAsset = DAASTAsset1 & DAASTAsset2;
|
|
163
|
+
export type DAASTAsset2 = {
|
|
191
164
|
[k: string]: unknown;
|
|
192
165
|
};
|
|
193
|
-
|
|
166
|
+
/**
|
|
167
|
+
* Creative asset for upload to library - supports static assets, generative formats, and third-party snippets
|
|
168
|
+
*/
|
|
169
|
+
export interface CreativeAsset {
|
|
194
170
|
/**
|
|
195
171
|
* Unique identifier for the creative
|
|
196
172
|
*/
|
|
@@ -199,61 +175,293 @@ export interface CreativeAsset1 {
|
|
|
199
175
|
* Human-readable creative name
|
|
200
176
|
*/
|
|
201
177
|
name: string;
|
|
178
|
+
format_id: FormatID;
|
|
179
|
+
/**
|
|
180
|
+
* Assets required by the format, keyed by asset_role
|
|
181
|
+
*/
|
|
182
|
+
assets: {
|
|
183
|
+
/**
|
|
184
|
+
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
185
|
+
* via the `patternProperty` "^[a-zA-Z0-9_-]+$".
|
|
186
|
+
*/
|
|
187
|
+
[k: string]: ImageAsset | VideoAsset | AudioAsset | TextAsset | HTMLAsset | CSSAsset | JavaScriptAsset | VASTAsset | DAASTAsset | PromotedOfferingsAsset | URLAsset;
|
|
188
|
+
};
|
|
189
|
+
/**
|
|
190
|
+
* Preview contexts for generative formats - defines what scenarios to generate previews for
|
|
191
|
+
*/
|
|
192
|
+
inputs?: {
|
|
193
|
+
/**
|
|
194
|
+
* Human-readable name for this preview variant
|
|
195
|
+
*/
|
|
196
|
+
name: string;
|
|
197
|
+
/**
|
|
198
|
+
* Macro values to apply for this preview
|
|
199
|
+
*/
|
|
200
|
+
macros?: {
|
|
201
|
+
[k: string]: string;
|
|
202
|
+
};
|
|
203
|
+
/**
|
|
204
|
+
* Natural language description of the context for AI-generated content
|
|
205
|
+
*/
|
|
206
|
+
context_description?: string;
|
|
207
|
+
}[];
|
|
202
208
|
/**
|
|
203
|
-
*
|
|
209
|
+
* User-defined tags for organization and searchability
|
|
204
210
|
*/
|
|
205
|
-
|
|
211
|
+
tags?: string[];
|
|
206
212
|
/**
|
|
207
|
-
*
|
|
213
|
+
* For generative creatives: set to true to approve and finalize, false to request regeneration with updated assets/message. Omit for non-generative creatives.
|
|
208
214
|
*/
|
|
209
|
-
|
|
215
|
+
approved?: boolean;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Format identifier specifying which format this creative conforms to
|
|
219
|
+
*/
|
|
220
|
+
export interface FormatID {
|
|
210
221
|
/**
|
|
211
|
-
*
|
|
222
|
+
* URL of the agent that defines this format (e.g., 'https://creatives.adcontextprotocol.org' for standard formats, or 'https://publisher.com/.well-known/adcp/sales' for custom formats)
|
|
212
223
|
*/
|
|
213
|
-
|
|
214
|
-
snippet_type?: SnippetType;
|
|
224
|
+
agent_url: string;
|
|
215
225
|
/**
|
|
216
|
-
*
|
|
226
|
+
* Format identifier within the agent's namespace (e.g., 'display_300x250', 'video_standard_30s')
|
|
217
227
|
*/
|
|
218
|
-
|
|
228
|
+
id: string;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Image asset with URL and dimensions
|
|
232
|
+
*/
|
|
233
|
+
export interface ImageAsset {
|
|
234
|
+
asset_type: 'image';
|
|
219
235
|
/**
|
|
220
|
-
*
|
|
236
|
+
* URL to the image asset
|
|
221
237
|
*/
|
|
222
|
-
|
|
238
|
+
url: string;
|
|
223
239
|
/**
|
|
224
|
-
*
|
|
240
|
+
* Image width in pixels
|
|
225
241
|
*/
|
|
226
242
|
width?: number;
|
|
227
243
|
/**
|
|
228
|
-
*
|
|
244
|
+
* Image height in pixels
|
|
229
245
|
*/
|
|
230
246
|
height?: number;
|
|
231
247
|
/**
|
|
232
|
-
*
|
|
248
|
+
* Image file format (jpg, png, gif, webp, etc.)
|
|
233
249
|
*/
|
|
234
|
-
|
|
250
|
+
format?: string;
|
|
251
|
+
/**
|
|
252
|
+
* Alternative text for accessibility
|
|
253
|
+
*/
|
|
254
|
+
alt_text?: string;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Video asset with URL and specifications
|
|
258
|
+
*/
|
|
259
|
+
export interface VideoAsset {
|
|
260
|
+
asset_type: 'video';
|
|
261
|
+
/**
|
|
262
|
+
* URL to the video asset
|
|
263
|
+
*/
|
|
264
|
+
url: string;
|
|
265
|
+
/**
|
|
266
|
+
* Video width in pixels
|
|
267
|
+
*/
|
|
268
|
+
width?: number;
|
|
269
|
+
/**
|
|
270
|
+
* Video height in pixels
|
|
271
|
+
*/
|
|
272
|
+
height?: number;
|
|
273
|
+
/**
|
|
274
|
+
* Video duration in milliseconds
|
|
275
|
+
*/
|
|
276
|
+
duration_ms?: number;
|
|
277
|
+
/**
|
|
278
|
+
* Video file format (mp4, webm, mov, etc.)
|
|
279
|
+
*/
|
|
280
|
+
format?: string;
|
|
281
|
+
/**
|
|
282
|
+
* Video bitrate in kilobits per second
|
|
283
|
+
*/
|
|
284
|
+
bitrate_kbps?: number;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Audio asset with URL and specifications
|
|
288
|
+
*/
|
|
289
|
+
export interface AudioAsset {
|
|
290
|
+
asset_type: 'audio';
|
|
291
|
+
/**
|
|
292
|
+
* URL to the audio asset
|
|
293
|
+
*/
|
|
294
|
+
url: string;
|
|
295
|
+
/**
|
|
296
|
+
* Audio duration in milliseconds
|
|
297
|
+
*/
|
|
298
|
+
duration_ms?: number;
|
|
299
|
+
/**
|
|
300
|
+
* Audio file format (mp3, wav, aac, etc.)
|
|
301
|
+
*/
|
|
302
|
+
format?: string;
|
|
303
|
+
/**
|
|
304
|
+
* Audio bitrate in kilobits per second
|
|
305
|
+
*/
|
|
306
|
+
bitrate_kbps?: number;
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Text content asset
|
|
310
|
+
*/
|
|
311
|
+
export interface TextAsset {
|
|
312
|
+
asset_type: 'text';
|
|
313
|
+
/**
|
|
314
|
+
* Text content
|
|
315
|
+
*/
|
|
316
|
+
content: string;
|
|
235
317
|
/**
|
|
236
|
-
*
|
|
318
|
+
* Maximum character length constraint
|
|
237
319
|
*/
|
|
238
|
-
|
|
320
|
+
max_length?: number;
|
|
321
|
+
/**
|
|
322
|
+
* Language code (e.g., 'en', 'es', 'fr')
|
|
323
|
+
*/
|
|
324
|
+
language?: string;
|
|
239
325
|
}
|
|
240
|
-
|
|
326
|
+
/**
|
|
327
|
+
* HTML content asset
|
|
328
|
+
*/
|
|
329
|
+
export interface HTMLAsset {
|
|
330
|
+
asset_type: 'html';
|
|
241
331
|
/**
|
|
242
|
-
*
|
|
332
|
+
* HTML content
|
|
243
333
|
*/
|
|
244
|
-
|
|
334
|
+
content: string;
|
|
245
335
|
/**
|
|
246
|
-
*
|
|
336
|
+
* HTML version (e.g., 'HTML5')
|
|
247
337
|
*/
|
|
248
|
-
|
|
338
|
+
version?: string;
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* CSS stylesheet asset
|
|
342
|
+
*/
|
|
343
|
+
export interface CSSAsset {
|
|
344
|
+
asset_type: 'css';
|
|
249
345
|
/**
|
|
250
|
-
*
|
|
346
|
+
* CSS content
|
|
251
347
|
*/
|
|
252
|
-
|
|
348
|
+
content: string;
|
|
253
349
|
/**
|
|
254
|
-
*
|
|
350
|
+
* CSS media query context (e.g., 'screen', 'print')
|
|
255
351
|
*/
|
|
256
|
-
|
|
352
|
+
media?: string;
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* JavaScript code asset
|
|
356
|
+
*/
|
|
357
|
+
export interface JavaScriptAsset {
|
|
358
|
+
asset_type: 'javascript';
|
|
359
|
+
/**
|
|
360
|
+
* JavaScript content
|
|
361
|
+
*/
|
|
362
|
+
content: string;
|
|
363
|
+
/**
|
|
364
|
+
* JavaScript module type
|
|
365
|
+
*/
|
|
366
|
+
module_type?: 'esm' | 'commonjs' | 'script';
|
|
367
|
+
}
|
|
368
|
+
export interface VASTAsset1 {
|
|
369
|
+
asset_type?: 'vast';
|
|
370
|
+
/**
|
|
371
|
+
* URL endpoint that returns VAST XML
|
|
372
|
+
*/
|
|
373
|
+
url?: string;
|
|
374
|
+
/**
|
|
375
|
+
* Inline VAST XML content
|
|
376
|
+
*/
|
|
377
|
+
content?: string;
|
|
378
|
+
/**
|
|
379
|
+
* VAST specification version
|
|
380
|
+
*/
|
|
381
|
+
vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2';
|
|
382
|
+
/**
|
|
383
|
+
* Whether VPAID (Video Player-Ad Interface Definition) is supported
|
|
384
|
+
*/
|
|
385
|
+
vpaid_enabled?: boolean;
|
|
386
|
+
/**
|
|
387
|
+
* Maximum allowed wrapper/redirect depth
|
|
388
|
+
*/
|
|
389
|
+
max_wrapper_depth?: number;
|
|
390
|
+
/**
|
|
391
|
+
* Expected video duration in milliseconds (if known)
|
|
392
|
+
*/
|
|
393
|
+
duration_ms?: number;
|
|
394
|
+
/**
|
|
395
|
+
* Tracking events supported by this VAST tag
|
|
396
|
+
*/
|
|
397
|
+
tracking_events?: ('start' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'complete' | 'impression' | 'click' | 'pause' | 'resume' | 'skip' | 'mute' | 'unmute' | 'fullscreen' | 'exitFullscreen' | 'playerExpand' | 'playerCollapse')[];
|
|
398
|
+
}
|
|
399
|
+
export interface DAASTAsset1 {
|
|
400
|
+
asset_type?: 'daast';
|
|
401
|
+
/**
|
|
402
|
+
* URL endpoint that returns DAAST XML
|
|
403
|
+
*/
|
|
404
|
+
url?: string;
|
|
405
|
+
/**
|
|
406
|
+
* Inline DAAST XML content
|
|
407
|
+
*/
|
|
408
|
+
content?: string;
|
|
409
|
+
/**
|
|
410
|
+
* DAAST specification version
|
|
411
|
+
*/
|
|
412
|
+
daast_version?: '1.0' | '1.1';
|
|
413
|
+
/**
|
|
414
|
+
* Expected audio duration in milliseconds (if known)
|
|
415
|
+
*/
|
|
416
|
+
duration_ms?: number;
|
|
417
|
+
/**
|
|
418
|
+
* Tracking events supported by this DAAST tag
|
|
419
|
+
*/
|
|
420
|
+
tracking_events?: ('start' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'complete' | 'impression' | 'pause' | 'resume' | 'skip' | 'mute' | 'unmute')[];
|
|
421
|
+
/**
|
|
422
|
+
* Whether companion display ads are included
|
|
423
|
+
*/
|
|
424
|
+
companion_ads?: boolean;
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Reference to promoted offerings specification
|
|
428
|
+
*/
|
|
429
|
+
export interface PromotedOfferingsAsset {
|
|
430
|
+
asset_type: 'promoted_offerings';
|
|
431
|
+
/**
|
|
432
|
+
* URL of the advertiser's brand or offering (e.g., https://retailer.com)
|
|
433
|
+
*/
|
|
434
|
+
url?: string;
|
|
435
|
+
/**
|
|
436
|
+
* Brand colors
|
|
437
|
+
*/
|
|
438
|
+
colors?: {
|
|
439
|
+
primary?: string;
|
|
440
|
+
secondary?: string;
|
|
441
|
+
accent?: string;
|
|
442
|
+
};
|
|
443
|
+
/**
|
|
444
|
+
* Brand fonts
|
|
445
|
+
*/
|
|
446
|
+
fonts?: string[];
|
|
447
|
+
/**
|
|
448
|
+
* Brand tone/voice
|
|
449
|
+
*/
|
|
450
|
+
tone?: string;
|
|
451
|
+
}
|
|
452
|
+
/**
|
|
453
|
+
* URL reference asset
|
|
454
|
+
*/
|
|
455
|
+
export interface URLAsset {
|
|
456
|
+
asset_type: 'url';
|
|
457
|
+
/**
|
|
458
|
+
* URL reference
|
|
459
|
+
*/
|
|
460
|
+
url: string;
|
|
461
|
+
/**
|
|
462
|
+
* Description of what this URL points to
|
|
463
|
+
*/
|
|
464
|
+
description?: string;
|
|
257
465
|
}
|
|
258
466
|
/**
|
|
259
467
|
* Represents available advertising inventory
|
|
@@ -267,6 +475,10 @@ export type PropertyIdentifierTypes = 'domain' | 'subdomain' | 'network_id' | 'i
|
|
|
267
475
|
* Type of inventory delivery
|
|
268
476
|
*/
|
|
269
477
|
export type DeliveryType = 'guaranteed' | 'non_guaranteed';
|
|
478
|
+
/**
|
|
479
|
+
* A pricing model option offered by a publisher for a product. Each pricing model has its own schema with model-specific requirements.
|
|
480
|
+
*/
|
|
481
|
+
export type PricingOption = CPMFixedRatePricingOption | CPMAuctionPricingOption | VCPMFixedRatePricingOption | VCPMAuctionPricingOption | CPCPricingOption | CPCVPricingOption | CPVPricingOption | CPPPricingOption | FlatRatePricingOption;
|
|
270
482
|
export type Product2 = {
|
|
271
483
|
[k: string]: unknown;
|
|
272
484
|
};
|
|
@@ -296,23 +508,35 @@ export interface Product1 {
|
|
|
296
508
|
*/
|
|
297
509
|
property_tags?: [string, ...string[]];
|
|
298
510
|
/**
|
|
299
|
-
* Array of supported creative format IDs -
|
|
511
|
+
* Array of supported creative format IDs - structured format_id objects with agent_url and id
|
|
300
512
|
*/
|
|
301
|
-
format_ids:
|
|
513
|
+
format_ids: FormatID[];
|
|
302
514
|
delivery_type: DeliveryType;
|
|
303
515
|
/**
|
|
304
|
-
*
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
/**
|
|
308
|
-
* Cost per thousand impressions in USD
|
|
516
|
+
* Available pricing models for this product
|
|
517
|
+
*
|
|
518
|
+
* @minItems 1
|
|
309
519
|
*/
|
|
310
|
-
|
|
520
|
+
pricing_options: [PricingOption, ...PricingOption[]];
|
|
311
521
|
/**
|
|
312
|
-
*
|
|
522
|
+
* Estimated exposures/impressions for guaranteed products
|
|
313
523
|
*/
|
|
314
|
-
|
|
524
|
+
estimated_exposures?: number;
|
|
315
525
|
measurement?: Measurement;
|
|
526
|
+
/**
|
|
527
|
+
* Measurement provider and methodology for delivery metrics. The buyer accepts the declared provider as the source of truth for the buy. REQUIRED for all products.
|
|
528
|
+
*/
|
|
529
|
+
delivery_measurement: {
|
|
530
|
+
/**
|
|
531
|
+
* Measurement provider(s) used for this product (e.g., 'Google Ad Manager with IAS viewability', 'Nielsen DAR', 'Geopath for DOOH impressions')
|
|
532
|
+
*/
|
|
533
|
+
provider: string;
|
|
534
|
+
/**
|
|
535
|
+
* Additional details about measurement methodology in plain language (e.g., 'MRC-accredited viewability. 50% in-view for 1s display / 2s video', 'Panel-based demographic measurement updated monthly')
|
|
536
|
+
*/
|
|
537
|
+
notes?: string;
|
|
538
|
+
};
|
|
539
|
+
reporting_capabilities?: ReportingCapabilities;
|
|
316
540
|
creative_policy?: CreativePolicy;
|
|
317
541
|
/**
|
|
318
542
|
* Whether this is a custom product
|
|
@@ -369,6 +593,347 @@ export interface Property {
|
|
|
369
593
|
*/
|
|
370
594
|
publisher_domain: string;
|
|
371
595
|
}
|
|
596
|
+
/**
|
|
597
|
+
* Structured format identifier with agent URL and format name
|
|
598
|
+
*/
|
|
599
|
+
export interface FormatID {
|
|
600
|
+
/**
|
|
601
|
+
* URL of the agent that defines this format (e.g., 'https://creatives.adcontextprotocol.org' for standard formats, or 'https://publisher.com/.well-known/adcp/sales' for custom formats)
|
|
602
|
+
*/
|
|
603
|
+
agent_url: string;
|
|
604
|
+
/**
|
|
605
|
+
* Format identifier within the agent's namespace (e.g., 'display_300x250', 'video_standard_30s')
|
|
606
|
+
*/
|
|
607
|
+
id: string;
|
|
608
|
+
}
|
|
609
|
+
/**
|
|
610
|
+
* Cost Per Mille (cost per 1,000 impressions) with guaranteed fixed rate - common for direct/guaranteed deals
|
|
611
|
+
*/
|
|
612
|
+
export interface CPMFixedRatePricingOption {
|
|
613
|
+
/**
|
|
614
|
+
* Unique identifier for this pricing option within the product (e.g., 'cpm_usd_guaranteed')
|
|
615
|
+
*/
|
|
616
|
+
pricing_option_id: string;
|
|
617
|
+
/**
|
|
618
|
+
* Cost per 1,000 impressions
|
|
619
|
+
*/
|
|
620
|
+
pricing_model: 'cpm';
|
|
621
|
+
/**
|
|
622
|
+
* Fixed CPM rate (cost per 1,000 impressions)
|
|
623
|
+
*/
|
|
624
|
+
rate: number;
|
|
625
|
+
/**
|
|
626
|
+
* ISO 4217 currency code
|
|
627
|
+
*/
|
|
628
|
+
currency: string;
|
|
629
|
+
/**
|
|
630
|
+
* Minimum spend requirement per package using this pricing option, in the specified currency
|
|
631
|
+
*/
|
|
632
|
+
min_spend_per_package?: number;
|
|
633
|
+
}
|
|
634
|
+
/**
|
|
635
|
+
* Cost Per Mille (cost per 1,000 impressions) with auction-based pricing - common for programmatic/non-guaranteed inventory
|
|
636
|
+
*/
|
|
637
|
+
export interface CPMAuctionPricingOption {
|
|
638
|
+
/**
|
|
639
|
+
* Unique identifier for this pricing option within the product (e.g., 'cpm_usd_auction')
|
|
640
|
+
*/
|
|
641
|
+
pricing_option_id: string;
|
|
642
|
+
/**
|
|
643
|
+
* Cost per 1,000 impressions
|
|
644
|
+
*/
|
|
645
|
+
pricing_model: 'cpm';
|
|
646
|
+
/**
|
|
647
|
+
* ISO 4217 currency code
|
|
648
|
+
*/
|
|
649
|
+
currency: string;
|
|
650
|
+
/**
|
|
651
|
+
* Pricing guidance for auction-based CPM bidding
|
|
652
|
+
*/
|
|
653
|
+
price_guidance: {
|
|
654
|
+
/**
|
|
655
|
+
* Minimum bid price - publisher will reject bids under this value
|
|
656
|
+
*/
|
|
657
|
+
floor: number;
|
|
658
|
+
/**
|
|
659
|
+
* 25th percentile winning price
|
|
660
|
+
*/
|
|
661
|
+
p25?: number;
|
|
662
|
+
/**
|
|
663
|
+
* Median winning price
|
|
664
|
+
*/
|
|
665
|
+
p50?: number;
|
|
666
|
+
/**
|
|
667
|
+
* 75th percentile winning price
|
|
668
|
+
*/
|
|
669
|
+
p75?: number;
|
|
670
|
+
/**
|
|
671
|
+
* 90th percentile winning price
|
|
672
|
+
*/
|
|
673
|
+
p90?: number;
|
|
674
|
+
};
|
|
675
|
+
/**
|
|
676
|
+
* Minimum spend requirement per package using this pricing option, in the specified currency
|
|
677
|
+
*/
|
|
678
|
+
min_spend_per_package?: number;
|
|
679
|
+
}
|
|
680
|
+
/**
|
|
681
|
+
* Viewable Cost Per Mille (cost per 1,000 viewable impressions) with guaranteed fixed rate - impressions meeting MRC viewability standard (50% pixels in-view for 1 second for display, 2 seconds for video)
|
|
682
|
+
*/
|
|
683
|
+
export interface VCPMFixedRatePricingOption {
|
|
684
|
+
/**
|
|
685
|
+
* Unique identifier for this pricing option within the product (e.g., 'vcpm_usd_guaranteed')
|
|
686
|
+
*/
|
|
687
|
+
pricing_option_id: string;
|
|
688
|
+
/**
|
|
689
|
+
* Cost per 1,000 viewable impressions (MRC standard)
|
|
690
|
+
*/
|
|
691
|
+
pricing_model: 'vcpm';
|
|
692
|
+
/**
|
|
693
|
+
* Fixed vCPM rate (cost per 1,000 viewable impressions)
|
|
694
|
+
*/
|
|
695
|
+
rate: number;
|
|
696
|
+
/**
|
|
697
|
+
* ISO 4217 currency code
|
|
698
|
+
*/
|
|
699
|
+
currency: string;
|
|
700
|
+
/**
|
|
701
|
+
* Minimum spend requirement per package using this pricing option, in the specified currency
|
|
702
|
+
*/
|
|
703
|
+
min_spend_per_package?: number;
|
|
704
|
+
}
|
|
705
|
+
/**
|
|
706
|
+
* Viewable Cost Per Mille (cost per 1,000 viewable impressions) with auction-based pricing - impressions meeting MRC viewability standard (50% pixels in-view for 1 second for display, 2 seconds for video)
|
|
707
|
+
*/
|
|
708
|
+
export interface VCPMAuctionPricingOption {
|
|
709
|
+
/**
|
|
710
|
+
* Unique identifier for this pricing option within the product (e.g., 'vcpm_usd_auction')
|
|
711
|
+
*/
|
|
712
|
+
pricing_option_id: string;
|
|
713
|
+
/**
|
|
714
|
+
* Cost per 1,000 viewable impressions (MRC standard)
|
|
715
|
+
*/
|
|
716
|
+
pricing_model: 'vcpm';
|
|
717
|
+
/**
|
|
718
|
+
* ISO 4217 currency code
|
|
719
|
+
*/
|
|
720
|
+
currency: string;
|
|
721
|
+
/**
|
|
722
|
+
* Statistical guidance for auction pricing
|
|
723
|
+
*/
|
|
724
|
+
price_guidance: {
|
|
725
|
+
/**
|
|
726
|
+
* Minimum acceptable bid price
|
|
727
|
+
*/
|
|
728
|
+
floor: number;
|
|
729
|
+
/**
|
|
730
|
+
* 25th percentile of recent winning bids
|
|
731
|
+
*/
|
|
732
|
+
p25?: number;
|
|
733
|
+
/**
|
|
734
|
+
* Median of recent winning bids
|
|
735
|
+
*/
|
|
736
|
+
p50?: number;
|
|
737
|
+
/**
|
|
738
|
+
* 75th percentile of recent winning bids
|
|
739
|
+
*/
|
|
740
|
+
p75?: number;
|
|
741
|
+
/**
|
|
742
|
+
* 90th percentile of recent winning bids
|
|
743
|
+
*/
|
|
744
|
+
p90?: number;
|
|
745
|
+
};
|
|
746
|
+
/**
|
|
747
|
+
* Minimum spend requirement per package using this pricing option, in the specified currency
|
|
748
|
+
*/
|
|
749
|
+
min_spend_per_package?: number;
|
|
750
|
+
}
|
|
751
|
+
/**
|
|
752
|
+
* Cost Per Click fixed-rate pricing for performance-driven advertising campaigns
|
|
753
|
+
*/
|
|
754
|
+
export interface CPCPricingOption {
|
|
755
|
+
/**
|
|
756
|
+
* Unique identifier for this pricing option within the product (e.g., 'cpc_usd_fixed')
|
|
757
|
+
*/
|
|
758
|
+
pricing_option_id: string;
|
|
759
|
+
/**
|
|
760
|
+
* Cost per click
|
|
761
|
+
*/
|
|
762
|
+
pricing_model: 'cpc';
|
|
763
|
+
/**
|
|
764
|
+
* Fixed CPC rate (cost per click)
|
|
765
|
+
*/
|
|
766
|
+
rate: number;
|
|
767
|
+
/**
|
|
768
|
+
* ISO 4217 currency code
|
|
769
|
+
*/
|
|
770
|
+
currency: string;
|
|
771
|
+
/**
|
|
772
|
+
* Minimum spend requirement per package using this pricing option, in the specified currency
|
|
773
|
+
*/
|
|
774
|
+
min_spend_per_package?: number;
|
|
775
|
+
}
|
|
776
|
+
/**
|
|
777
|
+
* Cost Per Completed View (100% video/audio completion) fixed-rate pricing
|
|
778
|
+
*/
|
|
779
|
+
export interface CPCVPricingOption {
|
|
780
|
+
/**
|
|
781
|
+
* Unique identifier for this pricing option within the product (e.g., 'cpcv_usd_guaranteed')
|
|
782
|
+
*/
|
|
783
|
+
pricing_option_id: string;
|
|
784
|
+
/**
|
|
785
|
+
* Cost per completed view (100% completion)
|
|
786
|
+
*/
|
|
787
|
+
pricing_model: 'cpcv';
|
|
788
|
+
/**
|
|
789
|
+
* Fixed CPCV rate (cost per 100% completion)
|
|
790
|
+
*/
|
|
791
|
+
rate: number;
|
|
792
|
+
/**
|
|
793
|
+
* ISO 4217 currency code
|
|
794
|
+
*/
|
|
795
|
+
currency: string;
|
|
796
|
+
/**
|
|
797
|
+
* Minimum spend requirement per package using this pricing option, in the specified currency
|
|
798
|
+
*/
|
|
799
|
+
min_spend_per_package?: number;
|
|
800
|
+
}
|
|
801
|
+
/**
|
|
802
|
+
* Cost Per View (at publisher-defined threshold) fixed-rate pricing for video/audio
|
|
803
|
+
*/
|
|
804
|
+
export interface CPVPricingOption {
|
|
805
|
+
/**
|
|
806
|
+
* Unique identifier for this pricing option within the product (e.g., 'cpv_usd_50pct')
|
|
807
|
+
*/
|
|
808
|
+
pricing_option_id: string;
|
|
809
|
+
/**
|
|
810
|
+
* Cost per view at threshold
|
|
811
|
+
*/
|
|
812
|
+
pricing_model: 'cpv';
|
|
813
|
+
/**
|
|
814
|
+
* Fixed CPV rate (cost per view)
|
|
815
|
+
*/
|
|
816
|
+
rate: number;
|
|
817
|
+
/**
|
|
818
|
+
* ISO 4217 currency code
|
|
819
|
+
*/
|
|
820
|
+
currency: string;
|
|
821
|
+
/**
|
|
822
|
+
* CPV-specific parameters defining the view threshold
|
|
823
|
+
*/
|
|
824
|
+
parameters: {
|
|
825
|
+
view_threshold: number | {
|
|
826
|
+
/**
|
|
827
|
+
* Seconds of viewing required (e.g., 30 for YouTube-style '30 seconds = view')
|
|
828
|
+
*/
|
|
829
|
+
duration_seconds: number;
|
|
830
|
+
};
|
|
831
|
+
};
|
|
832
|
+
/**
|
|
833
|
+
* Minimum spend requirement per package using this pricing option, in the specified currency
|
|
834
|
+
*/
|
|
835
|
+
min_spend_per_package?: number;
|
|
836
|
+
}
|
|
837
|
+
/**
|
|
838
|
+
* Cost Per Point (Gross Rating Point) fixed-rate pricing for TV and audio campaigns requiring demographic measurement
|
|
839
|
+
*/
|
|
840
|
+
export interface CPPPricingOption {
|
|
841
|
+
/**
|
|
842
|
+
* Unique identifier for this pricing option within the product (e.g., 'cpp_usd_p18-49')
|
|
843
|
+
*/
|
|
844
|
+
pricing_option_id: string;
|
|
845
|
+
/**
|
|
846
|
+
* Cost per Gross Rating Point
|
|
847
|
+
*/
|
|
848
|
+
pricing_model: 'cpp';
|
|
849
|
+
/**
|
|
850
|
+
* Fixed CPP rate (cost per rating point)
|
|
851
|
+
*/
|
|
852
|
+
rate: number;
|
|
853
|
+
/**
|
|
854
|
+
* ISO 4217 currency code
|
|
855
|
+
*/
|
|
856
|
+
currency: string;
|
|
857
|
+
/**
|
|
858
|
+
* CPP-specific parameters for demographic targeting and GRP requirements
|
|
859
|
+
*/
|
|
860
|
+
parameters: {
|
|
861
|
+
/**
|
|
862
|
+
* Target demographic in Nielsen format: P/M/W/A/C + age range. Examples: P18-49 (Persons 18-49), M25-54 (Men 25-54), W35+ (Women 35+), A18-34 (Adults 18-34), C2-11 (Children 2-11)
|
|
863
|
+
*/
|
|
864
|
+
demographic: string;
|
|
865
|
+
/**
|
|
866
|
+
* Minimum GRPs/TRPs required for this pricing option
|
|
867
|
+
*/
|
|
868
|
+
min_points?: number;
|
|
869
|
+
};
|
|
870
|
+
/**
|
|
871
|
+
* Minimum spend requirement per package using this pricing option, in the specified currency
|
|
872
|
+
*/
|
|
873
|
+
min_spend_per_package?: number;
|
|
874
|
+
}
|
|
875
|
+
/**
|
|
876
|
+
* Flat rate pricing for DOOH, sponsorships, and time-based campaigns - fixed cost regardless of delivery volume
|
|
877
|
+
*/
|
|
878
|
+
export interface FlatRatePricingOption {
|
|
879
|
+
/**
|
|
880
|
+
* Unique identifier for this pricing option within the product (e.g., 'flat_rate_usd_24h_takeover')
|
|
881
|
+
*/
|
|
882
|
+
pricing_option_id: string;
|
|
883
|
+
/**
|
|
884
|
+
* Fixed cost regardless of delivery volume
|
|
885
|
+
*/
|
|
886
|
+
pricing_model: 'flat_rate';
|
|
887
|
+
/**
|
|
888
|
+
* Flat rate cost
|
|
889
|
+
*/
|
|
890
|
+
rate: number;
|
|
891
|
+
/**
|
|
892
|
+
* ISO 4217 currency code
|
|
893
|
+
*/
|
|
894
|
+
currency: string;
|
|
895
|
+
/**
|
|
896
|
+
* Whether this is a fixed rate (true) or auction-based (false)
|
|
897
|
+
*/
|
|
898
|
+
is_fixed: true;
|
|
899
|
+
/**
|
|
900
|
+
* Flat rate parameters for DOOH and time-based campaigns
|
|
901
|
+
*/
|
|
902
|
+
parameters?: {
|
|
903
|
+
/**
|
|
904
|
+
* Duration in hours for time-based flat rate pricing (DOOH)
|
|
905
|
+
*/
|
|
906
|
+
duration_hours?: number;
|
|
907
|
+
/**
|
|
908
|
+
* Guaranteed share of voice as percentage (DOOH, 0-100)
|
|
909
|
+
*/
|
|
910
|
+
sov_percentage?: number;
|
|
911
|
+
/**
|
|
912
|
+
* Duration of ad loop rotation in seconds (DOOH)
|
|
913
|
+
*/
|
|
914
|
+
loop_duration_seconds?: number;
|
|
915
|
+
/**
|
|
916
|
+
* Minimum number of times ad plays per hour (DOOH frequency guarantee)
|
|
917
|
+
*/
|
|
918
|
+
min_plays_per_hour?: number;
|
|
919
|
+
/**
|
|
920
|
+
* Named venue package identifier for DOOH (e.g., 'times_square_network', 'airport_terminals')
|
|
921
|
+
*/
|
|
922
|
+
venue_package?: string;
|
|
923
|
+
/**
|
|
924
|
+
* Estimated impressions for this flat rate option (informational, commonly used with SOV or time-based DOOH)
|
|
925
|
+
*/
|
|
926
|
+
estimated_impressions?: number;
|
|
927
|
+
/**
|
|
928
|
+
* Specific daypart for time-based pricing (e.g., 'morning_commute', 'evening_prime', 'overnight')
|
|
929
|
+
*/
|
|
930
|
+
daypart?: string;
|
|
931
|
+
};
|
|
932
|
+
/**
|
|
933
|
+
* Minimum spend requirement per package using this pricing option, in the specified currency
|
|
934
|
+
*/
|
|
935
|
+
min_spend_per_package?: number;
|
|
936
|
+
}
|
|
372
937
|
/**
|
|
373
938
|
* Measurement capabilities included with a product
|
|
374
939
|
*/
|
|
@@ -390,6 +955,33 @@ export interface Measurement {
|
|
|
390
955
|
*/
|
|
391
956
|
reporting: string;
|
|
392
957
|
}
|
|
958
|
+
/**
|
|
959
|
+
* Reporting capabilities available for a product
|
|
960
|
+
*/
|
|
961
|
+
export interface ReportingCapabilities {
|
|
962
|
+
/**
|
|
963
|
+
* Supported reporting frequency options
|
|
964
|
+
*
|
|
965
|
+
* @minItems 1
|
|
966
|
+
*/
|
|
967
|
+
available_reporting_frequencies: ['hourly' | 'daily' | 'monthly', ...('hourly' | 'daily' | 'monthly')[]];
|
|
968
|
+
/**
|
|
969
|
+
* Expected delay in minutes before reporting data becomes available (e.g., 240 for 4-hour delay)
|
|
970
|
+
*/
|
|
971
|
+
expected_delay_minutes: number;
|
|
972
|
+
/**
|
|
973
|
+
* Timezone for reporting periods. Use 'UTC' or IANA timezone (e.g., 'America/New_York'). Critical for daily/monthly frequency alignment.
|
|
974
|
+
*/
|
|
975
|
+
timezone: string;
|
|
976
|
+
/**
|
|
977
|
+
* Whether this product supports webhook-based reporting notifications
|
|
978
|
+
*/
|
|
979
|
+
supports_webhooks: boolean;
|
|
980
|
+
/**
|
|
981
|
+
* Metrics available in reporting. Impressions and spend are always implicitly included.
|
|
982
|
+
*/
|
|
983
|
+
available_metrics: ('impressions' | 'spend' | 'clicks' | 'ctr' | 'video_completions' | 'completion_rate' | 'conversions' | 'viewability' | 'engagement_rate')[];
|
|
984
|
+
}
|
|
393
985
|
/**
|
|
394
986
|
* Creative requirements and restrictions for a product
|
|
395
987
|
*/
|
|
@@ -408,53 +1000,25 @@ export interface CreativePolicy {
|
|
|
408
1000
|
templates_available: boolean;
|
|
409
1001
|
}
|
|
410
1002
|
/**
|
|
411
|
-
*
|
|
1003
|
+
* Optional geographic refinements for media buys. Most targeting should be expressed in the brief and handled by the publisher. These fields are primarily for geographic restrictions (RCT testing, regulatory compliance).
|
|
412
1004
|
*/
|
|
413
|
-
export interface
|
|
1005
|
+
export interface TargetingOverlay {
|
|
414
1006
|
/**
|
|
415
|
-
*
|
|
1007
|
+
* Restrict delivery to specific countries (ISO codes). Use for regulatory compliance or RCT testing.
|
|
416
1008
|
*/
|
|
417
1009
|
geo_country_any_of?: string[];
|
|
418
1010
|
/**
|
|
419
|
-
*
|
|
1011
|
+
* Restrict delivery to specific regions/states. Use for regulatory compliance or RCT testing.
|
|
420
1012
|
*/
|
|
421
1013
|
geo_region_any_of?: string[];
|
|
422
1014
|
/**
|
|
423
|
-
*
|
|
1015
|
+
* Restrict delivery to specific metro areas (DMA codes). Use for regulatory compliance or RCT testing.
|
|
424
1016
|
*/
|
|
425
1017
|
geo_metro_any_of?: string[];
|
|
426
1018
|
/**
|
|
427
|
-
*
|
|
1019
|
+
* Restrict delivery to specific postal/ZIP codes. Use for regulatory compliance or RCT testing.
|
|
428
1020
|
*/
|
|
429
1021
|
geo_postal_code_any_of?: string[];
|
|
430
|
-
/**
|
|
431
|
-
* Audience segment IDs to target
|
|
432
|
-
*/
|
|
433
|
-
audience_segment_any_of?: string[];
|
|
434
|
-
/**
|
|
435
|
-
* AXE segment ID to include for targeting
|
|
436
|
-
*/
|
|
437
|
-
axe_include_segment?: string;
|
|
438
|
-
/**
|
|
439
|
-
* AXE segment ID to exclude from targeting
|
|
440
|
-
*/
|
|
441
|
-
axe_exclude_segment?: string;
|
|
442
|
-
/**
|
|
443
|
-
* Signal IDs from get_signals
|
|
444
|
-
*/
|
|
445
|
-
signals?: string[];
|
|
446
|
-
/**
|
|
447
|
-
* Target specific device types
|
|
448
|
-
*/
|
|
449
|
-
device_type_any_of?: ('desktop' | 'mobile' | 'tablet' | 'connected_tv' | 'smart_speaker')[];
|
|
450
|
-
/**
|
|
451
|
-
* Target specific operating systems
|
|
452
|
-
*/
|
|
453
|
-
os_any_of?: ('windows' | 'macos' | 'ios' | 'android' | 'linux' | 'roku' | 'tvos' | 'other')[];
|
|
454
|
-
/**
|
|
455
|
-
* Target specific browsers
|
|
456
|
-
*/
|
|
457
|
-
browser_any_of?: ('chrome' | 'firefox' | 'safari' | 'edge' | 'other')[];
|
|
458
1022
|
frequency_cap?: FrequencyCap;
|
|
459
1023
|
}
|
|
460
1024
|
/**
|