@adcp/client 3.11.1 → 3.12.0
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/bin/adcp.js +32 -1
- package/dist/lib/adapters/property-list-adapter.d.ts.map +1 -1
- package/dist/lib/adapters/property-list-adapter.js +10 -5
- package/dist/lib/adapters/property-list-adapter.js.map +1 -1
- package/dist/lib/agents/index.generated.d.ts +33 -1
- package/dist/lib/agents/index.generated.d.ts.map +1 -1
- package/dist/lib/agents/index.generated.js +48 -0
- package/dist/lib/agents/index.generated.js.map +1 -1
- package/dist/lib/auth/index.d.ts +4 -0
- package/dist/lib/auth/index.d.ts.map +1 -1
- package/dist/lib/auth/index.js +5 -0
- package/dist/lib/auth/index.js.map +1 -1
- package/dist/lib/index.d.ts +4 -2
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +14 -3
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/testing/scenarios/creative.js +11 -1
- package/dist/lib/testing/scenarios/creative.js.map +1 -1
- package/dist/lib/testing/types.d.ts +12 -0
- package/dist/lib/testing/types.d.ts.map +1 -1
- package/dist/lib/types/adcp.d.ts +1 -0
- package/dist/lib/types/adcp.d.ts.map +1 -1
- package/dist/lib/types/core.generated.d.ts +605 -45
- package/dist/lib/types/core.generated.d.ts.map +1 -1
- package/dist/lib/types/core.generated.js +1 -1
- package/dist/lib/types/schemas.generated.d.ts +4455 -1920
- package/dist/lib/types/schemas.generated.d.ts.map +1 -1
- package/dist/lib/types/schemas.generated.js +725 -156
- package/dist/lib/types/schemas.generated.js.map +1 -1
- package/dist/lib/types/tools.generated.d.ts +2384 -454
- package/dist/lib/types/tools.generated.d.ts.map +1 -1
- package/dist/lib/types/tools.generated.js +0 -3
- package/dist/lib/types/tools.generated.js.map +1 -1
- package/dist/lib/utils/capabilities.d.ts +4 -0
- package/dist/lib/utils/capabilities.d.ts.map +1 -1
- package/dist/lib/utils/capabilities.js +6 -1
- package/dist/lib/utils/capabilities.js.map +1 -1
- package/dist/lib/utils/index.d.ts +2 -1
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js +6 -1
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/utils/pagination.d.ts +31 -0
- package/dist/lib/utils/pagination.d.ts.map +1 -0
- package/dist/lib/utils/pagination.js +51 -0
- package/dist/lib/utils/pagination.js.map +1 -0
- package/dist/lib/utils/pricing-adapter.d.ts +4 -0
- package/dist/lib/utils/pricing-adapter.d.ts.map +1 -1
- package/dist/lib/utils/pricing-adapter.js +7 -0
- package/dist/lib/utils/pricing-adapter.js.map +1 -1
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.d.ts.map +1 -1
- package/dist/lib/version.js +3 -3
- package/dist/lib/version.js.map +1 -1
- package/package.json +1 -1
|
@@ -11,7 +11,7 @@ export type AssetContentType = 'image' | 'video' | 'audio' | 'text' | 'markdown'
|
|
|
11
11
|
*/
|
|
12
12
|
export type DeliveryType = 'guaranteed' | 'non_guaranteed';
|
|
13
13
|
/**
|
|
14
|
-
* High-level categories for creative formats
|
|
14
|
+
* DEPRECATED: High-level categories for creative formats. These categories are lossy abstractions that don't scale well to emerging ad formats. Use the assets array in Format objects to understand creative requirements instead - it provides precise information about what asset types are needed (video, image, text, etc.).
|
|
15
15
|
*/
|
|
16
16
|
export type FormatCategory = 'audio' | 'video' | 'display' | 'native' | 'dooh' | 'rich_media' | 'universal';
|
|
17
17
|
/**
|
|
@@ -26,6 +26,145 @@ export type MediaChannel = 'display' | 'olv' | 'social' | 'search' | 'ctv' | 'li
|
|
|
26
26
|
* Geographic targeting level (country, region, metro, postal_area)
|
|
27
27
|
*/
|
|
28
28
|
export type GeographicTargetingLevel = 'country' | 'region' | 'metro' | 'postal_area';
|
|
29
|
+
/**
|
|
30
|
+
* Targeting constraint for a specific signal. Uses value_type as discriminator to determine the targeting expression format.
|
|
31
|
+
*/
|
|
32
|
+
export type SignalTargeting = {
|
|
33
|
+
signal_id: SignalID;
|
|
34
|
+
/**
|
|
35
|
+
* Discriminator for binary signals
|
|
36
|
+
*/
|
|
37
|
+
value_type: 'binary';
|
|
38
|
+
/**
|
|
39
|
+
* Whether to include (true) or exclude (false) users matching this signal
|
|
40
|
+
*/
|
|
41
|
+
value: boolean;
|
|
42
|
+
[k: string]: unknown | undefined;
|
|
43
|
+
} | {
|
|
44
|
+
signal_id: SignalID1;
|
|
45
|
+
/**
|
|
46
|
+
* Discriminator for categorical signals
|
|
47
|
+
*/
|
|
48
|
+
value_type: 'categorical';
|
|
49
|
+
/**
|
|
50
|
+
* Values to target. Users with any of these values will be included.
|
|
51
|
+
*
|
|
52
|
+
* @minItems 1
|
|
53
|
+
*/
|
|
54
|
+
values: [string, ...string[]];
|
|
55
|
+
[k: string]: unknown | undefined;
|
|
56
|
+
} | {
|
|
57
|
+
signal_id: SignalID2;
|
|
58
|
+
/**
|
|
59
|
+
* Discriminator for numeric signals
|
|
60
|
+
*/
|
|
61
|
+
value_type: 'numeric';
|
|
62
|
+
/**
|
|
63
|
+
* Minimum value (inclusive). Omit for no minimum. Must be <= max_value when both are provided. Should be >= signal's range.min if defined.
|
|
64
|
+
*/
|
|
65
|
+
min_value?: number;
|
|
66
|
+
/**
|
|
67
|
+
* Maximum value (inclusive). Omit for no maximum. Must be >= min_value when both are provided. Should be <= signal's range.max if defined.
|
|
68
|
+
*/
|
|
69
|
+
max_value?: number;
|
|
70
|
+
[k: string]: unknown | undefined;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* The signal to target
|
|
74
|
+
*/
|
|
75
|
+
export type SignalID = {
|
|
76
|
+
/**
|
|
77
|
+
* Discriminator indicating this signal is from a data provider's published catalog
|
|
78
|
+
*/
|
|
79
|
+
source: 'catalog';
|
|
80
|
+
/**
|
|
81
|
+
* Domain of the data provider that owns this signal (e.g., 'polk.com', 'experian.com'). The signal definition is published at this domain's /.well-known/adagents.json
|
|
82
|
+
*/
|
|
83
|
+
data_provider_domain: string;
|
|
84
|
+
/**
|
|
85
|
+
* Signal identifier within the data provider's catalog (e.g., 'likely_tesla_buyers', 'income_100k_plus')
|
|
86
|
+
*/
|
|
87
|
+
id: string;
|
|
88
|
+
[k: string]: unknown | undefined;
|
|
89
|
+
} | {
|
|
90
|
+
/**
|
|
91
|
+
* Discriminator indicating this signal is native to the agent (not from a data provider catalog)
|
|
92
|
+
*/
|
|
93
|
+
source: 'agent';
|
|
94
|
+
/**
|
|
95
|
+
* URL of the signals agent that provides this signal (e.g., 'https://liveramp.com/.well-known/adcp/signals')
|
|
96
|
+
*/
|
|
97
|
+
agent_url: string;
|
|
98
|
+
/**
|
|
99
|
+
* Signal identifier within the agent's signal set (e.g., 'custom_auto_intenders')
|
|
100
|
+
*/
|
|
101
|
+
id: string;
|
|
102
|
+
[k: string]: unknown | undefined;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* The signal to target
|
|
106
|
+
*/
|
|
107
|
+
export type SignalID1 = {
|
|
108
|
+
/**
|
|
109
|
+
* Discriminator indicating this signal is from a data provider's published catalog
|
|
110
|
+
*/
|
|
111
|
+
source: 'catalog';
|
|
112
|
+
/**
|
|
113
|
+
* Domain of the data provider that owns this signal (e.g., 'polk.com', 'experian.com'). The signal definition is published at this domain's /.well-known/adagents.json
|
|
114
|
+
*/
|
|
115
|
+
data_provider_domain: string;
|
|
116
|
+
/**
|
|
117
|
+
* Signal identifier within the data provider's catalog (e.g., 'likely_tesla_buyers', 'income_100k_plus')
|
|
118
|
+
*/
|
|
119
|
+
id: string;
|
|
120
|
+
[k: string]: unknown | undefined;
|
|
121
|
+
} | {
|
|
122
|
+
/**
|
|
123
|
+
* Discriminator indicating this signal is native to the agent (not from a data provider catalog)
|
|
124
|
+
*/
|
|
125
|
+
source: 'agent';
|
|
126
|
+
/**
|
|
127
|
+
* URL of the signals agent that provides this signal (e.g., 'https://liveramp.com/.well-known/adcp/signals')
|
|
128
|
+
*/
|
|
129
|
+
agent_url: string;
|
|
130
|
+
/**
|
|
131
|
+
* Signal identifier within the agent's signal set (e.g., 'custom_auto_intenders')
|
|
132
|
+
*/
|
|
133
|
+
id: string;
|
|
134
|
+
[k: string]: unknown | undefined;
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* The signal to target
|
|
138
|
+
*/
|
|
139
|
+
export type SignalID2 = {
|
|
140
|
+
/**
|
|
141
|
+
* Discriminator indicating this signal is from a data provider's published catalog
|
|
142
|
+
*/
|
|
143
|
+
source: 'catalog';
|
|
144
|
+
/**
|
|
145
|
+
* Domain of the data provider that owns this signal (e.g., 'polk.com', 'experian.com'). The signal definition is published at this domain's /.well-known/adagents.json
|
|
146
|
+
*/
|
|
147
|
+
data_provider_domain: string;
|
|
148
|
+
/**
|
|
149
|
+
* Signal identifier within the data provider's catalog (e.g., 'likely_tesla_buyers', 'income_100k_plus')
|
|
150
|
+
*/
|
|
151
|
+
id: string;
|
|
152
|
+
[k: string]: unknown | undefined;
|
|
153
|
+
} | {
|
|
154
|
+
/**
|
|
155
|
+
* Discriminator indicating this signal is native to the agent (not from a data provider catalog)
|
|
156
|
+
*/
|
|
157
|
+
source: 'agent';
|
|
158
|
+
/**
|
|
159
|
+
* URL of the signals agent that provides this signal (e.g., 'https://liveramp.com/.well-known/adcp/signals')
|
|
160
|
+
*/
|
|
161
|
+
agent_url: string;
|
|
162
|
+
/**
|
|
163
|
+
* Signal identifier within the agent's signal set (e.g., 'custom_auto_intenders')
|
|
164
|
+
*/
|
|
165
|
+
id: string;
|
|
166
|
+
[k: string]: unknown | undefined;
|
|
167
|
+
};
|
|
29
168
|
/**
|
|
30
169
|
* Request parameters for discovering available advertising products
|
|
31
170
|
*/
|
|
@@ -39,12 +178,14 @@ export interface GetProductsRequest {
|
|
|
39
178
|
*/
|
|
40
179
|
proposal_id?: string;
|
|
41
180
|
brand_manifest?: BrandManifestReference;
|
|
181
|
+
product_selectors?: PromotedProducts;
|
|
42
182
|
/**
|
|
43
|
-
* Account
|
|
183
|
+
* Account ID for product lookup. Required when the seller declares account.required_for_products = true in capabilities. Returns products with pricing specific to this account's rate card.
|
|
44
184
|
*/
|
|
45
185
|
account_id?: string;
|
|
46
186
|
filters?: ProductFilters;
|
|
47
187
|
property_list?: PropertyListReference;
|
|
188
|
+
pagination?: PaginationRequest;
|
|
48
189
|
context?: ContextObject;
|
|
49
190
|
ext?: ExtensionObject;
|
|
50
191
|
}
|
|
@@ -65,7 +206,7 @@ export interface BrandManifest {
|
|
|
65
206
|
*/
|
|
66
207
|
name: string;
|
|
67
208
|
/**
|
|
68
|
-
* Brand logo assets with
|
|
209
|
+
* Brand logo assets with structured fields for orientation, background compatibility, and variant type. Use the orientation, background, and variant enum fields for reliable filtering by creative agents.
|
|
69
210
|
*/
|
|
70
211
|
logos?: {
|
|
71
212
|
/**
|
|
@@ -73,9 +214,25 @@ export interface BrandManifest {
|
|
|
73
214
|
*/
|
|
74
215
|
url: string;
|
|
75
216
|
/**
|
|
76
|
-
*
|
|
217
|
+
* Logo aspect ratio orientation. square: ~1:1, horizontal: wide, vertical: tall, stacked: vertically arranged elements
|
|
218
|
+
*/
|
|
219
|
+
orientation?: 'square' | 'horizontal' | 'vertical' | 'stacked';
|
|
220
|
+
/**
|
|
221
|
+
* Background compatibility. dark-bg: use on dark backgrounds, light-bg: use on light backgrounds, transparent-bg: has transparent background
|
|
222
|
+
*/
|
|
223
|
+
background?: 'dark-bg' | 'light-bg' | 'transparent-bg';
|
|
224
|
+
/**
|
|
225
|
+
* Logo variant type. primary: main logo, secondary: alternative, icon: symbol only, wordmark: text only, full-lockup: complete logo
|
|
226
|
+
*/
|
|
227
|
+
variant?: 'primary' | 'secondary' | 'icon' | 'wordmark' | 'full-lockup';
|
|
228
|
+
/**
|
|
229
|
+
* Additional semantic tags for custom categorization beyond the standard orientation, background, and variant fields.
|
|
77
230
|
*/
|
|
78
231
|
tags?: string[];
|
|
232
|
+
/**
|
|
233
|
+
* Human-readable description of when to use this logo variant (e.g., 'Primary logo for use on light backgrounds', 'Icon-only variant for small formats')
|
|
234
|
+
*/
|
|
235
|
+
usage?: string;
|
|
79
236
|
/**
|
|
80
237
|
* Logo width in pixels
|
|
81
238
|
*/
|
|
@@ -86,29 +243,29 @@ export interface BrandManifest {
|
|
|
86
243
|
height?: number;
|
|
87
244
|
}[];
|
|
88
245
|
/**
|
|
89
|
-
* Brand color palette
|
|
246
|
+
* Brand color palette. Each role accepts a single hex color or an array of hex colors for brands with multiple values per role.
|
|
90
247
|
*/
|
|
91
248
|
colors?: {
|
|
92
249
|
/**
|
|
93
|
-
* Primary brand color
|
|
250
|
+
* Primary brand color(s)
|
|
94
251
|
*/
|
|
95
|
-
primary?: string;
|
|
252
|
+
primary?: string | [string, ...string[]];
|
|
96
253
|
/**
|
|
97
|
-
* Secondary brand color
|
|
254
|
+
* Secondary brand color(s)
|
|
98
255
|
*/
|
|
99
|
-
secondary?: string;
|
|
256
|
+
secondary?: string | [string, ...string[]];
|
|
100
257
|
/**
|
|
101
|
-
* Accent color
|
|
258
|
+
* Accent color(s)
|
|
102
259
|
*/
|
|
103
|
-
accent?: string;
|
|
260
|
+
accent?: string | [string, ...string[]];
|
|
104
261
|
/**
|
|
105
|
-
* Background color
|
|
262
|
+
* Background color(s)
|
|
106
263
|
*/
|
|
107
|
-
background?: string;
|
|
264
|
+
background?: string | [string, ...string[]];
|
|
108
265
|
/**
|
|
109
|
-
* Text color
|
|
266
|
+
* Text color(s)
|
|
110
267
|
*/
|
|
111
|
-
text?: string;
|
|
268
|
+
text?: string | [string, ...string[]];
|
|
112
269
|
};
|
|
113
270
|
/**
|
|
114
271
|
* Brand typography guidelines
|
|
@@ -128,9 +285,26 @@ export interface BrandManifest {
|
|
|
128
285
|
font_urls?: string[];
|
|
129
286
|
};
|
|
130
287
|
/**
|
|
131
|
-
* Brand voice and messaging tone
|
|
288
|
+
* Brand voice and messaging tone guidelines for creative agents.
|
|
132
289
|
*/
|
|
133
|
-
tone?: string
|
|
290
|
+
tone?: string | {
|
|
291
|
+
/**
|
|
292
|
+
* High-level voice descriptor (e.g., 'warm and inviting', 'professional and trustworthy')
|
|
293
|
+
*/
|
|
294
|
+
voice?: string;
|
|
295
|
+
/**
|
|
296
|
+
* Personality traits that characterize the brand voice
|
|
297
|
+
*/
|
|
298
|
+
attributes?: string[];
|
|
299
|
+
/**
|
|
300
|
+
* Specific guidance for copy generation - what TO do
|
|
301
|
+
*/
|
|
302
|
+
dos?: string[];
|
|
303
|
+
/**
|
|
304
|
+
* Guardrails to avoid brand violations - what NOT to do
|
|
305
|
+
*/
|
|
306
|
+
donts?: string[];
|
|
307
|
+
};
|
|
134
308
|
/**
|
|
135
309
|
* Brand voice configuration for audio/conversational experiences
|
|
136
310
|
*/
|
|
@@ -326,6 +500,32 @@ export interface BrandManifest {
|
|
|
326
500
|
};
|
|
327
501
|
[k: string]: unknown | undefined;
|
|
328
502
|
}
|
|
503
|
+
/**
|
|
504
|
+
* Selectors to filter the brand manifest product catalog for product discovery. When provided, sellers should only return advertising products where the selected catalog items have matches. Uses the same selection methods as promoted-offerings.
|
|
505
|
+
*/
|
|
506
|
+
export interface PromotedProducts {
|
|
507
|
+
/**
|
|
508
|
+
* GTIN product identifiers for cross-retailer catalog matching. Accepts standard GTIN formats (GTIN-8, UPC-A/GTIN-12, EAN-13/GTIN-13, GTIN-14).
|
|
509
|
+
*/
|
|
510
|
+
manifest_gtins?: string[];
|
|
511
|
+
/**
|
|
512
|
+
* Direct product SKU references from the brand manifest product catalog
|
|
513
|
+
*/
|
|
514
|
+
manifest_skus?: string[];
|
|
515
|
+
/**
|
|
516
|
+
* Select products by tags from the brand manifest product catalog (e.g., 'organic', 'sauces', 'holiday')
|
|
517
|
+
*/
|
|
518
|
+
manifest_tags?: string[];
|
|
519
|
+
/**
|
|
520
|
+
* Select products from a specific category in the brand manifest product catalog (e.g., 'beverages/soft-drinks', 'food/sauces')
|
|
521
|
+
*/
|
|
522
|
+
manifest_category?: string;
|
|
523
|
+
/**
|
|
524
|
+
* Natural language query to select products from the brand manifest (e.g., 'all Kraft Heinz pasta sauces', 'organic products under $20')
|
|
525
|
+
*/
|
|
526
|
+
manifest_query?: string;
|
|
527
|
+
[k: string]: unknown | undefined;
|
|
528
|
+
}
|
|
329
529
|
/**
|
|
330
530
|
* Structured filters for product discovery
|
|
331
531
|
*/
|
|
@@ -337,12 +537,16 @@ export interface ProductFilters {
|
|
|
337
537
|
is_fixed_price?: boolean;
|
|
338
538
|
/**
|
|
339
539
|
* Filter by format types
|
|
540
|
+
*
|
|
541
|
+
* @minItems 1
|
|
340
542
|
*/
|
|
341
|
-
format_types?: FormatCategory[];
|
|
543
|
+
format_types?: [FormatCategory, ...FormatCategory[]];
|
|
342
544
|
/**
|
|
343
545
|
* Filter by specific format IDs
|
|
546
|
+
*
|
|
547
|
+
* @minItems 1
|
|
344
548
|
*/
|
|
345
|
-
format_ids?: FormatID[];
|
|
549
|
+
format_ids?: [FormatID, ...FormatID[]];
|
|
346
550
|
/**
|
|
347
551
|
* Only return products accepting IAB standard formats
|
|
348
552
|
*/
|
|
@@ -367,41 +571,77 @@ export interface ProductFilters {
|
|
|
367
571
|
};
|
|
368
572
|
/**
|
|
369
573
|
* Filter by country coverage using ISO 3166-1 alpha-2 codes (e.g., ['US', 'CA', 'GB']). Works for all inventory types.
|
|
574
|
+
*
|
|
575
|
+
* @minItems 1
|
|
370
576
|
*/
|
|
371
|
-
countries?: string[];
|
|
577
|
+
countries?: [string, ...string[]];
|
|
372
578
|
/**
|
|
373
579
|
* Filter by region coverage using ISO 3166-2 codes (e.g., ['US-NY', 'US-CA', 'GB-SCT']). Use for locally-bound inventory (regional OOH, local TV) where products have region-specific coverage.
|
|
580
|
+
*
|
|
581
|
+
* @minItems 1
|
|
374
582
|
*/
|
|
375
|
-
regions?: string[];
|
|
583
|
+
regions?: [string, ...string[]];
|
|
376
584
|
/**
|
|
377
585
|
* Filter by metro coverage for locally-bound inventory (radio, DOOH, local TV). Use when products have DMA/metro-specific coverage. For digital inventory where products have broad coverage, use required_geo_targeting instead to filter by seller capability.
|
|
586
|
+
*
|
|
587
|
+
* @minItems 1
|
|
378
588
|
*/
|
|
379
|
-
metros?:
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
589
|
+
metros?: [
|
|
590
|
+
{
|
|
591
|
+
system: MetroAreaSystem;
|
|
592
|
+
/**
|
|
593
|
+
* Metro code within the system (e.g., '501' for NYC DMA)
|
|
594
|
+
*/
|
|
595
|
+
code: string;
|
|
596
|
+
},
|
|
597
|
+
...{
|
|
598
|
+
system: MetroAreaSystem;
|
|
599
|
+
/**
|
|
600
|
+
* Metro code within the system (e.g., '501' for NYC DMA)
|
|
601
|
+
*/
|
|
602
|
+
code: string;
|
|
603
|
+
}[]
|
|
604
|
+
];
|
|
386
605
|
/**
|
|
387
|
-
* Filter by advertising channels (e.g., ['display', '
|
|
606
|
+
* Filter by advertising channels (e.g., ['display', 'ctv', 'dooh'])
|
|
607
|
+
*
|
|
608
|
+
* @minItems 1
|
|
388
609
|
*/
|
|
389
|
-
channels?: MediaChannel[];
|
|
610
|
+
channels?: [MediaChannel, ...MediaChannel[]];
|
|
390
611
|
/**
|
|
391
612
|
* Filter to products executable through specific agentic ad exchanges. URLs are canonical identifiers.
|
|
613
|
+
*
|
|
614
|
+
* @minItems 1
|
|
392
615
|
*/
|
|
393
|
-
required_axe_integrations?: string[];
|
|
616
|
+
required_axe_integrations?: [string, ...string[]];
|
|
394
617
|
required_features?: MediaBuyFeatures;
|
|
395
618
|
/**
|
|
396
619
|
* Filter to products from sellers supporting specific geo targeting capabilities. Each entry specifies a targeting level (country, region, metro, postal_area) and optionally a system for levels that have multiple classification systems.
|
|
620
|
+
*
|
|
621
|
+
* @minItems 1
|
|
397
622
|
*/
|
|
398
|
-
required_geo_targeting?:
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
623
|
+
required_geo_targeting?: [
|
|
624
|
+
{
|
|
625
|
+
level: GeographicTargetingLevel;
|
|
626
|
+
/**
|
|
627
|
+
* Classification system within the level. Required for metro (e.g., 'nielsen_dma') and postal_area (e.g., 'us_zip'). Not applicable for country/region which use ISO standards.
|
|
628
|
+
*/
|
|
629
|
+
system?: string;
|
|
630
|
+
},
|
|
631
|
+
...{
|
|
632
|
+
level: GeographicTargetingLevel;
|
|
633
|
+
/**
|
|
634
|
+
* Classification system within the level. Required for metro (e.g., 'nielsen_dma') and postal_area (e.g., 'us_zip'). Not applicable for country/region which use ISO standards.
|
|
635
|
+
*/
|
|
636
|
+
system?: string;
|
|
637
|
+
}[]
|
|
638
|
+
];
|
|
639
|
+
/**
|
|
640
|
+
* Filter to products supporting specific signals from data provider catalogs. Products must have the requested signals in their data_provider_signals and signal_targeting_allowed must be true (or all signals requested).
|
|
641
|
+
*
|
|
642
|
+
* @minItems 1
|
|
643
|
+
*/
|
|
644
|
+
signal_targeting?: [SignalTargeting, ...SignalTargeting[]];
|
|
405
645
|
[k: string]: unknown | undefined;
|
|
406
646
|
}
|
|
407
647
|
/**
|
|
@@ -446,6 +686,10 @@ export interface MediaBuyFeatures {
|
|
|
446
686
|
* Full support for content_standards configuration including sampling rates and category filtering
|
|
447
687
|
*/
|
|
448
688
|
content_standards?: boolean;
|
|
689
|
+
/**
|
|
690
|
+
* Supports sync_event_sources and log_event tasks for conversion event tracking
|
|
691
|
+
*/
|
|
692
|
+
conversion_tracking?: boolean;
|
|
449
693
|
[k: string]: boolean | undefined;
|
|
450
694
|
}
|
|
451
695
|
/**
|
|
@@ -465,6 +709,19 @@ export interface PropertyListReference {
|
|
|
465
709
|
*/
|
|
466
710
|
auth_token?: string;
|
|
467
711
|
}
|
|
712
|
+
/**
|
|
713
|
+
* Standard cursor-based pagination parameters for list operations
|
|
714
|
+
*/
|
|
715
|
+
export interface PaginationRequest {
|
|
716
|
+
/**
|
|
717
|
+
* Maximum number of items to return per page
|
|
718
|
+
*/
|
|
719
|
+
max_results?: number;
|
|
720
|
+
/**
|
|
721
|
+
* Opaque cursor from a previous response to fetch the next page
|
|
722
|
+
*/
|
|
723
|
+
cursor?: string;
|
|
724
|
+
}
|
|
468
725
|
/**
|
|
469
726
|
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
470
727
|
*/
|
|
@@ -532,9 +789,13 @@ export type PropertyID = string;
|
|
|
532
789
|
*/
|
|
533
790
|
export type PropertyTag = string;
|
|
534
791
|
/**
|
|
535
|
-
*
|
|
792
|
+
* Standardized advertising media channels describing how buyers allocate budget. Channels are planning abstractions, not technical substrates. See the Media Channel Taxonomy specification for detailed definitions.
|
|
793
|
+
*/
|
|
794
|
+
export type PricingOption = CPMPricingOption | VCPMPricingOption | CPCPricingOption | CPCVPricingOption | CPVPricingOption | CPPPricingOption | CPAPricingOption | FlatRatePricingOption | TimeBasedPricingOption;
|
|
795
|
+
/**
|
|
796
|
+
* Standard marketing event types for event logging, aligned with IAB ECAPI
|
|
536
797
|
*/
|
|
537
|
-
export type
|
|
798
|
+
export type EventType = 'page_view' | 'view_content' | 'select_content' | 'select_item' | 'search' | 'share' | 'add_to_cart' | 'remove_from_cart' | 'viewed_cart' | 'add_to_wishlist' | 'initiate_checkout' | 'add_payment_info' | 'purchase' | 'refund' | 'lead' | 'qualify_lead' | 'close_convert_lead' | 'disqualify_lead' | 'complete_registration' | 'subscribe' | 'start_trial' | 'app_install' | 'app_launch' | 'contact' | 'schedule' | 'donate' | 'submit_application' | 'custom';
|
|
538
799
|
/**
|
|
539
800
|
* Available frequencies for delivery reports and metrics updates
|
|
540
801
|
*/
|
|
@@ -542,7 +803,7 @@ export type ReportingFrequency = 'hourly' | 'daily' | 'monthly';
|
|
|
542
803
|
/**
|
|
543
804
|
* Standard delivery and performance metrics available for reporting
|
|
544
805
|
*/
|
|
545
|
-
export type AvailableMetric = 'impressions' | 'spend' | 'clicks' | 'ctr' | 'video_completions' | 'completion_rate' | 'conversions' | 'viewability' | 'engagement_rate';
|
|
806
|
+
export type AvailableMetric = 'impressions' | 'spend' | 'clicks' | 'ctr' | 'video_completions' | 'completion_rate' | 'conversions' | 'conversion_value' | 'roas' | 'cost_per_acquisition' | 'new_to_brand_rate' | 'viewability' | 'engagement_rate' | 'views' | 'completed_views' | 'leads' | 'reach' | 'frequency' | 'grps' | 'quartile_data' | 'dooh_metrics' | 'cost_per_click';
|
|
546
807
|
/**
|
|
547
808
|
* Co-branding requirement
|
|
548
809
|
*/
|
|
@@ -551,6 +812,56 @@ export type CoBrandingRequirement = 'required' | 'optional' | 'none';
|
|
|
551
812
|
* Landing page requirements
|
|
552
813
|
*/
|
|
553
814
|
export type LandingPageRequirement = 'any' | 'retailer_site_only' | 'must_include_retailer';
|
|
815
|
+
/**
|
|
816
|
+
* Selects signals from a data provider's adagents.json catalog. Used for product definitions and agent authorization. Supports three selection patterns: all signals, specific IDs, or by tags.
|
|
817
|
+
*/
|
|
818
|
+
export type DataProviderSignalSelector = {
|
|
819
|
+
/**
|
|
820
|
+
* Domain where data provider's adagents.json is hosted (e.g., 'polk.com')
|
|
821
|
+
*/
|
|
822
|
+
data_provider_domain: string;
|
|
823
|
+
/**
|
|
824
|
+
* Discriminator indicating all signals from this data provider are included
|
|
825
|
+
*/
|
|
826
|
+
selection_type: 'all';
|
|
827
|
+
[k: string]: unknown | undefined;
|
|
828
|
+
} | {
|
|
829
|
+
/**
|
|
830
|
+
* Domain where data provider's adagents.json is hosted (e.g., 'polk.com')
|
|
831
|
+
*/
|
|
832
|
+
data_provider_domain: string;
|
|
833
|
+
/**
|
|
834
|
+
* Discriminator indicating selection by specific signal IDs
|
|
835
|
+
*/
|
|
836
|
+
selection_type: 'by_id';
|
|
837
|
+
/**
|
|
838
|
+
* Specific signal IDs from the data provider's catalog
|
|
839
|
+
*
|
|
840
|
+
* @minItems 1
|
|
841
|
+
*/
|
|
842
|
+
signal_ids: [string, ...string[]];
|
|
843
|
+
[k: string]: unknown | undefined;
|
|
844
|
+
} | {
|
|
845
|
+
/**
|
|
846
|
+
* Domain where data provider's adagents.json is hosted (e.g., 'polk.com')
|
|
847
|
+
*/
|
|
848
|
+
data_provider_domain: string;
|
|
849
|
+
/**
|
|
850
|
+
* Discriminator indicating selection by signal tags
|
|
851
|
+
*/
|
|
852
|
+
selection_type: 'by_tag';
|
|
853
|
+
/**
|
|
854
|
+
* Signal tags from the data provider's catalog. Selector covers all signals with these tags
|
|
855
|
+
*
|
|
856
|
+
* @minItems 1
|
|
857
|
+
*/
|
|
858
|
+
signal_tags: [string, ...string[]];
|
|
859
|
+
[k: string]: unknown | undefined;
|
|
860
|
+
};
|
|
861
|
+
/**
|
|
862
|
+
* Where the conversion event originated
|
|
863
|
+
*/
|
|
864
|
+
export type ActionSource = 'website' | 'app' | 'offline' | 'phone_call' | 'chat' | 'email' | 'in_store' | 'system_generated' | 'other';
|
|
554
865
|
/**
|
|
555
866
|
* Response payload for get_products task
|
|
556
867
|
*/
|
|
@@ -571,6 +882,11 @@ export interface GetProductsResponse {
|
|
|
571
882
|
* [AdCP 3.0] Indicates whether property_list filtering was applied. True if the agent filtered products based on the provided property_list. Absent or false if property_list was not provided or not supported by this agent.
|
|
572
883
|
*/
|
|
573
884
|
property_list_applied?: boolean;
|
|
885
|
+
/**
|
|
886
|
+
* Indicates whether product_selectors filtering was applied. True if the seller filtered results based on the provided product_selectors. Absent or false if product_selectors was not provided or not supported by this agent.
|
|
887
|
+
*/
|
|
888
|
+
product_selectors_applied?: boolean;
|
|
889
|
+
pagination?: PaginationResponse;
|
|
574
890
|
context?: ContextObject;
|
|
575
891
|
ext?: ExtensionObject;
|
|
576
892
|
}
|
|
@@ -596,6 +912,10 @@ export interface Product {
|
|
|
596
912
|
* @minItems 1
|
|
597
913
|
*/
|
|
598
914
|
publisher_properties: [PublisherPropertySelector, ...PublisherPropertySelector[]];
|
|
915
|
+
/**
|
|
916
|
+
* Advertising channels this product is sold as. Products inherit from their properties' supported_channels but may narrow the scope. For example, a product covering YouTube properties might be sold as ['ctv'] even though those properties support ['olv', 'social', 'ctv'].
|
|
917
|
+
*/
|
|
918
|
+
channels?: MediaChannel[];
|
|
599
919
|
/**
|
|
600
920
|
* Array of supported creative format IDs - structured format_id objects with agent_url and id
|
|
601
921
|
*/
|
|
@@ -641,6 +961,39 @@ export interface Product {
|
|
|
641
961
|
* Whether buyers can filter this product to a subset of its publisher_properties. When false (default), the product is 'all or nothing' - buyers must accept all properties or the product is excluded from property_list filtering results.
|
|
642
962
|
*/
|
|
643
963
|
property_targeting_allowed?: boolean;
|
|
964
|
+
/**
|
|
965
|
+
* Data provider signals available for this product. Buyers fetch signal definitions from each data provider's adagents.json and can verify agent authorization.
|
|
966
|
+
*/
|
|
967
|
+
data_provider_signals?: DataProviderSignalSelector[];
|
|
968
|
+
/**
|
|
969
|
+
* Whether buyers can filter this product to a subset of its data_provider_signals. When false (default), the product includes all listed signals as a bundle. When true, buyers can target specific signals.
|
|
970
|
+
*/
|
|
971
|
+
signal_targeting_allowed?: boolean;
|
|
972
|
+
/**
|
|
973
|
+
* Conversion tracking for this product. Presence indicates the product supports conversion-optimized delivery. Seller-level capabilities (supported event types, UID types, attribution windows) are declared in get_adcp_capabilities.
|
|
974
|
+
*/
|
|
975
|
+
conversion_tracking?: {
|
|
976
|
+
/**
|
|
977
|
+
* Action sources relevant to this product (e.g. a retail media product might have 'in_store' and 'website', while a display product might only have 'website')
|
|
978
|
+
*
|
|
979
|
+
* @minItems 1
|
|
980
|
+
*/
|
|
981
|
+
action_sources?: [ActionSource, ...ActionSource[]];
|
|
982
|
+
/**
|
|
983
|
+
* Optimization strategies this product supports when an optimization_goal is set on a package
|
|
984
|
+
*
|
|
985
|
+
* @minItems 1
|
|
986
|
+
*/
|
|
987
|
+
supported_optimization_strategies?: [
|
|
988
|
+
'maximize_conversions' | 'target_cpa' | 'target_roas',
|
|
989
|
+
...('maximize_conversions' | 'target_cpa' | 'target_roas')[]
|
|
990
|
+
];
|
|
991
|
+
/**
|
|
992
|
+
* Whether the seller provides its own always-on measurement (e.g. Amazon sales attribution for Amazon advertisers). When true, sync_event_sources response will include seller-managed event sources with managed_by='seller'.
|
|
993
|
+
*/
|
|
994
|
+
platform_managed?: boolean;
|
|
995
|
+
[k: string]: unknown | undefined;
|
|
996
|
+
};
|
|
644
997
|
/**
|
|
645
998
|
* Explanation of why this product matches the brief (only included when brief is provided)
|
|
646
999
|
*/
|
|
@@ -1048,32 +1401,70 @@ export interface PriceGuidance5 {
|
|
|
1048
1401
|
[k: string]: unknown | undefined;
|
|
1049
1402
|
}
|
|
1050
1403
|
/**
|
|
1051
|
-
*
|
|
1404
|
+
* Cost Per Acquisition pricing. Advertiser pays a fixed price when a specified conversion event occurs. The event_type field declares which event triggers billing (e.g., purchase, lead, app_install).
|
|
1052
1405
|
*/
|
|
1053
|
-
export interface
|
|
1406
|
+
export interface CPAPricingOption {
|
|
1054
1407
|
/**
|
|
1055
1408
|
* Unique identifier for this pricing option within the product
|
|
1056
1409
|
*/
|
|
1057
1410
|
pricing_option_id: string;
|
|
1058
1411
|
/**
|
|
1059
|
-
*
|
|
1412
|
+
* Cost per acquisition (conversion event)
|
|
1060
1413
|
*/
|
|
1061
|
-
pricing_model: '
|
|
1414
|
+
pricing_model: 'cpa';
|
|
1062
1415
|
/**
|
|
1063
|
-
*
|
|
1416
|
+
* The conversion event type that triggers billing (e.g., purchase, lead, app_install)
|
|
1064
1417
|
*/
|
|
1065
|
-
|
|
1418
|
+
event_type: EventType;
|
|
1066
1419
|
/**
|
|
1067
|
-
*
|
|
1420
|
+
* Name of the custom event when event_type is 'custom'. Required when event_type is 'custom', ignored otherwise.
|
|
1068
1421
|
*/
|
|
1069
|
-
|
|
1422
|
+
custom_event_name?: string;
|
|
1070
1423
|
/**
|
|
1071
|
-
*
|
|
1424
|
+
* When present, only events from this specific event source count toward billing. Allows different CPA rates for different sources (e.g., online vs in-store purchases). Must match an event source configured via sync_event_sources.
|
|
1072
1425
|
*/
|
|
1073
|
-
|
|
1074
|
-
price_guidance?: PriceGuidance6;
|
|
1426
|
+
event_source_id?: string;
|
|
1075
1427
|
/**
|
|
1076
|
-
*
|
|
1428
|
+
* ISO 4217 currency code
|
|
1429
|
+
*/
|
|
1430
|
+
currency: string;
|
|
1431
|
+
/**
|
|
1432
|
+
* Fixed price per acquisition in the specified currency
|
|
1433
|
+
*/
|
|
1434
|
+
fixed_price: number;
|
|
1435
|
+
/**
|
|
1436
|
+
* Minimum spend requirement per package using this pricing option, in the specified currency
|
|
1437
|
+
*/
|
|
1438
|
+
min_spend_per_package?: number;
|
|
1439
|
+
[k: string]: unknown | undefined;
|
|
1440
|
+
}
|
|
1441
|
+
/**
|
|
1442
|
+
* Flat rate pricing for DOOH, sponsorships, and time-based campaigns. If fixed_price is present, it's fixed pricing. If absent, it's auction-based.
|
|
1443
|
+
*/
|
|
1444
|
+
export interface FlatRatePricingOption {
|
|
1445
|
+
/**
|
|
1446
|
+
* Unique identifier for this pricing option within the product
|
|
1447
|
+
*/
|
|
1448
|
+
pricing_option_id: string;
|
|
1449
|
+
/**
|
|
1450
|
+
* Fixed cost regardless of delivery volume
|
|
1451
|
+
*/
|
|
1452
|
+
pricing_model: 'flat_rate';
|
|
1453
|
+
/**
|
|
1454
|
+
* ISO 4217 currency code
|
|
1455
|
+
*/
|
|
1456
|
+
currency: string;
|
|
1457
|
+
/**
|
|
1458
|
+
* Flat rate cost. If present, this is fixed pricing. If absent, auction-based.
|
|
1459
|
+
*/
|
|
1460
|
+
fixed_price?: number;
|
|
1461
|
+
/**
|
|
1462
|
+
* Minimum acceptable bid for auction pricing (mutually exclusive with fixed_price). Bids below this value will be rejected.
|
|
1463
|
+
*/
|
|
1464
|
+
floor_price?: number;
|
|
1465
|
+
price_guidance?: PriceGuidance6;
|
|
1466
|
+
/**
|
|
1467
|
+
* Flat rate parameters for DOOH and time-based campaigns
|
|
1077
1468
|
*/
|
|
1078
1469
|
parameters?: {
|
|
1079
1470
|
/**
|
|
@@ -1134,6 +1525,77 @@ export interface PriceGuidance6 {
|
|
|
1134
1525
|
p90?: number;
|
|
1135
1526
|
[k: string]: unknown | undefined;
|
|
1136
1527
|
}
|
|
1528
|
+
/**
|
|
1529
|
+
* Cost per time unit (hour, day, week, or month) - rate scales with campaign duration. If fixed_price is present, it's fixed pricing. If absent, it's auction-based.
|
|
1530
|
+
*/
|
|
1531
|
+
export interface TimeBasedPricingOption {
|
|
1532
|
+
/**
|
|
1533
|
+
* Unique identifier for this pricing option within the product
|
|
1534
|
+
*/
|
|
1535
|
+
pricing_option_id: string;
|
|
1536
|
+
/**
|
|
1537
|
+
* Cost per time unit - rate scales with campaign duration
|
|
1538
|
+
*/
|
|
1539
|
+
pricing_model: 'time';
|
|
1540
|
+
/**
|
|
1541
|
+
* ISO 4217 currency code
|
|
1542
|
+
*/
|
|
1543
|
+
currency: string;
|
|
1544
|
+
/**
|
|
1545
|
+
* Cost per time unit. If present, this is fixed pricing. If absent, auction-based.
|
|
1546
|
+
*/
|
|
1547
|
+
fixed_price?: number;
|
|
1548
|
+
/**
|
|
1549
|
+
* Minimum acceptable bid per time unit for auction pricing (mutually exclusive with fixed_price). Bids below this value will be rejected.
|
|
1550
|
+
*/
|
|
1551
|
+
floor_price?: number;
|
|
1552
|
+
price_guidance?: PriceGuidance7;
|
|
1553
|
+
/**
|
|
1554
|
+
* Time-based pricing parameters
|
|
1555
|
+
*/
|
|
1556
|
+
parameters: {
|
|
1557
|
+
/**
|
|
1558
|
+
* The time unit for pricing. Total cost = fixed_price × number of time_units in the campaign flight.
|
|
1559
|
+
*/
|
|
1560
|
+
time_unit: 'hour' | 'day' | 'week' | 'month';
|
|
1561
|
+
/**
|
|
1562
|
+
* Minimum booking duration in time_units
|
|
1563
|
+
*/
|
|
1564
|
+
min_duration?: number;
|
|
1565
|
+
/**
|
|
1566
|
+
* Maximum booking duration in time_units. Must be >= min_duration when both are present.
|
|
1567
|
+
*/
|
|
1568
|
+
max_duration?: number;
|
|
1569
|
+
[k: string]: unknown | undefined;
|
|
1570
|
+
};
|
|
1571
|
+
/**
|
|
1572
|
+
* Minimum spend requirement per package using this pricing option, in the specified currency
|
|
1573
|
+
*/
|
|
1574
|
+
min_spend_per_package?: number;
|
|
1575
|
+
[k: string]: unknown | undefined;
|
|
1576
|
+
}
|
|
1577
|
+
/**
|
|
1578
|
+
* Optional pricing guidance for auction-based bidding
|
|
1579
|
+
*/
|
|
1580
|
+
export interface PriceGuidance7 {
|
|
1581
|
+
/**
|
|
1582
|
+
* 25th percentile of recent winning bids
|
|
1583
|
+
*/
|
|
1584
|
+
p25?: number;
|
|
1585
|
+
/**
|
|
1586
|
+
* Median of recent winning bids
|
|
1587
|
+
*/
|
|
1588
|
+
p50?: number;
|
|
1589
|
+
/**
|
|
1590
|
+
* 75th percentile of recent winning bids
|
|
1591
|
+
*/
|
|
1592
|
+
p75?: number;
|
|
1593
|
+
/**
|
|
1594
|
+
* 90th percentile of recent winning bids
|
|
1595
|
+
*/
|
|
1596
|
+
p90?: number;
|
|
1597
|
+
[k: string]: unknown | undefined;
|
|
1598
|
+
}
|
|
1137
1599
|
/**
|
|
1138
1600
|
* Measurement capabilities included with a product
|
|
1139
1601
|
*/
|
|
@@ -1179,9 +1641,17 @@ export interface ReportingCapabilities {
|
|
|
1179
1641
|
*/
|
|
1180
1642
|
supports_webhooks: boolean;
|
|
1181
1643
|
/**
|
|
1182
|
-
* Metrics available in reporting. Impressions and spend are always implicitly included.
|
|
1644
|
+
* Metrics available in reporting. Impressions and spend are always implicitly included. When a creative format declares reported_metrics, buyers receive the intersection of these product-level metrics and the format's reported_metrics.
|
|
1183
1645
|
*/
|
|
1184
1646
|
available_metrics: AvailableMetric[];
|
|
1647
|
+
/**
|
|
1648
|
+
* Whether this product supports creative-level metric breakdowns in delivery reporting (by_creative within by_package)
|
|
1649
|
+
*/
|
|
1650
|
+
supports_creative_breakdown?: boolean;
|
|
1651
|
+
/**
|
|
1652
|
+
* Whether delivery data can be filtered to arbitrary date ranges. 'date_range' means the platform supports start_date/end_date parameters. 'lifetime_only' means the platform returns campaign lifetime totals and date range parameters are not accepted.
|
|
1653
|
+
*/
|
|
1654
|
+
date_range_support: 'date_range' | 'lifetime_only';
|
|
1185
1655
|
[k: string]: unknown | undefined;
|
|
1186
1656
|
}
|
|
1187
1657
|
/**
|
|
@@ -1366,12 +1836,33 @@ export interface Error {
|
|
|
1366
1836
|
};
|
|
1367
1837
|
[k: string]: unknown | undefined;
|
|
1368
1838
|
}
|
|
1839
|
+
/**
|
|
1840
|
+
* Standard cursor-based pagination metadata for list responses
|
|
1841
|
+
*/
|
|
1842
|
+
export interface PaginationResponse {
|
|
1843
|
+
/**
|
|
1844
|
+
* Whether more results are available beyond this page
|
|
1845
|
+
*/
|
|
1846
|
+
has_more: boolean;
|
|
1847
|
+
/**
|
|
1848
|
+
* Opaque cursor to pass in the next request to fetch the next page. Only present when has_more is true.
|
|
1849
|
+
*/
|
|
1850
|
+
cursor?: string;
|
|
1851
|
+
/**
|
|
1852
|
+
* Total number of items matching the query across all pages. Optional because not all backends can efficiently compute this.
|
|
1853
|
+
*/
|
|
1854
|
+
total_count?: number;
|
|
1855
|
+
}
|
|
1369
1856
|
/**
|
|
1370
1857
|
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
1371
1858
|
*/
|
|
1372
1859
|
/**
|
|
1373
1860
|
* Filter by format type (technical categories with distinct requirements)
|
|
1374
1861
|
*/
|
|
1862
|
+
export type WCAGLevel = 'A' | 'AA' | 'AAA';
|
|
1863
|
+
/**
|
|
1864
|
+
* Request parameters for discovering supported creative formats
|
|
1865
|
+
*/
|
|
1375
1866
|
export interface ListCreativeFormatsRequest {
|
|
1376
1867
|
/**
|
|
1377
1868
|
* Return only these specific format IDs (e.g., from get_products response)
|
|
@@ -1406,6 +1897,8 @@ export interface ListCreativeFormatsRequest {
|
|
|
1406
1897
|
* Search for formats by name (case-insensitive partial match)
|
|
1407
1898
|
*/
|
|
1408
1899
|
name_search?: string;
|
|
1900
|
+
wcag_level?: WCAGLevel;
|
|
1901
|
+
pagination?: PaginationRequest;
|
|
1409
1902
|
context?: ContextObject;
|
|
1410
1903
|
ext?: ExtensionObject;
|
|
1411
1904
|
}
|
|
@@ -1413,17 +1906,17 @@ export interface ListCreativeFormatsRequest {
|
|
|
1413
1906
|
* Structured format identifier with agent URL and format name. Can reference: (1) a concrete format with fixed dimensions (id only), (2) a template format without parameters (id only), or (3) a template format with parameters (id + dimensions/duration). Template formats accept parameters in format_id while concrete formats have fixed dimensions in their definition. Parameterized format IDs create unique, specific format variants.
|
|
1414
1907
|
*/
|
|
1415
1908
|
/**
|
|
1416
|
-
*
|
|
1909
|
+
* DEPRECATED: High-level category for this format. Use the assets array to understand creative requirements instead - it provides precise information about what asset types are needed.
|
|
1417
1910
|
*/
|
|
1418
1911
|
export type FormatIDParameter = 'dimensions' | 'duration';
|
|
1419
1912
|
/**
|
|
1420
|
-
*
|
|
1913
|
+
* Standardized macro placeholders for dynamic value substitution in creative tracking URLs. Macros are replaced with actual values at impression time. See docs/creative/universal-macros.mdx for detailed documentation.
|
|
1421
1914
|
*/
|
|
1422
|
-
export type
|
|
1915
|
+
export type UniversalMacro = 'MEDIA_BUY_ID' | 'PACKAGE_ID' | 'CREATIVE_ID' | 'CACHEBUSTER' | 'TIMESTAMP' | 'CLICK_URL' | 'GDPR' | 'GDPR_CONSENT' | 'US_PRIVACY' | 'GPP_STRING' | 'GPP_SID' | 'IP_ADDRESS' | 'LIMIT_AD_TRACKING' | 'DEVICE_TYPE' | 'OS' | 'OS_VERSION' | 'DEVICE_MAKE' | 'DEVICE_MODEL' | 'USER_AGENT' | 'APP_BUNDLE' | 'APP_NAME' | 'COUNTRY' | 'REGION' | 'CITY' | 'ZIP' | 'DMA' | 'LAT' | 'LONG' | 'DEVICE_ID' | 'DEVICE_ID_TYPE' | 'DOMAIN' | 'PAGE_URL' | 'REFERRER' | 'KEYWORDS' | 'PLACEMENT_ID' | 'FOLD_POSITION' | 'AD_WIDTH' | 'AD_HEIGHT' | 'VIDEO_ID' | 'VIDEO_TITLE' | 'VIDEO_DURATION' | 'VIDEO_CATEGORY' | 'CONTENT_GENRE' | 'CONTENT_RATING' | 'PLAYER_WIDTH' | 'PLAYER_HEIGHT' | 'POD_POSITION' | 'POD_SIZE' | 'AD_BREAK_ID' | 'STATION_ID' | 'SHOW_NAME' | 'EPISODE_ID' | 'AUDIO_DURATION' | 'AXEM';
|
|
1423
1916
|
/**
|
|
1424
|
-
*
|
|
1917
|
+
* WCAG conformance level that this format achieves. For format-rendered creatives, the format guarantees this level. For opaque creatives, the format requires assets that self-certify to this level.
|
|
1425
1918
|
*/
|
|
1426
|
-
export type CreativeAgentCapability = 'validation' | 'assembly' | 'generation' | 'preview';
|
|
1919
|
+
export type CreativeAgentCapability = 'validation' | 'assembly' | 'generation' | 'preview' | 'delivery';
|
|
1427
1920
|
/**
|
|
1428
1921
|
* Response payload for list_creative_formats task
|
|
1429
1922
|
*/
|
|
@@ -1453,6 +1946,7 @@ export interface ListCreativeFormatsResponse {
|
|
|
1453
1946
|
* Task-specific errors and warnings (e.g., format availability issues)
|
|
1454
1947
|
*/
|
|
1455
1948
|
errors?: Error[];
|
|
1949
|
+
pagination?: PaginationResponse;
|
|
1456
1950
|
context?: ContextObject;
|
|
1457
1951
|
ext?: ExtensionObject;
|
|
1458
1952
|
}
|
|
@@ -1473,7 +1967,7 @@ export interface Format {
|
|
|
1473
1967
|
* Optional URL to showcase page with examples and interactive demos of this format
|
|
1474
1968
|
*/
|
|
1475
1969
|
example_url?: string;
|
|
1476
|
-
type
|
|
1970
|
+
type?: FormatCategory;
|
|
1477
1971
|
/**
|
|
1478
1972
|
* List of parameters this format accepts in format_id. Template formats define which parameters (dimensions, duration, etc.) can be specified when instantiating the format. Empty or omitted means this is a concrete format with fixed parameters.
|
|
1479
1973
|
*/
|
|
@@ -1498,31 +1992,7 @@ export interface Format {
|
|
|
1498
1992
|
/**
|
|
1499
1993
|
* Array of all assets supported for this format. Each asset is identified by its asset_id, which must be used as the key in creative manifests. Use the 'required' boolean on each asset to indicate whether it's mandatory.
|
|
1500
1994
|
*/
|
|
1501
|
-
assets?: ({
|
|
1502
|
-
/**
|
|
1503
|
-
* Discriminator indicating this is an individual asset
|
|
1504
|
-
*/
|
|
1505
|
-
item_type: 'individual';
|
|
1506
|
-
/**
|
|
1507
|
-
* Unique identifier for this asset. Creative manifests MUST use this exact value as the key in the assets object.
|
|
1508
|
-
*/
|
|
1509
|
-
asset_id: string;
|
|
1510
|
-
asset_type: AssetContentType;
|
|
1511
|
-
/**
|
|
1512
|
-
* Optional descriptive label for this asset's purpose (e.g., 'hero_image', 'logo', 'third_party_tracking'). Not used for referencing assets in manifests—use asset_id instead. This field is for human-readable documentation and UI display only.
|
|
1513
|
-
*/
|
|
1514
|
-
asset_role?: string;
|
|
1515
|
-
/**
|
|
1516
|
-
* Whether this asset is required (true) or optional (false). Required assets must be provided for a valid creative. Optional assets enhance the creative but are not mandatory.
|
|
1517
|
-
*/
|
|
1518
|
-
required: boolean;
|
|
1519
|
-
/**
|
|
1520
|
-
* Technical requirements for this asset (dimensions, file size, duration, etc.). For template formats, use parameters_from_format_id: true to indicate asset parameters must match the format_id parameters (width/height/unit and/or duration_ms).
|
|
1521
|
-
*/
|
|
1522
|
-
requirements?: {
|
|
1523
|
-
[k: string]: unknown | undefined;
|
|
1524
|
-
};
|
|
1525
|
-
} | {
|
|
1995
|
+
assets?: (BaseIndividualAsset | {
|
|
1526
1996
|
/**
|
|
1527
1997
|
* Discriminator indicating this is a repeatable asset group
|
|
1528
1998
|
*/
|
|
@@ -1543,30 +2013,14 @@ export interface Format {
|
|
|
1543
2013
|
* Maximum number of repetitions allowed
|
|
1544
2014
|
*/
|
|
1545
2015
|
max_count: number;
|
|
2016
|
+
/**
|
|
2017
|
+
* How the platform uses repetitions of this group. 'sequential' means all items display in order (carousels, playlists). 'optimize' means the platform selects the best-performing combination from alternatives (asset group optimization like Meta Advantage+ or Google Pmax).
|
|
2018
|
+
*/
|
|
2019
|
+
selection_mode?: 'sequential' | 'optimize';
|
|
1546
2020
|
/**
|
|
1547
2021
|
* Assets within each repetition of this group
|
|
1548
2022
|
*/
|
|
1549
|
-
assets:
|
|
1550
|
-
/**
|
|
1551
|
-
* Identifier for this asset within the group
|
|
1552
|
-
*/
|
|
1553
|
-
asset_id: string;
|
|
1554
|
-
asset_type: AssetContentType1;
|
|
1555
|
-
/**
|
|
1556
|
-
* Optional descriptive label for this asset's purpose. Not used for referencing assets in manifests—use asset_id instead. This field is for human-readable documentation and UI display only.
|
|
1557
|
-
*/
|
|
1558
|
-
asset_role?: string;
|
|
1559
|
-
/**
|
|
1560
|
-
* Whether this asset is required within each repetition of the group
|
|
1561
|
-
*/
|
|
1562
|
-
required: boolean;
|
|
1563
|
-
/**
|
|
1564
|
-
* Technical requirements for this asset. For template formats, use parameters_from_format_id: true to indicate asset parameters must match the format_id parameters (width/height/unit and/or duration_ms).
|
|
1565
|
-
*/
|
|
1566
|
-
requirements?: {
|
|
1567
|
-
[k: string]: unknown | undefined;
|
|
1568
|
-
};
|
|
1569
|
-
}[];
|
|
2023
|
+
assets: BaseGroupAsset[];
|
|
1570
2024
|
})[];
|
|
1571
2025
|
/**
|
|
1572
2026
|
* Delivery method specifications (e.g., hosted, VAST, third-party tags)
|
|
@@ -1575,9 +2029,9 @@ export interface Format {
|
|
|
1575
2029
|
[k: string]: unknown | undefined;
|
|
1576
2030
|
};
|
|
1577
2031
|
/**
|
|
1578
|
-
* List of universal macros supported by this format (e.g., MEDIA_BUY_ID, CACHEBUSTER, DEVICE_ID). Used for validation and developer tooling.
|
|
2032
|
+
* List of universal macros supported by this format (e.g., MEDIA_BUY_ID, CACHEBUSTER, DEVICE_ID). Used for validation and developer tooling. See docs/creative/universal-macros.mdx for full documentation.
|
|
1579
2033
|
*/
|
|
1580
|
-
supported_macros?: string[];
|
|
2034
|
+
supported_macros?: (UniversalMacro | string)[];
|
|
1581
2035
|
/**
|
|
1582
2036
|
* For generative formats: array of format IDs that this format can generate. When a format accepts inputs like brand_manifest and message, this specifies what concrete output formats can be produced (e.g., a generative banner format might output standard image banner formats).
|
|
1583
2037
|
*/
|
|
@@ -1595,6 +2049,16 @@ export interface Format {
|
|
|
1595
2049
|
};
|
|
1596
2050
|
[k: string]: unknown | undefined;
|
|
1597
2051
|
};
|
|
2052
|
+
/**
|
|
2053
|
+
* Accessibility posture of this format. Declares the WCAG conformance level that creatives produced by this format will meet.
|
|
2054
|
+
*/
|
|
2055
|
+
accessibility?: {
|
|
2056
|
+
wcag_level: WCAGLevel;
|
|
2057
|
+
/**
|
|
2058
|
+
* When true, all assets with x-accessibility fields must include those fields. For inspectable assets (image, video, audio), this means providing accessibility metadata like alt_text or captions. For opaque assets (HTML, JavaScript), this means providing self-declared accessibility properties.
|
|
2059
|
+
*/
|
|
2060
|
+
requires_accessible_assets?: boolean;
|
|
2061
|
+
};
|
|
1598
2062
|
/**
|
|
1599
2063
|
* Optional detailed card with carousel and full specifications. Provides rich format documentation similar to ad spec pages.
|
|
1600
2064
|
*/
|
|
@@ -1608,11 +2072,52 @@ export interface Format {
|
|
|
1608
2072
|
};
|
|
1609
2073
|
[k: string]: unknown | undefined;
|
|
1610
2074
|
};
|
|
2075
|
+
/**
|
|
2076
|
+
* Metrics this format can produce in delivery reporting. Buyers receive the intersection of format reported_metrics and product available_metrics. If omitted, the format defers entirely to product-level metric declarations.
|
|
2077
|
+
*
|
|
2078
|
+
* @minItems 1
|
|
2079
|
+
*/
|
|
2080
|
+
reported_metrics?: [AvailableMetric, ...AvailableMetric[]];
|
|
1611
2081
|
[k: string]: unknown | undefined;
|
|
1612
2082
|
}
|
|
1613
2083
|
/**
|
|
1614
2084
|
* Structured format identifier with agent URL and format name
|
|
1615
2085
|
*/
|
|
2086
|
+
export interface BaseIndividualAsset {
|
|
2087
|
+
/**
|
|
2088
|
+
* Discriminator indicating this is an individual asset
|
|
2089
|
+
*/
|
|
2090
|
+
item_type: 'individual';
|
|
2091
|
+
/**
|
|
2092
|
+
* Unique identifier for this asset. Creative manifests MUST use this exact value as the key in the assets object.
|
|
2093
|
+
*/
|
|
2094
|
+
asset_id: string;
|
|
2095
|
+
/**
|
|
2096
|
+
* Optional descriptive label for this asset's purpose (e.g., 'hero_image', 'logo', 'third_party_tracking'). Not used for referencing assets in manifests—use asset_id instead. This field is for human-readable documentation and UI display only.
|
|
2097
|
+
*/
|
|
2098
|
+
asset_role?: string;
|
|
2099
|
+
/**
|
|
2100
|
+
* Whether this asset is required (true) or optional (false). Required assets must be provided for a valid creative. Optional assets enhance the creative but are not mandatory.
|
|
2101
|
+
*/
|
|
2102
|
+
required: boolean;
|
|
2103
|
+
}
|
|
2104
|
+
export interface BaseGroupAsset {
|
|
2105
|
+
/**
|
|
2106
|
+
* Identifier for this asset within the group
|
|
2107
|
+
*/
|
|
2108
|
+
asset_id: string;
|
|
2109
|
+
/**
|
|
2110
|
+
* Optional descriptive label for this asset's purpose. Not used for referencing assets in manifests—use asset_id instead. This field is for human-readable documentation and UI display only.
|
|
2111
|
+
*/
|
|
2112
|
+
asset_role?: string;
|
|
2113
|
+
/**
|
|
2114
|
+
* Whether this asset is required within each repetition of the group
|
|
2115
|
+
*/
|
|
2116
|
+
required: boolean;
|
|
2117
|
+
}
|
|
2118
|
+
/**
|
|
2119
|
+
* Structured format identifier with agent URL and format name. Can reference: (1) a concrete format with fixed dimensions (id only), (2) a template format without parameters (id only), or (3) a template format with parameters (id + dimensions/duration). Template formats accept parameters in format_id while concrete formats have fixed dimensions in their definition. Parameterized format IDs create unique, specific format variants.
|
|
2120
|
+
*/
|
|
1616
2121
|
export interface FormatID3 {
|
|
1617
2122
|
/**
|
|
1618
2123
|
* 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)
|
|
@@ -1644,9 +2149,25 @@ export interface FormatID3 {
|
|
|
1644
2149
|
*/
|
|
1645
2150
|
export type Pacing = 'even' | 'asap' | 'front_loaded';
|
|
1646
2151
|
/**
|
|
1647
|
-
*
|
|
2152
|
+
* Event type to optimize for (e.g. purchase, lead)
|
|
2153
|
+
*/
|
|
2154
|
+
export type MetroAreaSystem1 = 'nielsen_dma' | 'uk_itl1' | 'uk_itl2' | 'eurostat_nuts2' | 'custom';
|
|
2155
|
+
/**
|
|
2156
|
+
* Postal code system (e.g., 'us_zip', 'gb_outward'). System name encodes country and precision.
|
|
1648
2157
|
*/
|
|
1649
2158
|
export type PostalCodeSystem = 'us_zip' | 'us_zip_plus_four' | 'gb_outward' | 'gb_full' | 'ca_fsa' | 'ca_full' | 'de_plz' | 'fr_code_postal' | 'au_postcode';
|
|
2159
|
+
/**
|
|
2160
|
+
* Postal code system (e.g., 'us_zip', 'gb_outward'). System name encodes country and precision.
|
|
2161
|
+
*/
|
|
2162
|
+
export type PostalCodeSystem1 = 'us_zip' | 'us_zip_plus_four' | 'gb_outward' | 'gb_full' | 'ca_fsa' | 'ca_full' | 'de_plz' | 'fr_code_postal' | 'au_postcode';
|
|
2163
|
+
/**
|
|
2164
|
+
* Methods for verifying user age for compliance. Does not include 'inferred' as it is not accepted for regulatory compliance.
|
|
2165
|
+
*/
|
|
2166
|
+
export type AgeVerificationMethod = 'facial_age_estimation' | 'id_document' | 'digital_id' | 'credit_card' | 'world_id';
|
|
2167
|
+
/**
|
|
2168
|
+
* Operating system platforms for device targeting. Browser values from Sec-CH-UA-Platform standard, extended for CTV.
|
|
2169
|
+
*/
|
|
2170
|
+
export type DevicePlatform = 'ios' | 'android' | 'windows' | 'macos' | 'linux' | 'chromeos' | 'tvos' | 'tizen' | 'webos' | 'fire_os' | 'roku_os' | 'unknown';
|
|
1650
2171
|
/**
|
|
1651
2172
|
* JavaScript module type
|
|
1652
2173
|
*/
|
|
@@ -1676,6 +2197,14 @@ export type VASTAsset = {
|
|
|
1676
2197
|
* Tracking events supported by this VAST tag
|
|
1677
2198
|
*/
|
|
1678
2199
|
tracking_events?: VASTTrackingEvent[];
|
|
2200
|
+
/**
|
|
2201
|
+
* URL to captions file (WebVTT, SRT, etc.)
|
|
2202
|
+
*/
|
|
2203
|
+
captions_url?: string;
|
|
2204
|
+
/**
|
|
2205
|
+
* URL to audio description track for visually impaired users
|
|
2206
|
+
*/
|
|
2207
|
+
audio_description_url?: string;
|
|
1679
2208
|
[k: string]: unknown | undefined;
|
|
1680
2209
|
} | {
|
|
1681
2210
|
/**
|
|
@@ -1699,6 +2228,14 @@ export type VASTAsset = {
|
|
|
1699
2228
|
* Tracking events supported by this VAST tag
|
|
1700
2229
|
*/
|
|
1701
2230
|
tracking_events?: VASTTrackingEvent[];
|
|
2231
|
+
/**
|
|
2232
|
+
* URL to captions file (WebVTT, SRT, etc.)
|
|
2233
|
+
*/
|
|
2234
|
+
captions_url?: string;
|
|
2235
|
+
/**
|
|
2236
|
+
* URL to audio description track for visually impaired users
|
|
2237
|
+
*/
|
|
2238
|
+
audio_description_url?: string;
|
|
1702
2239
|
[k: string]: unknown | undefined;
|
|
1703
2240
|
};
|
|
1704
2241
|
/**
|
|
@@ -1738,6 +2275,10 @@ export type DAASTAsset = {
|
|
|
1738
2275
|
* Whether companion display ads are included
|
|
1739
2276
|
*/
|
|
1740
2277
|
companion_ads?: boolean;
|
|
2278
|
+
/**
|
|
2279
|
+
* URL to text transcript of the audio content
|
|
2280
|
+
*/
|
|
2281
|
+
transcript_url?: string;
|
|
1741
2282
|
[k: string]: unknown | undefined;
|
|
1742
2283
|
} | {
|
|
1743
2284
|
/**
|
|
@@ -1761,6 +2302,10 @@ export type DAASTAsset = {
|
|
|
1761
2302
|
* Whether companion display ads are included
|
|
1762
2303
|
*/
|
|
1763
2304
|
companion_ads?: boolean;
|
|
2305
|
+
/**
|
|
2306
|
+
* URL to text transcript of the audio content
|
|
2307
|
+
*/
|
|
2308
|
+
transcript_url?: string;
|
|
1764
2309
|
[k: string]: unknown | undefined;
|
|
1765
2310
|
};
|
|
1766
2311
|
/**
|
|
@@ -1804,9 +2349,9 @@ export interface CreateMediaBuyRequest {
|
|
|
1804
2349
|
*/
|
|
1805
2350
|
buyer_ref: string;
|
|
1806
2351
|
/**
|
|
1807
|
-
* Account to bill for this media buy.
|
|
2352
|
+
* Account to bill for this media buy. The seller maps the agent's brand + operator to an account during sync_accounts; the agent passes that account_id here.
|
|
1808
2353
|
*/
|
|
1809
|
-
account_id
|
|
2354
|
+
account_id: string;
|
|
1810
2355
|
/**
|
|
1811
2356
|
* ID of a proposal from get_products to execute. When provided with total_budget, the publisher converts the proposal's allocation percentages into packages automatically. Alternative to providing packages array.
|
|
1812
2357
|
*/
|
|
@@ -1921,105 +2466,265 @@ export interface PackageRequest {
|
|
|
1921
2466
|
* Whether this package should be created in a paused state. Paused packages do not deliver impressions. Defaults to false.
|
|
1922
2467
|
*/
|
|
1923
2468
|
paused?: boolean;
|
|
2469
|
+
optimization_goal?: OptimizationGoal;
|
|
1924
2470
|
targeting_overlay?: TargetingOverlay;
|
|
1925
2471
|
/**
|
|
1926
2472
|
* Assign existing library creatives to this package with optional weights and placement targeting
|
|
2473
|
+
*
|
|
2474
|
+
* @minItems 1
|
|
1927
2475
|
*/
|
|
1928
|
-
creative_assignments?: CreativeAssignment[];
|
|
2476
|
+
creative_assignments?: [CreativeAssignment, ...CreativeAssignment[]];
|
|
1929
2477
|
/**
|
|
1930
2478
|
* Upload new creative assets and assign to this package (creatives will be added to library). Use creative_assignments instead for existing library creatives.
|
|
1931
2479
|
*
|
|
2480
|
+
* @minItems 1
|
|
1932
2481
|
* @maxItems 100
|
|
1933
2482
|
*/
|
|
1934
|
-
creatives?: CreativeAsset[];
|
|
2483
|
+
creatives?: [CreativeAsset, ...CreativeAsset[]];
|
|
1935
2484
|
ext?: ExtensionObject;
|
|
1936
2485
|
[k: string]: unknown | undefined;
|
|
1937
2486
|
}
|
|
1938
2487
|
/**
|
|
1939
2488
|
* Structured format identifier with agent URL and format name. Can reference: (1) a concrete format with fixed dimensions (id only), (2) a template format without parameters (id only), or (3) a template format with parameters (id + dimensions/duration). Template formats accept parameters in format_id while concrete formats have fixed dimensions in their definition. Parameterized format IDs create unique, specific format variants.
|
|
1940
2489
|
*/
|
|
1941
|
-
export interface
|
|
2490
|
+
export interface OptimizationGoal {
|
|
1942
2491
|
/**
|
|
1943
|
-
*
|
|
2492
|
+
* Event source to optimize against (must be configured on this account via sync_event_sources)
|
|
1944
2493
|
*/
|
|
1945
|
-
|
|
2494
|
+
event_source_id: string;
|
|
2495
|
+
event_type: EventType;
|
|
1946
2496
|
/**
|
|
1947
|
-
*
|
|
2497
|
+
* Target return on ad spend (e.g. 4.0 = $4 conversion value per $1 spent). Mutually exclusive with target_cpa.
|
|
1948
2498
|
*/
|
|
1949
|
-
|
|
2499
|
+
target_roas?: number;
|
|
1950
2500
|
/**
|
|
1951
|
-
*
|
|
2501
|
+
* Target cost per acquisition in the buy currency. Mutually exclusive with target_roas.
|
|
1952
2502
|
*/
|
|
1953
|
-
|
|
1954
|
-
system: MetroAreaSystem;
|
|
1955
|
-
/**
|
|
1956
|
-
* Metro codes within the system (e.g., ['501', '602'] for Nielsen DMAs)
|
|
1957
|
-
*
|
|
1958
|
-
* @minItems 1
|
|
1959
|
-
*/
|
|
1960
|
-
values: [string, ...string[]];
|
|
1961
|
-
}[];
|
|
2503
|
+
target_cpa?: number;
|
|
1962
2504
|
/**
|
|
1963
|
-
*
|
|
2505
|
+
* Attribution window for this optimization goal. Values must match an option declared in the seller's conversion_tracking.attribution_windows capability. When omitted, the seller uses their default window.
|
|
1964
2506
|
*/
|
|
1965
|
-
|
|
1966
|
-
system: PostalCodeSystem;
|
|
2507
|
+
attribution_window?: {
|
|
1967
2508
|
/**
|
|
1968
|
-
*
|
|
1969
|
-
*
|
|
1970
|
-
* @minItems 1
|
|
2509
|
+
* Click-through attribution window (e.g. '7d', '28d', '30d')
|
|
1971
2510
|
*/
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
* AXE segment ID to exclude from targeting
|
|
1980
|
-
*/
|
|
1981
|
-
axe_exclude_segment?: string;
|
|
1982
|
-
frequency_cap?: FrequencyCap;
|
|
1983
|
-
property_list?: PropertyListReference;
|
|
2511
|
+
click_through: string;
|
|
2512
|
+
/**
|
|
2513
|
+
* View-through attribution window (e.g. '1d', '7d')
|
|
2514
|
+
*/
|
|
2515
|
+
view_through?: string;
|
|
2516
|
+
[k: string]: unknown | undefined;
|
|
2517
|
+
};
|
|
1984
2518
|
[k: string]: unknown | undefined;
|
|
1985
2519
|
}
|
|
1986
2520
|
/**
|
|
1987
|
-
*
|
|
2521
|
+
* Optional restriction overlays for media buys. Most targeting should be expressed in the brief and handled by the publisher. These fields are for functional restrictions: geographic (RCT testing, regulatory compliance), age verification (alcohol, gambling), device platform (app compatibility), and language (localization).
|
|
1988
2522
|
*/
|
|
1989
|
-
export interface
|
|
2523
|
+
export interface TargetingOverlay {
|
|
1990
2524
|
/**
|
|
1991
|
-
*
|
|
2525
|
+
* Restrict delivery to specific countries. ISO 3166-1 alpha-2 codes (e.g., 'US', 'GB', 'DE').
|
|
2526
|
+
*
|
|
2527
|
+
* @minItems 1
|
|
1992
2528
|
*/
|
|
1993
|
-
|
|
1994
|
-
[k: string]: unknown | undefined;
|
|
1995
|
-
}
|
|
1996
|
-
/**
|
|
1997
|
-
* Reference to a property list for targeting specific properties within this product. The package runs on the intersection of the product's publisher_properties and this list. Sellers SHOULD return a validation error if the product has property_targeting_allowed: false.
|
|
1998
|
-
*/
|
|
1999
|
-
export interface CreativeAssignment {
|
|
2529
|
+
geo_countries?: [string, ...string[]];
|
|
2000
2530
|
/**
|
|
2001
|
-
*
|
|
2531
|
+
* Exclude specific countries from delivery. ISO 3166-1 alpha-2 codes (e.g., 'US', 'GB', 'DE').
|
|
2532
|
+
*
|
|
2533
|
+
* @minItems 1
|
|
2002
2534
|
*/
|
|
2003
|
-
|
|
2535
|
+
geo_countries_exclude?: [string, ...string[]];
|
|
2004
2536
|
/**
|
|
2005
|
-
*
|
|
2537
|
+
* Restrict delivery to specific regions/states. ISO 3166-2 subdivision codes (e.g., 'US-CA', 'GB-SCT').
|
|
2538
|
+
*
|
|
2539
|
+
* @minItems 1
|
|
2006
2540
|
*/
|
|
2007
|
-
|
|
2541
|
+
geo_regions?: [string, ...string[]];
|
|
2008
2542
|
/**
|
|
2009
|
-
*
|
|
2543
|
+
* Exclude specific regions/states from delivery. ISO 3166-2 subdivision codes (e.g., 'US-CA', 'GB-SCT').
|
|
2010
2544
|
*
|
|
2011
2545
|
* @minItems 1
|
|
2012
2546
|
*/
|
|
2013
|
-
|
|
2014
|
-
[k: string]: unknown | undefined;
|
|
2015
|
-
}
|
|
2016
|
-
/**
|
|
2017
|
-
* Creative asset for upload to library - supports static assets, generative formats, and third-party snippets
|
|
2018
|
-
*/
|
|
2019
|
-
export interface CreativeAsset {
|
|
2547
|
+
geo_regions_exclude?: [string, ...string[]];
|
|
2020
2548
|
/**
|
|
2021
|
-
*
|
|
2022
|
-
|
|
2549
|
+
* Restrict delivery to specific metro areas. Each entry specifies the classification system and target values. Seller must declare supported systems in get_adcp_capabilities.
|
|
2550
|
+
*
|
|
2551
|
+
* @minItems 1
|
|
2552
|
+
*/
|
|
2553
|
+
geo_metros?: [
|
|
2554
|
+
{
|
|
2555
|
+
system: MetroAreaSystem;
|
|
2556
|
+
/**
|
|
2557
|
+
* Metro codes within the system (e.g., ['501', '602'] for Nielsen DMAs)
|
|
2558
|
+
*
|
|
2559
|
+
* @minItems 1
|
|
2560
|
+
*/
|
|
2561
|
+
values: [string, ...string[]];
|
|
2562
|
+
},
|
|
2563
|
+
...{
|
|
2564
|
+
system: MetroAreaSystem;
|
|
2565
|
+
/**
|
|
2566
|
+
* Metro codes within the system (e.g., ['501', '602'] for Nielsen DMAs)
|
|
2567
|
+
*
|
|
2568
|
+
* @minItems 1
|
|
2569
|
+
*/
|
|
2570
|
+
values: [string, ...string[]];
|
|
2571
|
+
}[]
|
|
2572
|
+
];
|
|
2573
|
+
/**
|
|
2574
|
+
* Exclude specific metro areas from delivery. Each entry specifies the classification system and excluded values. Seller must declare supported systems in get_adcp_capabilities.
|
|
2575
|
+
*
|
|
2576
|
+
* @minItems 1
|
|
2577
|
+
*/
|
|
2578
|
+
geo_metros_exclude?: [
|
|
2579
|
+
{
|
|
2580
|
+
system: MetroAreaSystem1;
|
|
2581
|
+
/**
|
|
2582
|
+
* Metro codes to exclude within the system (e.g., ['501', '602'] for Nielsen DMAs)
|
|
2583
|
+
*
|
|
2584
|
+
* @minItems 1
|
|
2585
|
+
*/
|
|
2586
|
+
values: [string, ...string[]];
|
|
2587
|
+
},
|
|
2588
|
+
...{
|
|
2589
|
+
system: MetroAreaSystem1;
|
|
2590
|
+
/**
|
|
2591
|
+
* Metro codes to exclude within the system (e.g., ['501', '602'] for Nielsen DMAs)
|
|
2592
|
+
*
|
|
2593
|
+
* @minItems 1
|
|
2594
|
+
*/
|
|
2595
|
+
values: [string, ...string[]];
|
|
2596
|
+
}[]
|
|
2597
|
+
];
|
|
2598
|
+
/**
|
|
2599
|
+
* Restrict delivery to specific postal areas. Each entry specifies the postal system and target values. Seller must declare supported systems in get_adcp_capabilities.
|
|
2600
|
+
*
|
|
2601
|
+
* @minItems 1
|
|
2602
|
+
*/
|
|
2603
|
+
geo_postal_areas?: [
|
|
2604
|
+
{
|
|
2605
|
+
system: PostalCodeSystem;
|
|
2606
|
+
/**
|
|
2607
|
+
* Postal codes within the system (e.g., ['10001', '10002'] for us_zip)
|
|
2608
|
+
*
|
|
2609
|
+
* @minItems 1
|
|
2610
|
+
*/
|
|
2611
|
+
values: [string, ...string[]];
|
|
2612
|
+
},
|
|
2613
|
+
...{
|
|
2614
|
+
system: PostalCodeSystem;
|
|
2615
|
+
/**
|
|
2616
|
+
* Postal codes within the system (e.g., ['10001', '10002'] for us_zip)
|
|
2617
|
+
*
|
|
2618
|
+
* @minItems 1
|
|
2619
|
+
*/
|
|
2620
|
+
values: [string, ...string[]];
|
|
2621
|
+
}[]
|
|
2622
|
+
];
|
|
2623
|
+
/**
|
|
2624
|
+
* Exclude specific postal areas from delivery. Each entry specifies the postal system and excluded values. Seller must declare supported systems in get_adcp_capabilities.
|
|
2625
|
+
*
|
|
2626
|
+
* @minItems 1
|
|
2627
|
+
*/
|
|
2628
|
+
geo_postal_areas_exclude?: [
|
|
2629
|
+
{
|
|
2630
|
+
system: PostalCodeSystem1;
|
|
2631
|
+
/**
|
|
2632
|
+
* Postal codes to exclude within the system (e.g., ['10001', '10002'] for us_zip)
|
|
2633
|
+
*
|
|
2634
|
+
* @minItems 1
|
|
2635
|
+
*/
|
|
2636
|
+
values: [string, ...string[]];
|
|
2637
|
+
},
|
|
2638
|
+
...{
|
|
2639
|
+
system: PostalCodeSystem1;
|
|
2640
|
+
/**
|
|
2641
|
+
* Postal codes to exclude within the system (e.g., ['10001', '10002'] for us_zip)
|
|
2642
|
+
*
|
|
2643
|
+
* @minItems 1
|
|
2644
|
+
*/
|
|
2645
|
+
values: [string, ...string[]];
|
|
2646
|
+
}[]
|
|
2647
|
+
];
|
|
2648
|
+
/**
|
|
2649
|
+
* AXE segment ID to include for targeting
|
|
2650
|
+
*/
|
|
2651
|
+
axe_include_segment?: string;
|
|
2652
|
+
/**
|
|
2653
|
+
* AXE segment ID to exclude from targeting
|
|
2654
|
+
*/
|
|
2655
|
+
axe_exclude_segment?: string;
|
|
2656
|
+
frequency_cap?: FrequencyCap;
|
|
2657
|
+
property_list?: PropertyListReference;
|
|
2658
|
+
/**
|
|
2659
|
+
* Age restriction for compliance. Use for legal requirements (alcohol, gambling), not audience targeting.
|
|
2660
|
+
*/
|
|
2661
|
+
age_restriction?: {
|
|
2662
|
+
/**
|
|
2663
|
+
* Minimum age required
|
|
2664
|
+
*/
|
|
2665
|
+
min: number;
|
|
2666
|
+
/**
|
|
2667
|
+
* Whether verified age (not inferred) is required for compliance
|
|
2668
|
+
*/
|
|
2669
|
+
verification_required?: boolean;
|
|
2670
|
+
/**
|
|
2671
|
+
* Accepted verification methods. If omitted, any method the platform supports is acceptable.
|
|
2672
|
+
*
|
|
2673
|
+
* @minItems 1
|
|
2674
|
+
*/
|
|
2675
|
+
accepted_methods?: [AgeVerificationMethod, ...AgeVerificationMethod[]];
|
|
2676
|
+
};
|
|
2677
|
+
/**
|
|
2678
|
+
* Restrict to specific platforms. Use for technical compatibility (app only works on iOS). Values from Sec-CH-UA-Platform standard, extended for CTV.
|
|
2679
|
+
*
|
|
2680
|
+
* @minItems 1
|
|
2681
|
+
*/
|
|
2682
|
+
device_platform?: [DevicePlatform, ...DevicePlatform[]];
|
|
2683
|
+
/**
|
|
2684
|
+
* Restrict to users with specific language preferences. ISO 639-1 codes (e.g., 'en', 'es', 'fr').
|
|
2685
|
+
*
|
|
2686
|
+
* @minItems 1
|
|
2687
|
+
*/
|
|
2688
|
+
language?: [string, ...string[]];
|
|
2689
|
+
[k: string]: unknown | undefined;
|
|
2690
|
+
}
|
|
2691
|
+
/**
|
|
2692
|
+
* Frequency capping settings for package-level application
|
|
2693
|
+
*/
|
|
2694
|
+
export interface FrequencyCap {
|
|
2695
|
+
/**
|
|
2696
|
+
* Minutes to suppress after impression
|
|
2697
|
+
*/
|
|
2698
|
+
suppress_minutes: number;
|
|
2699
|
+
[k: string]: unknown | undefined;
|
|
2700
|
+
}
|
|
2701
|
+
/**
|
|
2702
|
+
* Reference to a property list for targeting specific properties within this product. The package runs on the intersection of the product's publisher_properties and this list. Sellers SHOULD return a validation error if the product has property_targeting_allowed: false.
|
|
2703
|
+
*/
|
|
2704
|
+
export interface CreativeAssignment {
|
|
2705
|
+
/**
|
|
2706
|
+
* Unique identifier for the creative
|
|
2707
|
+
*/
|
|
2708
|
+
creative_id: string;
|
|
2709
|
+
/**
|
|
2710
|
+
* Delivery weight for this creative
|
|
2711
|
+
*/
|
|
2712
|
+
weight?: number;
|
|
2713
|
+
/**
|
|
2714
|
+
* Optional array of placement IDs where this creative should run. When omitted, the creative runs on all placements in the package. References placement_id values from the product's placements array.
|
|
2715
|
+
*
|
|
2716
|
+
* @minItems 1
|
|
2717
|
+
*/
|
|
2718
|
+
placement_ids?: [string, ...string[]];
|
|
2719
|
+
[k: string]: unknown | undefined;
|
|
2720
|
+
}
|
|
2721
|
+
/**
|
|
2722
|
+
* Creative asset for upload to library - supports static assets, generative formats, and third-party snippets
|
|
2723
|
+
*/
|
|
2724
|
+
export interface CreativeAsset {
|
|
2725
|
+
/**
|
|
2726
|
+
* Unique identifier for the creative
|
|
2727
|
+
*/
|
|
2023
2728
|
creative_id: string;
|
|
2024
2729
|
/**
|
|
2025
2730
|
* Human-readable creative name
|
|
@@ -2203,6 +2908,18 @@ export interface VideoAsset {
|
|
|
2203
2908
|
* True peak level in dBFS
|
|
2204
2909
|
*/
|
|
2205
2910
|
audio_true_peak_dbfs?: number;
|
|
2911
|
+
/**
|
|
2912
|
+
* URL to captions file (WebVTT, SRT, etc.)
|
|
2913
|
+
*/
|
|
2914
|
+
captions_url?: string;
|
|
2915
|
+
/**
|
|
2916
|
+
* URL to text transcript of the video content
|
|
2917
|
+
*/
|
|
2918
|
+
transcript_url?: string;
|
|
2919
|
+
/**
|
|
2920
|
+
* URL to audio description track for visually impaired users
|
|
2921
|
+
*/
|
|
2922
|
+
audio_description_url?: string;
|
|
2206
2923
|
[k: string]: unknown | undefined;
|
|
2207
2924
|
}
|
|
2208
2925
|
/**
|
|
@@ -2253,6 +2970,10 @@ export interface AudioAsset {
|
|
|
2253
2970
|
* True peak level in dBFS
|
|
2254
2971
|
*/
|
|
2255
2972
|
true_peak_dbfs?: number;
|
|
2973
|
+
/**
|
|
2974
|
+
* URL to text transcript of the audio content
|
|
2975
|
+
*/
|
|
2976
|
+
transcript_url?: string;
|
|
2256
2977
|
[k: string]: unknown | undefined;
|
|
2257
2978
|
}
|
|
2258
2979
|
/**
|
|
@@ -2281,6 +3002,27 @@ export interface HTMLAsset {
|
|
|
2281
3002
|
* HTML version (e.g., 'HTML5')
|
|
2282
3003
|
*/
|
|
2283
3004
|
version?: string;
|
|
3005
|
+
/**
|
|
3006
|
+
* Self-declared accessibility properties for this opaque creative
|
|
3007
|
+
*/
|
|
3008
|
+
accessibility?: {
|
|
3009
|
+
/**
|
|
3010
|
+
* Text alternative describing the creative content
|
|
3011
|
+
*/
|
|
3012
|
+
alt_text?: string;
|
|
3013
|
+
/**
|
|
3014
|
+
* Whether the creative can be fully operated via keyboard
|
|
3015
|
+
*/
|
|
3016
|
+
keyboard_navigable?: boolean;
|
|
3017
|
+
/**
|
|
3018
|
+
* Whether the creative respects prefers-reduced-motion or provides pause/stop controls
|
|
3019
|
+
*/
|
|
3020
|
+
motion_control?: boolean;
|
|
3021
|
+
/**
|
|
3022
|
+
* Whether the creative has been tested with screen readers
|
|
3023
|
+
*/
|
|
3024
|
+
screen_reader_tested?: boolean;
|
|
3025
|
+
};
|
|
2284
3026
|
[k: string]: unknown | undefined;
|
|
2285
3027
|
}
|
|
2286
3028
|
/**
|
|
@@ -2306,6 +3048,27 @@ export interface JavaScriptAsset {
|
|
|
2306
3048
|
*/
|
|
2307
3049
|
content: string;
|
|
2308
3050
|
module_type?: JavaScriptModuleType;
|
|
3051
|
+
/**
|
|
3052
|
+
* Self-declared accessibility properties for this opaque creative
|
|
3053
|
+
*/
|
|
3054
|
+
accessibility?: {
|
|
3055
|
+
/**
|
|
3056
|
+
* Text alternative describing the creative content
|
|
3057
|
+
*/
|
|
3058
|
+
alt_text?: string;
|
|
3059
|
+
/**
|
|
3060
|
+
* Whether the creative can be fully operated via keyboard
|
|
3061
|
+
*/
|
|
3062
|
+
keyboard_navigable?: boolean;
|
|
3063
|
+
/**
|
|
3064
|
+
* Whether the creative respects prefers-reduced-motion or provides pause/stop controls
|
|
3065
|
+
*/
|
|
3066
|
+
motion_control?: boolean;
|
|
3067
|
+
/**
|
|
3068
|
+
* Whether the creative has been tested with screen readers
|
|
3069
|
+
*/
|
|
3070
|
+
screen_reader_tested?: boolean;
|
|
3071
|
+
};
|
|
2309
3072
|
[k: string]: unknown | undefined;
|
|
2310
3073
|
}
|
|
2311
3074
|
/**
|
|
@@ -2345,28 +3108,6 @@ export interface PromotedOfferings {
|
|
|
2345
3108
|
/**
|
|
2346
3109
|
* Inline brand manifest object
|
|
2347
3110
|
*/
|
|
2348
|
-
export interface PromotedProducts {
|
|
2349
|
-
/**
|
|
2350
|
-
* Direct product SKU references from the brand manifest product catalog
|
|
2351
|
-
*/
|
|
2352
|
-
manifest_skus?: string[];
|
|
2353
|
-
/**
|
|
2354
|
-
* Select products by tags from the brand manifest product catalog (e.g., 'organic', 'sauces', 'holiday')
|
|
2355
|
-
*/
|
|
2356
|
-
manifest_tags?: string[];
|
|
2357
|
-
/**
|
|
2358
|
-
* Select products from a specific category in the brand manifest product catalog (e.g., 'beverages/soft-drinks', 'food/sauces')
|
|
2359
|
-
*/
|
|
2360
|
-
manifest_category?: string;
|
|
2361
|
-
/**
|
|
2362
|
-
* Natural language query to select products from the brand manifest (e.g., 'all Kraft Heinz pasta sauces', 'organic products under $20')
|
|
2363
|
-
*/
|
|
2364
|
-
manifest_query?: string;
|
|
2365
|
-
[k: string]: unknown | undefined;
|
|
2366
|
-
}
|
|
2367
|
-
/**
|
|
2368
|
-
* A promotable offering from a brand. Can represent a campaign, product promotion, service, or any other thing the brand wants to make available. Offerings can be promoted via traditional creatives (using portfolio_ref or assets) or conversational SI experiences (via si_agent_url at the promoted-offerings level).
|
|
2369
|
-
*/
|
|
2370
3111
|
export interface Offering {
|
|
2371
3112
|
/**
|
|
2372
3113
|
* Unique identifier for this offering. Used by hosts to reference specific offerings in si_get_offering calls.
|
|
@@ -2526,9 +3267,25 @@ export interface Account {
|
|
|
2526
3267
|
*/
|
|
2527
3268
|
billing_proxy?: string;
|
|
2528
3269
|
/**
|
|
2529
|
-
* Account status
|
|
3270
|
+
* Account status. pending_approval: seller reviewing (credit, contracts). payment_required: credit limit reached or funds depleted. suspended: was active, now paused. closed: terminated.
|
|
3271
|
+
*/
|
|
3272
|
+
status: 'active' | 'pending_approval' | 'payment_required' | 'suspended' | 'closed';
|
|
3273
|
+
/**
|
|
3274
|
+
* House domain where brand.json is hosted. Canonical identity anchor for the brand.
|
|
2530
3275
|
*/
|
|
2531
|
-
|
|
3276
|
+
house?: string;
|
|
3277
|
+
/**
|
|
3278
|
+
* Brand ID within the house portfolio (from brand.json)
|
|
3279
|
+
*/
|
|
3280
|
+
brand_id?: string;
|
|
3281
|
+
/**
|
|
3282
|
+
* Domain of the entity operating this account
|
|
3283
|
+
*/
|
|
3284
|
+
operator?: string;
|
|
3285
|
+
/**
|
|
3286
|
+
* Who is invoiced on this account. brand: seller invoices the brand directly. operator: seller invoices the operator (agency). agent: agent consolidates billing.
|
|
3287
|
+
*/
|
|
3288
|
+
billing?: 'brand' | 'operator' | 'agent';
|
|
2532
3289
|
/**
|
|
2533
3290
|
* Identifier for the rate card applied to this account
|
|
2534
3291
|
*/
|
|
@@ -2545,6 +3302,7 @@ export interface Account {
|
|
|
2545
3302
|
currency: string;
|
|
2546
3303
|
};
|
|
2547
3304
|
ext?: ExtensionObject;
|
|
3305
|
+
[k: string]: unknown | undefined;
|
|
2548
3306
|
}
|
|
2549
3307
|
/**
|
|
2550
3308
|
* Extension object for platform-specific, vendor-namespaced parameters. Extensions are always optional and must be namespaced under a vendor/platform key (e.g., ext.gam, ext.roku). Used for custom capabilities, partner-specific configuration, and features being proposed for standardization.
|
|
@@ -2588,6 +3346,7 @@ export interface Package {
|
|
|
2588
3346
|
* Format IDs that creative assets will be provided for this package
|
|
2589
3347
|
*/
|
|
2590
3348
|
format_ids_to_provide?: FormatID[];
|
|
3349
|
+
optimization_goal?: OptimizationGoal;
|
|
2591
3350
|
/**
|
|
2592
3351
|
* Whether this package is paused by the buyer. Paused packages do not deliver impressions. Defaults to false.
|
|
2593
3352
|
*/
|
|
@@ -2596,7 +3355,7 @@ export interface Package {
|
|
|
2596
3355
|
[k: string]: unknown | undefined;
|
|
2597
3356
|
}
|
|
2598
3357
|
/**
|
|
2599
|
-
* Optional
|
|
3358
|
+
* Optional restriction overlays for media buys. Most targeting should be expressed in the brief and handled by the publisher. These fields are for functional restrictions: geographic (RCT testing, regulatory compliance), age verification (alcohol, gambling), device platform (app compatibility), and language (localization).
|
|
2600
3359
|
*/
|
|
2601
3360
|
export interface CreateMediaBuyError {
|
|
2602
3361
|
/**
|
|
@@ -2794,19 +3553,7 @@ export interface ListCreativesRequest {
|
|
|
2794
3553
|
field?: CreativeSortField;
|
|
2795
3554
|
direction?: SortDirection;
|
|
2796
3555
|
};
|
|
2797
|
-
|
|
2798
|
-
* Pagination parameters
|
|
2799
|
-
*/
|
|
2800
|
-
pagination?: {
|
|
2801
|
-
/**
|
|
2802
|
-
* Maximum number of creatives to return
|
|
2803
|
-
*/
|
|
2804
|
-
limit?: number;
|
|
2805
|
-
/**
|
|
2806
|
-
* Number of creatives to skip
|
|
2807
|
-
*/
|
|
2808
|
-
offset?: number;
|
|
2809
|
-
};
|
|
3556
|
+
pagination?: PaginationRequest;
|
|
2810
3557
|
/**
|
|
2811
3558
|
* Include package assignment information in response
|
|
2812
3559
|
*/
|
|
@@ -2832,24 +3579,34 @@ export interface ListCreativesRequest {
|
|
|
2832
3579
|
export interface CreativeFilters {
|
|
2833
3580
|
/**
|
|
2834
3581
|
* Filter creatives by owning accounts. Useful for agencies managing multiple client accounts.
|
|
3582
|
+
*
|
|
3583
|
+
* @minItems 1
|
|
2835
3584
|
*/
|
|
2836
|
-
account_ids?: string[];
|
|
3585
|
+
account_ids?: [string, ...string[]];
|
|
2837
3586
|
/**
|
|
2838
3587
|
* Filter by creative format types (e.g., video, audio, display)
|
|
3588
|
+
*
|
|
3589
|
+
* @minItems 1
|
|
2839
3590
|
*/
|
|
2840
|
-
formats?: string[];
|
|
3591
|
+
formats?: [string, ...string[]];
|
|
2841
3592
|
/**
|
|
2842
3593
|
* Filter by creative approval statuses
|
|
3594
|
+
*
|
|
3595
|
+
* @minItems 1
|
|
2843
3596
|
*/
|
|
2844
|
-
statuses?: CreativeStatus[];
|
|
3597
|
+
statuses?: [CreativeStatus, ...CreativeStatus[]];
|
|
2845
3598
|
/**
|
|
2846
3599
|
* Filter by creative tags (all tags must match)
|
|
3600
|
+
*
|
|
3601
|
+
* @minItems 1
|
|
2847
3602
|
*/
|
|
2848
|
-
tags?: string[];
|
|
3603
|
+
tags?: [string, ...string[]];
|
|
2849
3604
|
/**
|
|
2850
3605
|
* Filter by creative tags (any tag must match)
|
|
3606
|
+
*
|
|
3607
|
+
* @minItems 1
|
|
2851
3608
|
*/
|
|
2852
|
-
tags_any?: string[];
|
|
3609
|
+
tags_any?: [string, ...string[]];
|
|
2853
3610
|
/**
|
|
2854
3611
|
* Filter by creative names containing this text (case-insensitive)
|
|
2855
3612
|
*/
|
|
@@ -2857,9 +3614,10 @@ export interface CreativeFilters {
|
|
|
2857
3614
|
/**
|
|
2858
3615
|
* Filter by specific creative IDs
|
|
2859
3616
|
*
|
|
3617
|
+
* @minItems 1
|
|
2860
3618
|
* @maxItems 100
|
|
2861
3619
|
*/
|
|
2862
|
-
creative_ids?: string[];
|
|
3620
|
+
creative_ids?: [string, ...string[]];
|
|
2863
3621
|
/**
|
|
2864
3622
|
* Filter creatives created after this date (ISO 8601)
|
|
2865
3623
|
*/
|
|
@@ -2878,16 +3636,22 @@ export interface CreativeFilters {
|
|
|
2878
3636
|
updated_before?: string;
|
|
2879
3637
|
/**
|
|
2880
3638
|
* Filter creatives assigned to any of these packages
|
|
3639
|
+
*
|
|
3640
|
+
* @minItems 1
|
|
2881
3641
|
*/
|
|
2882
|
-
assigned_to_packages?: string[];
|
|
3642
|
+
assigned_to_packages?: [string, ...string[]];
|
|
2883
3643
|
/**
|
|
2884
3644
|
* Filter creatives assigned to any of these media buys
|
|
3645
|
+
*
|
|
3646
|
+
* @minItems 1
|
|
2885
3647
|
*/
|
|
2886
|
-
media_buy_ids?: string[];
|
|
3648
|
+
media_buy_ids?: [string, ...string[]];
|
|
2887
3649
|
/**
|
|
2888
3650
|
* Filter creatives assigned to media buys with any of these buyer references
|
|
3651
|
+
*
|
|
3652
|
+
* @minItems 1
|
|
2889
3653
|
*/
|
|
2890
|
-
buyer_refs?: string[];
|
|
3654
|
+
buyer_refs?: [string, ...string[]];
|
|
2891
3655
|
/**
|
|
2892
3656
|
* Filter for unassigned creatives when true, assigned creatives when false
|
|
2893
3657
|
*/
|
|
@@ -2899,7 +3663,7 @@ export interface CreativeFilters {
|
|
|
2899
3663
|
[k: string]: unknown | undefined;
|
|
2900
3664
|
}
|
|
2901
3665
|
/**
|
|
2902
|
-
*
|
|
3666
|
+
* Standard cursor-based pagination parameters for list operations
|
|
2903
3667
|
*/
|
|
2904
3668
|
/**
|
|
2905
3669
|
* Sort direction for list queries
|
|
@@ -2952,11 +3716,11 @@ export interface ListCreativesResponse {
|
|
|
2952
3716
|
/**
|
|
2953
3717
|
* Total number of creatives matching filters (across all pages)
|
|
2954
3718
|
*/
|
|
2955
|
-
total_matching
|
|
3719
|
+
total_matching?: number;
|
|
2956
3720
|
/**
|
|
2957
3721
|
* Number of creatives returned in this response
|
|
2958
3722
|
*/
|
|
2959
|
-
returned
|
|
3723
|
+
returned?: number;
|
|
2960
3724
|
/**
|
|
2961
3725
|
* List of filters that were applied to the query
|
|
2962
3726
|
*/
|
|
@@ -2969,31 +3733,7 @@ export interface ListCreativesResponse {
|
|
|
2969
3733
|
direction?: SortDirection;
|
|
2970
3734
|
};
|
|
2971
3735
|
};
|
|
2972
|
-
|
|
2973
|
-
* Pagination information for navigating results
|
|
2974
|
-
*/
|
|
2975
|
-
pagination: {
|
|
2976
|
-
/**
|
|
2977
|
-
* Maximum number of results requested
|
|
2978
|
-
*/
|
|
2979
|
-
limit: number;
|
|
2980
|
-
/**
|
|
2981
|
-
* Number of results skipped
|
|
2982
|
-
*/
|
|
2983
|
-
offset: number;
|
|
2984
|
-
/**
|
|
2985
|
-
* Whether more results are available
|
|
2986
|
-
*/
|
|
2987
|
-
has_more: boolean;
|
|
2988
|
-
/**
|
|
2989
|
-
* Total number of pages available
|
|
2990
|
-
*/
|
|
2991
|
-
total_pages?: number;
|
|
2992
|
-
/**
|
|
2993
|
-
* Current page number (1-based)
|
|
2994
|
-
*/
|
|
2995
|
-
current_page?: number;
|
|
2996
|
-
};
|
|
3736
|
+
pagination: PaginationResponse;
|
|
2997
3737
|
/**
|
|
2998
3738
|
* Array of creative assets matching the query
|
|
2999
3739
|
*/
|
|
@@ -3132,7 +3872,7 @@ export interface ListCreativesResponse {
|
|
|
3132
3872
|
ext?: ExtensionObject;
|
|
3133
3873
|
}
|
|
3134
3874
|
/**
|
|
3135
|
-
*
|
|
3875
|
+
* Standard cursor-based pagination metadata for list responses
|
|
3136
3876
|
*/
|
|
3137
3877
|
/**
|
|
3138
3878
|
* Request parameters for updating campaign and package settings
|
|
@@ -3195,6 +3935,7 @@ export type PackageUpdate = {
|
|
|
3195
3935
|
* Pause/resume specific package (true = paused, false = active)
|
|
3196
3936
|
*/
|
|
3197
3937
|
paused?: boolean;
|
|
3938
|
+
optimization_goal?: OptimizationGoal;
|
|
3198
3939
|
targeting_overlay?: TargetingOverlay;
|
|
3199
3940
|
/**
|
|
3200
3941
|
* Replace creative assignments for this package with optional weights and placement targeting. Uses replacement semantics - omit to leave assignments unchanged.
|
|
@@ -3203,9 +3944,10 @@ export type PackageUpdate = {
|
|
|
3203
3944
|
/**
|
|
3204
3945
|
* Upload new creative assets and assign to this package (creatives will be added to library). Use creative_assignments instead for existing library creatives.
|
|
3205
3946
|
*
|
|
3947
|
+
* @minItems 1
|
|
3206
3948
|
* @maxItems 100
|
|
3207
3949
|
*/
|
|
3208
|
-
creatives?: CreativeAsset[];
|
|
3950
|
+
creatives?: [CreativeAsset, ...CreativeAsset[]];
|
|
3209
3951
|
ext?: ExtensionObject;
|
|
3210
3952
|
[k: string]: unknown | undefined;
|
|
3211
3953
|
} & {
|
|
@@ -3263,6 +4005,10 @@ export type MediaBuyStatus = 'pending_activation' | 'active' | 'paused' | 'compl
|
|
|
3263
4005
|
* Request parameters for retrieving comprehensive delivery metrics
|
|
3264
4006
|
*/
|
|
3265
4007
|
export interface GetMediaBuyDeliveryRequest {
|
|
4008
|
+
/**
|
|
4009
|
+
* Filter delivery data to a specific account. When provided, only returns media buys belonging to this account. When omitted, returns data across all accessible accounts. Optional if the agent has a single account.
|
|
4010
|
+
*/
|
|
4011
|
+
account_id?: string;
|
|
3266
4012
|
/**
|
|
3267
4013
|
* Array of publisher media buy IDs to get delivery data for
|
|
3268
4014
|
*/
|
|
@@ -3276,11 +4022,11 @@ export interface GetMediaBuyDeliveryRequest {
|
|
|
3276
4022
|
*/
|
|
3277
4023
|
status_filter?: MediaBuyStatus | MediaBuyStatus[];
|
|
3278
4024
|
/**
|
|
3279
|
-
* Start date for reporting period (YYYY-MM-DD)
|
|
4025
|
+
* Start date for reporting period (YYYY-MM-DD). When omitted along with end_date, returns campaign lifetime data. Only accepted when the product's reporting_capabilities.date_range_support is 'date_range'.
|
|
3280
4026
|
*/
|
|
3281
4027
|
start_date?: string;
|
|
3282
4028
|
/**
|
|
3283
|
-
* End date for reporting period (YYYY-MM-DD)
|
|
4029
|
+
* End date for reporting period (YYYY-MM-DD). When omitted along with start_date, returns campaign lifetime data. Only accepted when the product's reporting_capabilities.date_range_support is 'date_range'.
|
|
3284
4030
|
*/
|
|
3285
4031
|
end_date?: string;
|
|
3286
4032
|
context?: ContextObject;
|
|
@@ -3289,14 +4035,18 @@ export interface GetMediaBuyDeliveryRequest {
|
|
|
3289
4035
|
/**
|
|
3290
4036
|
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
3291
4037
|
*/
|
|
4038
|
+
/**
|
|
4039
|
+
* Attribution model used to assign credit when multiple touchpoints exist
|
|
4040
|
+
*/
|
|
4041
|
+
export type AttributionModel = 'last_touch' | 'first_touch' | 'linear' | 'time_decay' | 'data_driven';
|
|
3292
4042
|
/**
|
|
3293
4043
|
* Pricing model used for this media buy
|
|
3294
4044
|
*/
|
|
3295
|
-
export type PricingModel = 'cpm' | 'vcpm' | 'cpc' | 'cpcv' | 'cpv' | 'cpp' | 'flat_rate';
|
|
4045
|
+
export type PricingModel = 'cpm' | 'vcpm' | 'cpc' | 'cpcv' | 'cpv' | 'cpp' | 'cpa' | 'flat_rate' | 'time';
|
|
3296
4046
|
/**
|
|
3297
|
-
* The
|
|
4047
|
+
* The event type
|
|
3298
4048
|
*/
|
|
3299
|
-
export type PricingModel1 = 'cpm' | 'vcpm' | 'cpc' | 'cpcv' | 'cpv' | 'cpp' | 'flat_rate';
|
|
4049
|
+
export type PricingModel1 = 'cpm' | 'vcpm' | 'cpc' | 'cpcv' | 'cpv' | 'cpp' | 'cpa' | 'flat_rate' | 'time';
|
|
3300
4050
|
/**
|
|
3301
4051
|
* Response payload for get_media_buy_delivery task
|
|
3302
4052
|
*/
|
|
@@ -3338,6 +4088,7 @@ export interface GetMediaBuyDeliveryResponse {
|
|
|
3338
4088
|
* ISO 4217 currency code
|
|
3339
4089
|
*/
|
|
3340
4090
|
currency: string;
|
|
4091
|
+
attribution_window?: AttributionWindow;
|
|
3341
4092
|
/**
|
|
3342
4093
|
* Combined metrics across all returned media buys. Only included in API responses (get_media_buy_delivery), not in webhook notifications.
|
|
3343
4094
|
*/
|
|
@@ -3358,6 +4109,26 @@ export interface GetMediaBuyDeliveryResponse {
|
|
|
3358
4109
|
* Total video completions across all media buys (if applicable)
|
|
3359
4110
|
*/
|
|
3360
4111
|
video_completions?: number;
|
|
4112
|
+
/**
|
|
4113
|
+
* Total conversions across all media buys (if applicable)
|
|
4114
|
+
*/
|
|
4115
|
+
conversions?: number;
|
|
4116
|
+
/**
|
|
4117
|
+
* Total conversion value across all media buys (if applicable)
|
|
4118
|
+
*/
|
|
4119
|
+
conversion_value?: number;
|
|
4120
|
+
/**
|
|
4121
|
+
* Aggregate return on ad spend across all media buys (total conversion_value / total spend)
|
|
4122
|
+
*/
|
|
4123
|
+
roas?: number;
|
|
4124
|
+
/**
|
|
4125
|
+
* Fraction of total conversions across all media buys from first-time brand buyers (weighted by conversion volume, not a simple average of per-buy rates)
|
|
4126
|
+
*/
|
|
4127
|
+
new_to_brand_rate?: number;
|
|
4128
|
+
/**
|
|
4129
|
+
* Aggregate cost per conversion across all media buys (total spend / total conversions)
|
|
4130
|
+
*/
|
|
4131
|
+
cost_per_acquisition?: number;
|
|
3361
4132
|
/**
|
|
3362
4133
|
* Number of media buys included in the response
|
|
3363
4134
|
*/
|
|
@@ -3427,6 +4198,19 @@ export interface GetMediaBuyDeliveryResponse {
|
|
|
3427
4198
|
* Whether this package is currently paused by the buyer
|
|
3428
4199
|
*/
|
|
3429
4200
|
paused?: boolean;
|
|
4201
|
+
/**
|
|
4202
|
+
* Metrics broken down by creative within this package. Available when the seller supports creative-level reporting.
|
|
4203
|
+
*/
|
|
4204
|
+
by_creative?: (DeliveryMetrics & {
|
|
4205
|
+
/**
|
|
4206
|
+
* Creative identifier matching the creative assignment
|
|
4207
|
+
*/
|
|
4208
|
+
creative_id: string;
|
|
4209
|
+
/**
|
|
4210
|
+
* Observed delivery share for this creative within the package during the reporting period, expressed as a percentage (0-100). Reflects actual delivery distribution, not a configured setting.
|
|
4211
|
+
*/
|
|
4212
|
+
weight?: number;
|
|
4213
|
+
})[];
|
|
3430
4214
|
})[];
|
|
3431
4215
|
/**
|
|
3432
4216
|
* Day-by-day delivery
|
|
@@ -3444,6 +4228,22 @@ export interface GetMediaBuyDeliveryResponse {
|
|
|
3444
4228
|
* Daily spend
|
|
3445
4229
|
*/
|
|
3446
4230
|
spend: number;
|
|
4231
|
+
/**
|
|
4232
|
+
* Daily conversions
|
|
4233
|
+
*/
|
|
4234
|
+
conversions?: number;
|
|
4235
|
+
/**
|
|
4236
|
+
* Daily conversion value
|
|
4237
|
+
*/
|
|
4238
|
+
conversion_value?: number;
|
|
4239
|
+
/**
|
|
4240
|
+
* Daily return on ad spend (conversion_value / spend)
|
|
4241
|
+
*/
|
|
4242
|
+
roas?: number;
|
|
4243
|
+
/**
|
|
4244
|
+
* Daily fraction of conversions from first-time brand buyers (0 = none, 1 = all)
|
|
4245
|
+
*/
|
|
4246
|
+
new_to_brand_rate?: number;
|
|
3447
4247
|
}[];
|
|
3448
4248
|
}[];
|
|
3449
4249
|
/**
|
|
@@ -3453,6 +4253,21 @@ export interface GetMediaBuyDeliveryResponse {
|
|
|
3453
4253
|
context?: ContextObject;
|
|
3454
4254
|
ext?: ExtensionObject;
|
|
3455
4255
|
}
|
|
4256
|
+
/**
|
|
4257
|
+
* Attribution methodology and lookback windows used for conversion metrics in this response. All media buys from a single seller share the same attribution methodology. Enables cross-platform comparison (e.g., Amazon 14-day click vs. Criteo 30-day click).
|
|
4258
|
+
*/
|
|
4259
|
+
export interface AttributionWindow {
|
|
4260
|
+
/**
|
|
4261
|
+
* Click-through attribution window in days. Conversions occurring within this many days after a click are attributed to the ad.
|
|
4262
|
+
*/
|
|
4263
|
+
click_window_days?: number;
|
|
4264
|
+
/**
|
|
4265
|
+
* View-through attribution window in days. Conversions occurring within this many days after an ad impression (without click) are attributed to the ad.
|
|
4266
|
+
*/
|
|
4267
|
+
view_window_days?: number;
|
|
4268
|
+
model: AttributionModel;
|
|
4269
|
+
[k: string]: unknown | undefined;
|
|
4270
|
+
}
|
|
3456
4271
|
/**
|
|
3457
4272
|
* Standard delivery metrics that can be reported at media buy, package, or creative level
|
|
3458
4273
|
*/
|
|
@@ -3486,13 +4301,48 @@ export interface DeliveryMetrics {
|
|
|
3486
4301
|
*/
|
|
3487
4302
|
completion_rate?: number;
|
|
3488
4303
|
/**
|
|
3489
|
-
*
|
|
4304
|
+
* Total conversions attributed to this delivery. When by_event_type is present, this equals the sum of all by_event_type[].count entries.
|
|
3490
4305
|
*/
|
|
3491
4306
|
conversions?: number;
|
|
3492
4307
|
/**
|
|
3493
|
-
*
|
|
4308
|
+
* Total monetary value of attributed conversions (in the reporting currency)
|
|
4309
|
+
*/
|
|
4310
|
+
conversion_value?: number;
|
|
4311
|
+
/**
|
|
4312
|
+
* Return on ad spend (conversion_value / spend)
|
|
4313
|
+
*/
|
|
4314
|
+
roas?: number;
|
|
4315
|
+
/**
|
|
4316
|
+
* Cost per conversion (spend / conversions)
|
|
4317
|
+
*/
|
|
4318
|
+
cost_per_acquisition?: number;
|
|
4319
|
+
/**
|
|
4320
|
+
* Fraction of conversions from first-time brand buyers (0 = none, 1 = all)
|
|
4321
|
+
*/
|
|
4322
|
+
new_to_brand_rate?: number;
|
|
4323
|
+
/**
|
|
4324
|
+
* Leads generated (convenience alias for by_event_type where event_type='lead')
|
|
3494
4325
|
*/
|
|
3495
4326
|
leads?: number;
|
|
4327
|
+
/**
|
|
4328
|
+
* Conversion metrics broken down by event type. Spend-derived metrics (ROAS, CPA) are only available at the package/totals level since spend cannot be attributed to individual event types.
|
|
4329
|
+
*/
|
|
4330
|
+
by_event_type?: {
|
|
4331
|
+
event_type: EventType;
|
|
4332
|
+
/**
|
|
4333
|
+
* Event source that produced these conversions (for disambiguation when multiple event sources are configured)
|
|
4334
|
+
*/
|
|
4335
|
+
event_source_id?: string;
|
|
4336
|
+
/**
|
|
4337
|
+
* Number of events of this type
|
|
4338
|
+
*/
|
|
4339
|
+
count: number;
|
|
4340
|
+
/**
|
|
4341
|
+
* Total monetary value of events of this type
|
|
4342
|
+
*/
|
|
4343
|
+
value?: number;
|
|
4344
|
+
[k: string]: unknown | undefined;
|
|
4345
|
+
}[];
|
|
3496
4346
|
/**
|
|
3497
4347
|
* Gross Rating Points delivered (for CPP)
|
|
3498
4348
|
*/
|
|
@@ -3582,6 +4432,55 @@ export interface DeliveryMetrics {
|
|
|
3582
4432
|
}[];
|
|
3583
4433
|
[k: string]: unknown | undefined;
|
|
3584
4434
|
};
|
|
4435
|
+
/**
|
|
4436
|
+
* Viewability metrics. Viewable rate should be calculated as viewable_impressions / measurable_impressions (not total impressions), since some environments cannot measure viewability.
|
|
4437
|
+
*/
|
|
4438
|
+
viewability?: {
|
|
4439
|
+
/**
|
|
4440
|
+
* Impressions where viewability could be measured. Excludes environments without measurement capability (e.g., non-Intersection Observer browsers, certain app environments).
|
|
4441
|
+
*/
|
|
4442
|
+
measurable_impressions?: number;
|
|
4443
|
+
/**
|
|
4444
|
+
* Impressions that met the viewability threshold defined by the measurement standard.
|
|
4445
|
+
*/
|
|
4446
|
+
viewable_impressions?: number;
|
|
4447
|
+
/**
|
|
4448
|
+
* Viewable impression rate (viewable_impressions / measurable_impressions). Range 0.0 to 1.0.
|
|
4449
|
+
*/
|
|
4450
|
+
viewable_rate?: number;
|
|
4451
|
+
/**
|
|
4452
|
+
* Viewability measurement standard. 'mrc': 50% of pixels in view for 1 second (display) or 2 seconds (video), per MRC/IAB guidelines. 'groupm': 100% of pixels in view for the same durations. These are materially different thresholds and should not be compared across standards.
|
|
4453
|
+
*/
|
|
4454
|
+
standard?: 'mrc' | 'groupm';
|
|
4455
|
+
[k: string]: unknown | undefined;
|
|
4456
|
+
};
|
|
4457
|
+
/**
|
|
4458
|
+
* Platform-specific engagement rate (0.0 to 1.0). Definition varies by platform (e.g., likes+comments+shares/impressions on social, interactions/impressions on rich media).
|
|
4459
|
+
*/
|
|
4460
|
+
engagement_rate?: number;
|
|
4461
|
+
/**
|
|
4462
|
+
* Cost per click (spend / clicks)
|
|
4463
|
+
*/
|
|
4464
|
+
cost_per_click?: number;
|
|
4465
|
+
/**
|
|
4466
|
+
* Conversion metrics broken down by action source (website, app, in_store, etc.). Useful for omnichannel sellers where conversions occur across digital and physical channels.
|
|
4467
|
+
*/
|
|
4468
|
+
by_action_source?: {
|
|
4469
|
+
action_source: ActionSource;
|
|
4470
|
+
/**
|
|
4471
|
+
* Event source that produced these conversions (for disambiguation when multiple event sources are configured)
|
|
4472
|
+
*/
|
|
4473
|
+
event_source_id?: string;
|
|
4474
|
+
/**
|
|
4475
|
+
* Number of conversions from this action source
|
|
4476
|
+
*/
|
|
4477
|
+
count: number;
|
|
4478
|
+
/**
|
|
4479
|
+
* Total monetary value of conversions from this action source
|
|
4480
|
+
*/
|
|
4481
|
+
value?: number;
|
|
4482
|
+
[k: string]: unknown | undefined;
|
|
4483
|
+
}[];
|
|
3585
4484
|
[k: string]: unknown | undefined;
|
|
3586
4485
|
}
|
|
3587
4486
|
/**
|
|
@@ -3672,109 +4571,346 @@ export interface ProvidePerformanceFeedbackError {
|
|
|
3672
4571
|
* Standard error structure for task-specific errors and warnings
|
|
3673
4572
|
*/
|
|
3674
4573
|
/**
|
|
3675
|
-
*
|
|
4574
|
+
* Standard marketing event types for event logging, aligned with IAB ECAPI
|
|
3676
4575
|
*/
|
|
3677
|
-
export
|
|
4576
|
+
export interface SyncEventSourcesRequest {
|
|
4577
|
+
/**
|
|
4578
|
+
* Account to configure event sources for
|
|
4579
|
+
*/
|
|
4580
|
+
account_id: string;
|
|
4581
|
+
/**
|
|
4582
|
+
* Event sources to sync (create or update). When omitted, the call is discovery-only and returns all existing event sources on the account without modification.
|
|
4583
|
+
*/
|
|
4584
|
+
event_sources?: {
|
|
4585
|
+
/**
|
|
4586
|
+
* Unique identifier for this event source
|
|
4587
|
+
*/
|
|
4588
|
+
event_source_id: string;
|
|
4589
|
+
/**
|
|
4590
|
+
* Human-readable name for this event source
|
|
4591
|
+
*/
|
|
4592
|
+
name?: string;
|
|
4593
|
+
/**
|
|
4594
|
+
* Event types this source handles (e.g. purchase, lead). If omitted, accepts all event types.
|
|
4595
|
+
*/
|
|
4596
|
+
event_types?: EventType[];
|
|
4597
|
+
/**
|
|
4598
|
+
* Domains authorized to send events for this event source
|
|
4599
|
+
*/
|
|
4600
|
+
allowed_domains?: string[];
|
|
4601
|
+
}[];
|
|
4602
|
+
/**
|
|
4603
|
+
* When true, event sources not included in this sync will be removed
|
|
4604
|
+
*/
|
|
4605
|
+
delete_missing?: boolean;
|
|
4606
|
+
context?: ContextObject;
|
|
4607
|
+
ext?: ExtensionObject;
|
|
4608
|
+
}
|
|
3678
4609
|
/**
|
|
3679
|
-
*
|
|
4610
|
+
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
3680
4611
|
*/
|
|
3681
|
-
export type WebhookResponseType = 'html' | 'json' | 'xml' | 'javascript';
|
|
3682
4612
|
/**
|
|
3683
|
-
*
|
|
4613
|
+
* Response from event source sync operation. Returns either per-source results OR operation-level errors.
|
|
3684
4614
|
*/
|
|
3685
|
-
export type
|
|
4615
|
+
export type SyncEventSourcesResponse = SyncEventSourcesSuccess | SyncEventSourcesError;
|
|
3686
4616
|
/**
|
|
3687
|
-
*
|
|
4617
|
+
* Standard marketing event types for event logging, aligned with IAB ECAPI
|
|
3688
4618
|
*/
|
|
3689
|
-
export interface
|
|
4619
|
+
export interface SyncEventSourcesSuccess {
|
|
3690
4620
|
/**
|
|
3691
|
-
*
|
|
4621
|
+
* Results for each event source, including both synced and seller-managed sources on the account
|
|
3692
4622
|
*/
|
|
3693
|
-
|
|
3694
|
-
|
|
3695
|
-
|
|
4623
|
+
event_sources: {
|
|
4624
|
+
/**
|
|
4625
|
+
* Event source ID from the request
|
|
4626
|
+
*/
|
|
4627
|
+
event_source_id: string;
|
|
4628
|
+
/**
|
|
4629
|
+
* Name of the event source
|
|
4630
|
+
*/
|
|
4631
|
+
name?: string;
|
|
4632
|
+
/**
|
|
4633
|
+
* Seller-assigned identifier for this event source (the ID in the seller's ad platform)
|
|
4634
|
+
*/
|
|
4635
|
+
seller_id?: string;
|
|
4636
|
+
/**
|
|
4637
|
+
* Event types this source handles
|
|
4638
|
+
*/
|
|
4639
|
+
event_types?: EventType[];
|
|
4640
|
+
action_source?: ActionSource;
|
|
4641
|
+
/**
|
|
4642
|
+
* Who manages this event source. 'buyer' = configured via this sync. 'seller' = always-on, managed by the seller (e.g. Amazon sales attribution for Amazon advertisers).
|
|
4643
|
+
*/
|
|
4644
|
+
managed_by?: 'buyer' | 'seller';
|
|
4645
|
+
/**
|
|
4646
|
+
* Implementation details for activating this event source (e.g. JavaScript tag, pixel URL)
|
|
4647
|
+
*/
|
|
4648
|
+
setup?: {
|
|
4649
|
+
/**
|
|
4650
|
+
* Code snippet to place on the site (JavaScript, HTML pixel, etc.)
|
|
4651
|
+
*/
|
|
4652
|
+
snippet?: string;
|
|
4653
|
+
/**
|
|
4654
|
+
* Type of implementation. 'server_only' means no client-side tag is needed.
|
|
4655
|
+
*/
|
|
4656
|
+
snippet_type?: 'javascript' | 'html' | 'pixel_url' | 'server_only';
|
|
4657
|
+
/**
|
|
4658
|
+
* Human/agent-readable setup instructions
|
|
4659
|
+
*/
|
|
4660
|
+
instructions?: string;
|
|
4661
|
+
};
|
|
4662
|
+
/**
|
|
4663
|
+
* Action taken for this event source
|
|
4664
|
+
*/
|
|
4665
|
+
action: 'created' | 'updated' | 'unchanged' | 'deleted' | 'failed';
|
|
4666
|
+
/**
|
|
4667
|
+
* Errors for this event source (only present when action='failed')
|
|
4668
|
+
*/
|
|
4669
|
+
errors?: string[];
|
|
4670
|
+
}[];
|
|
3696
4671
|
context?: ContextObject;
|
|
3697
4672
|
ext?: ExtensionObject;
|
|
3698
4673
|
}
|
|
3699
4674
|
/**
|
|
3700
|
-
*
|
|
4675
|
+
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
3701
4676
|
*/
|
|
3702
|
-
export interface
|
|
3703
|
-
format_id: FormatID;
|
|
4677
|
+
export interface SyncEventSourcesError {
|
|
3704
4678
|
/**
|
|
3705
|
-
*
|
|
4679
|
+
* Operation-level errors that prevented processing
|
|
3706
4680
|
*/
|
|
3707
|
-
|
|
4681
|
+
errors: Error[];
|
|
4682
|
+
context?: ContextObject;
|
|
4683
|
+
ext?: ExtensionObject;
|
|
4684
|
+
}
|
|
4685
|
+
/**
|
|
4686
|
+
* Standard error structure for task-specific errors and warnings
|
|
4687
|
+
*/
|
|
4688
|
+
/**
|
|
4689
|
+
* Standard event type
|
|
4690
|
+
*/
|
|
4691
|
+
export type UserMatch = {
|
|
4692
|
+
[k: string]: unknown | undefined;
|
|
4693
|
+
} & {
|
|
3708
4694
|
/**
|
|
3709
|
-
*
|
|
4695
|
+
* Universal ID values for user matching
|
|
3710
4696
|
*
|
|
3711
|
-
*
|
|
4697
|
+
* @minItems 1
|
|
3712
4698
|
*/
|
|
3713
|
-
|
|
3714
|
-
|
|
3715
|
-
|
|
4699
|
+
uids?: [
|
|
4700
|
+
{
|
|
4701
|
+
type: UIDType;
|
|
4702
|
+
/**
|
|
4703
|
+
* Universal ID value
|
|
4704
|
+
*/
|
|
4705
|
+
value: string;
|
|
4706
|
+
[k: string]: unknown | undefined;
|
|
4707
|
+
},
|
|
4708
|
+
...{
|
|
4709
|
+
type: UIDType;
|
|
4710
|
+
/**
|
|
4711
|
+
* Universal ID value
|
|
4712
|
+
*/
|
|
4713
|
+
value: string;
|
|
4714
|
+
[k: string]: unknown | undefined;
|
|
4715
|
+
}[]
|
|
4716
|
+
];
|
|
4717
|
+
/**
|
|
4718
|
+
* SHA-256 hash of lowercase, trimmed email address. Buyer must normalize before hashing: lowercase, trim whitespace.
|
|
4719
|
+
*/
|
|
4720
|
+
hashed_email?: string;
|
|
4721
|
+
/**
|
|
4722
|
+
* SHA-256 hash of E.164-formatted phone number (e.g. +12065551234). Buyer must normalize to E.164 before hashing.
|
|
4723
|
+
*/
|
|
4724
|
+
hashed_phone?: string;
|
|
4725
|
+
/**
|
|
4726
|
+
* Platform click identifier (fbclid, gclid, ttclid, ScCid, etc.)
|
|
4727
|
+
*/
|
|
4728
|
+
click_id?: string;
|
|
4729
|
+
/**
|
|
4730
|
+
* Type of click identifier (e.g. fbclid, gclid, ttclid, msclkid, ScCid)
|
|
4731
|
+
*/
|
|
4732
|
+
click_id_type?: string;
|
|
4733
|
+
/**
|
|
4734
|
+
* Client IP address for probabilistic matching
|
|
4735
|
+
*/
|
|
4736
|
+
client_ip?: string;
|
|
4737
|
+
/**
|
|
4738
|
+
* Client user agent string for probabilistic matching
|
|
4739
|
+
*/
|
|
4740
|
+
client_user_agent?: string;
|
|
3716
4741
|
ext?: ExtensionObject;
|
|
3717
4742
|
[k: string]: unknown | undefined;
|
|
4743
|
+
};
|
|
4744
|
+
/**
|
|
4745
|
+
* Universal ID type
|
|
4746
|
+
*/
|
|
4747
|
+
export type UIDType = 'rampid' | 'id5' | 'uid2' | 'euid' | 'pairid' | 'external_id' | 'maid' | 'other';
|
|
4748
|
+
/**
|
|
4749
|
+
* Where the event originated
|
|
4750
|
+
*/
|
|
4751
|
+
export interface LogEventRequest {
|
|
4752
|
+
/**
|
|
4753
|
+
* Event source configured on the account via sync_event_sources
|
|
4754
|
+
*/
|
|
4755
|
+
event_source_id: string;
|
|
4756
|
+
/**
|
|
4757
|
+
* Test event code for validation without affecting production data. Events with this code appear in the platform's test events UI.
|
|
4758
|
+
*/
|
|
4759
|
+
test_event_code?: string;
|
|
4760
|
+
/**
|
|
4761
|
+
* Events to log
|
|
4762
|
+
*
|
|
4763
|
+
* @maxItems 10000
|
|
4764
|
+
*/
|
|
4765
|
+
events: Event[];
|
|
4766
|
+
context?: ContextObject;
|
|
4767
|
+
ext?: ExtensionObject;
|
|
3718
4768
|
}
|
|
3719
4769
|
/**
|
|
3720
|
-
*
|
|
4770
|
+
* A marketing event (conversion, engagement, or custom) for attribution and optimization
|
|
3721
4771
|
*/
|
|
3722
|
-
export interface
|
|
4772
|
+
export interface Event {
|
|
3723
4773
|
/**
|
|
3724
|
-
*
|
|
4774
|
+
* Unique identifier for deduplication (scoped to event_type + event_source_id)
|
|
3725
4775
|
*/
|
|
3726
|
-
|
|
3727
|
-
|
|
4776
|
+
event_id: string;
|
|
4777
|
+
event_type: EventType;
|
|
3728
4778
|
/**
|
|
3729
|
-
*
|
|
4779
|
+
* ISO 8601 timestamp when the event occurred
|
|
3730
4780
|
*/
|
|
3731
|
-
|
|
4781
|
+
event_time: string;
|
|
4782
|
+
user_match?: UserMatch;
|
|
4783
|
+
custom_data?: EventCustomData;
|
|
4784
|
+
action_source?: ActionSource;
|
|
3732
4785
|
/**
|
|
3733
|
-
*
|
|
4786
|
+
* URL where the event occurred (required when action_source is 'website')
|
|
3734
4787
|
*/
|
|
3735
|
-
|
|
4788
|
+
event_source_url?: string;
|
|
3736
4789
|
/**
|
|
3737
|
-
*
|
|
4790
|
+
* Name for custom events (used when event_type is 'custom')
|
|
3738
4791
|
*/
|
|
3739
|
-
|
|
3740
|
-
|
|
4792
|
+
custom_event_name?: string;
|
|
4793
|
+
ext?: ExtensionObject;
|
|
4794
|
+
[k: string]: unknown | undefined;
|
|
4795
|
+
}
|
|
4796
|
+
/**
|
|
4797
|
+
* Extension object for platform-specific, vendor-namespaced parameters. Extensions are always optional and must be namespaced under a vendor/platform key (e.g., ext.gam, ext.roku). Used for custom capabilities, partner-specific configuration, and features being proposed for standardization.
|
|
4798
|
+
*/
|
|
4799
|
+
export interface EventCustomData {
|
|
3741
4800
|
/**
|
|
3742
|
-
*
|
|
4801
|
+
* Monetary value of the event (should be accompanied by currency)
|
|
3743
4802
|
*/
|
|
3744
|
-
|
|
3745
|
-
|
|
4803
|
+
value?: number;
|
|
4804
|
+
/**
|
|
4805
|
+
* ISO 4217 currency code
|
|
4806
|
+
*/
|
|
4807
|
+
currency?: string;
|
|
4808
|
+
/**
|
|
4809
|
+
* Unique order or transaction identifier
|
|
4810
|
+
*/
|
|
4811
|
+
order_id?: string;
|
|
4812
|
+
/**
|
|
4813
|
+
* Product or content identifiers
|
|
4814
|
+
*/
|
|
4815
|
+
content_ids?: string[];
|
|
4816
|
+
/**
|
|
4817
|
+
* Category of content (product, service, etc.)
|
|
4818
|
+
*/
|
|
4819
|
+
content_type?: string;
|
|
4820
|
+
/**
|
|
4821
|
+
* Name of the product or content
|
|
4822
|
+
*/
|
|
4823
|
+
content_name?: string;
|
|
4824
|
+
/**
|
|
4825
|
+
* Category of the product or content
|
|
4826
|
+
*/
|
|
4827
|
+
content_category?: string;
|
|
4828
|
+
/**
|
|
4829
|
+
* Number of items in the event
|
|
4830
|
+
*/
|
|
4831
|
+
num_items?: number;
|
|
4832
|
+
/**
|
|
4833
|
+
* Search query for search events
|
|
4834
|
+
*/
|
|
4835
|
+
search_string?: string;
|
|
4836
|
+
/**
|
|
4837
|
+
* Per-item details for e-commerce events
|
|
4838
|
+
*/
|
|
4839
|
+
contents?: {
|
|
3746
4840
|
/**
|
|
3747
|
-
*
|
|
4841
|
+
* Product or content identifier
|
|
3748
4842
|
*/
|
|
3749
|
-
|
|
4843
|
+
id: string;
|
|
3750
4844
|
/**
|
|
3751
|
-
*
|
|
4845
|
+
* Quantity of this item
|
|
3752
4846
|
*/
|
|
3753
|
-
|
|
3754
|
-
|
|
4847
|
+
quantity?: number;
|
|
4848
|
+
/**
|
|
4849
|
+
* Price per unit of this item
|
|
4850
|
+
*/
|
|
4851
|
+
price?: number;
|
|
4852
|
+
/**
|
|
4853
|
+
* Brand name of this item
|
|
4854
|
+
*/
|
|
4855
|
+
brand?: string;
|
|
4856
|
+
[k: string]: unknown | undefined;
|
|
4857
|
+
}[];
|
|
4858
|
+
ext?: ExtensionObject;
|
|
3755
4859
|
[k: string]: unknown | undefined;
|
|
3756
4860
|
}
|
|
3757
4861
|
/**
|
|
3758
|
-
*
|
|
4862
|
+
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
3759
4863
|
*/
|
|
3760
4864
|
/**
|
|
3761
|
-
* Response
|
|
4865
|
+
* Response from event logging operation. Returns either event processing results OR operation-level errors.
|
|
3762
4866
|
*/
|
|
3763
|
-
export type
|
|
4867
|
+
export type LogEventResponse = LogEventSuccess | LogEventError;
|
|
3764
4868
|
/**
|
|
3765
|
-
*
|
|
4869
|
+
* Success response - events received and queued for processing
|
|
3766
4870
|
*/
|
|
3767
|
-
export interface
|
|
3768
|
-
|
|
4871
|
+
export interface LogEventSuccess {
|
|
4872
|
+
/**
|
|
4873
|
+
* Number of events received
|
|
4874
|
+
*/
|
|
4875
|
+
events_received: number;
|
|
4876
|
+
/**
|
|
4877
|
+
* Number of events successfully queued for processing
|
|
4878
|
+
*/
|
|
4879
|
+
events_processed: number;
|
|
4880
|
+
/**
|
|
4881
|
+
* Events that failed validation
|
|
4882
|
+
*/
|
|
4883
|
+
partial_failures?: {
|
|
4884
|
+
/**
|
|
4885
|
+
* ID of the failed event
|
|
4886
|
+
*/
|
|
4887
|
+
event_id: string;
|
|
4888
|
+
/**
|
|
4889
|
+
* Error code
|
|
4890
|
+
*/
|
|
4891
|
+
code: string;
|
|
4892
|
+
/**
|
|
4893
|
+
* Human-readable error message
|
|
4894
|
+
*/
|
|
4895
|
+
message: string;
|
|
4896
|
+
}[];
|
|
4897
|
+
/**
|
|
4898
|
+
* Non-fatal issues (low match quality, missing recommended fields, deprecation notices)
|
|
4899
|
+
*/
|
|
4900
|
+
warnings?: string[];
|
|
4901
|
+
/**
|
|
4902
|
+
* Overall match quality score for the batch (0.0 = no matches, 1.0 = all matched)
|
|
4903
|
+
*/
|
|
4904
|
+
match_quality?: number;
|
|
3769
4905
|
context?: ContextObject;
|
|
3770
4906
|
ext?: ExtensionObject;
|
|
3771
4907
|
}
|
|
3772
4908
|
/**
|
|
3773
|
-
*
|
|
4909
|
+
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
3774
4910
|
*/
|
|
3775
|
-
export interface
|
|
4911
|
+
export interface LogEventError {
|
|
3776
4912
|
/**
|
|
3777
|
-
*
|
|
4913
|
+
* Operation-level errors
|
|
3778
4914
|
*/
|
|
3779
4915
|
errors: Error[];
|
|
3780
4916
|
context?: ContextObject;
|
|
@@ -3784,15 +4920,127 @@ export interface BuildCreativeError {
|
|
|
3784
4920
|
* Standard error structure for task-specific errors and warnings
|
|
3785
4921
|
*/
|
|
3786
4922
|
/**
|
|
3787
|
-
*
|
|
4923
|
+
* VAST (Video Ad Serving Template) tag for third-party video ad serving
|
|
3788
4924
|
*/
|
|
3789
|
-
export type
|
|
3790
|
-
|
|
3791
|
-
|
|
3792
|
-
|
|
3793
|
-
|
|
3794
|
-
|
|
3795
|
-
|
|
4925
|
+
export type HTTPMethod = 'GET' | 'POST';
|
|
4926
|
+
/**
|
|
4927
|
+
* Standardized macro placeholders for dynamic value substitution in creative tracking URLs. Macros are replaced with actual values at impression time. See docs/creative/universal-macros.mdx for detailed documentation.
|
|
4928
|
+
*/
|
|
4929
|
+
export type WebhookResponseType = 'html' | 'json' | 'xml' | 'javascript';
|
|
4930
|
+
/**
|
|
4931
|
+
* Authentication method
|
|
4932
|
+
*/
|
|
4933
|
+
export type WebhookSecurityMethod = 'hmac_sha256' | 'api_key' | 'none';
|
|
4934
|
+
/**
|
|
4935
|
+
* DAAST (Digital Audio Ad Serving Template) tag for third-party audio ad serving
|
|
4936
|
+
*/
|
|
4937
|
+
export interface BuildCreativeRequest {
|
|
4938
|
+
/**
|
|
4939
|
+
* Natural language instructions for the transformation or generation. For pure generation, this is the creative brief. For transformation, this provides guidance on how to adapt the creative.
|
|
4940
|
+
*/
|
|
4941
|
+
message?: string;
|
|
4942
|
+
creative_manifest?: CreativeManifest;
|
|
4943
|
+
target_format_id: FormatID1;
|
|
4944
|
+
context?: ContextObject;
|
|
4945
|
+
ext?: ExtensionObject;
|
|
4946
|
+
}
|
|
4947
|
+
/**
|
|
4948
|
+
* Creative manifest to transform or generate from. For pure generation, this should include the target format_id and any required input assets (e.g., promoted_offerings for generative formats). For transformation (e.g., resizing, reformatting), this is the complete creative to adapt.
|
|
4949
|
+
*/
|
|
4950
|
+
export interface CreativeManifest {
|
|
4951
|
+
format_id: FormatID;
|
|
4952
|
+
/**
|
|
4953
|
+
* Product name or offering being advertised. Maps to promoted_offerings in create_media_buy request to associate creative with the product being promoted.
|
|
4954
|
+
*/
|
|
4955
|
+
promoted_offering?: string;
|
|
4956
|
+
/**
|
|
4957
|
+
* Map of asset IDs to actual asset content. Each key MUST match an asset_id from the format's assets array (e.g., 'banner_image', 'clickthrough_url', 'video_file', 'vast_tag'). The asset_id is the technical identifier used to match assets to format requirements.
|
|
4958
|
+
*
|
|
4959
|
+
* IMPORTANT: Full validation requires format context. The format defines what type each asset_id should be. Standalone schema validation only checks structural conformance — each asset must match at least one valid asset type schema.
|
|
4960
|
+
*/
|
|
4961
|
+
assets: {
|
|
4962
|
+
[k: string]: unknown | undefined;
|
|
4963
|
+
};
|
|
4964
|
+
ext?: ExtensionObject;
|
|
4965
|
+
[k: string]: unknown | undefined;
|
|
4966
|
+
}
|
|
4967
|
+
/**
|
|
4968
|
+
* Format identifier this manifest is for. Can be a template format (id only) or a deterministic format (id + dimensions/duration). For dimension-specific creatives, include width/height/unit in the format_id to create a unique identifier (e.g., {id: 'display_static', width: 300, height: 250, unit: 'px'}).
|
|
4969
|
+
*/
|
|
4970
|
+
export interface WebhookAsset {
|
|
4971
|
+
/**
|
|
4972
|
+
* Webhook URL to call for dynamic content
|
|
4973
|
+
*/
|
|
4974
|
+
url: string;
|
|
4975
|
+
method?: HTTPMethod;
|
|
4976
|
+
/**
|
|
4977
|
+
* Maximum time to wait for response in milliseconds
|
|
4978
|
+
*/
|
|
4979
|
+
timeout_ms?: number;
|
|
4980
|
+
/**
|
|
4981
|
+
* Universal macros that can be passed to webhook (e.g., DEVICE_TYPE, COUNTRY). See docs/creative/universal-macros.mdx for full list.
|
|
4982
|
+
*/
|
|
4983
|
+
supported_macros?: (UniversalMacro | string)[];
|
|
4984
|
+
/**
|
|
4985
|
+
* Universal macros that must be provided for webhook to function
|
|
4986
|
+
*/
|
|
4987
|
+
required_macros?: (UniversalMacro | string)[];
|
|
4988
|
+
response_type: WebhookResponseType;
|
|
4989
|
+
/**
|
|
4990
|
+
* Security configuration for webhook calls
|
|
4991
|
+
*/
|
|
4992
|
+
security: {
|
|
4993
|
+
method: WebhookSecurityMethod;
|
|
4994
|
+
/**
|
|
4995
|
+
* Header name for HMAC signature (e.g., 'X-Signature')
|
|
4996
|
+
*/
|
|
4997
|
+
hmac_header?: string;
|
|
4998
|
+
/**
|
|
4999
|
+
* Header name for API key (e.g., 'X-API-Key')
|
|
5000
|
+
*/
|
|
5001
|
+
api_key_header?: string;
|
|
5002
|
+
};
|
|
5003
|
+
[k: string]: unknown | undefined;
|
|
5004
|
+
}
|
|
5005
|
+
/**
|
|
5006
|
+
* CSS stylesheet asset
|
|
5007
|
+
*/
|
|
5008
|
+
/**
|
|
5009
|
+
* Response containing the transformed or generated creative manifest, ready for use with preview_creative or sync_creatives. Returns either the complete creative manifest OR error information, never both.
|
|
5010
|
+
*/
|
|
5011
|
+
export type BuildCreativeResponse = BuildCreativeSuccess | BuildCreativeError;
|
|
5012
|
+
/**
|
|
5013
|
+
* VAST (Video Ad Serving Template) tag for third-party video ad serving
|
|
5014
|
+
*/
|
|
5015
|
+
export interface BuildCreativeSuccess {
|
|
5016
|
+
creative_manifest: CreativeManifest;
|
|
5017
|
+
context?: ContextObject;
|
|
5018
|
+
ext?: ExtensionObject;
|
|
5019
|
+
}
|
|
5020
|
+
/**
|
|
5021
|
+
* The generated or transformed creative manifest
|
|
5022
|
+
*/
|
|
5023
|
+
export interface BuildCreativeError {
|
|
5024
|
+
/**
|
|
5025
|
+
* Array of errors explaining why creative generation failed
|
|
5026
|
+
*/
|
|
5027
|
+
errors: Error[];
|
|
5028
|
+
context?: ContextObject;
|
|
5029
|
+
ext?: ExtensionObject;
|
|
5030
|
+
}
|
|
5031
|
+
/**
|
|
5032
|
+
* Standard error structure for task-specific errors and warnings
|
|
5033
|
+
*/
|
|
5034
|
+
/**
|
|
5035
|
+
* Request to generate previews of one or more creative manifests. Accepts either a single creative request or an array of requests for batch processing.
|
|
5036
|
+
*/
|
|
5037
|
+
export type PreviewCreativeRequest = {
|
|
5038
|
+
/**
|
|
5039
|
+
* Discriminator indicating this is a single preview request
|
|
5040
|
+
*/
|
|
5041
|
+
request_type: 'single';
|
|
5042
|
+
format_id?: FormatID;
|
|
5043
|
+
creative_manifest: CreativeManifest;
|
|
3796
5044
|
/**
|
|
3797
5045
|
* Array of input sets for generating multiple preview variants. Each input set defines macros and context values for one preview rendering. If not provided, creative agent will generate default previews.
|
|
3798
5046
|
*/
|
|
@@ -3830,7 +5078,7 @@ export type PreviewCreativeRequest = {
|
|
|
3830
5078
|
* @maxItems 50
|
|
3831
5079
|
*/
|
|
3832
5080
|
requests: {
|
|
3833
|
-
format_id
|
|
5081
|
+
format_id?: FormatID2;
|
|
3834
5082
|
creative_manifest: CreativeManifest1;
|
|
3835
5083
|
/**
|
|
3836
5084
|
* Array of input sets for generating multiple preview variants
|
|
@@ -3860,6 +5108,22 @@ export type PreviewCreativeRequest = {
|
|
|
3860
5108
|
output_format?: PreviewOutputFormat2;
|
|
3861
5109
|
context?: ContextObject;
|
|
3862
5110
|
ext?: ExtensionObject;
|
|
5111
|
+
} | {
|
|
5112
|
+
/**
|
|
5113
|
+
* Discriminator indicating this is a variant preview request
|
|
5114
|
+
*/
|
|
5115
|
+
request_type: 'variant';
|
|
5116
|
+
/**
|
|
5117
|
+
* Platform-assigned variant identifier from get_creative_delivery response
|
|
5118
|
+
*/
|
|
5119
|
+
variant_id: string;
|
|
5120
|
+
/**
|
|
5121
|
+
* Creative identifier for context
|
|
5122
|
+
*/
|
|
5123
|
+
creative_id?: string;
|
|
5124
|
+
output_format?: PreviewOutputFormat3;
|
|
5125
|
+
context?: ContextObject;
|
|
5126
|
+
ext?: ExtensionObject;
|
|
3863
5127
|
};
|
|
3864
5128
|
/**
|
|
3865
5129
|
* VAST (Video Ad Serving Template) tag for third-party video ad serving
|
|
@@ -3874,7 +5138,11 @@ export type PreviewOutputFormat1 = 'url' | 'html';
|
|
|
3874
5138
|
*/
|
|
3875
5139
|
export type PreviewOutputFormat2 = 'url' | 'html';
|
|
3876
5140
|
/**
|
|
3877
|
-
*
|
|
5141
|
+
* Output format for the preview. 'url' returns preview_url (iframe-embeddable URL), 'html' returns preview_html (raw HTML for direct embedding).
|
|
5142
|
+
*/
|
|
5143
|
+
export type PreviewOutputFormat3 = 'url' | 'html';
|
|
5144
|
+
/**
|
|
5145
|
+
* Format identifier for rendering the preview. Optional — defaults to creative_manifest.format_id if omitted.
|
|
3878
5146
|
*/
|
|
3879
5147
|
export interface CreativeManifest1 {
|
|
3880
5148
|
format_id: FormatID1;
|
|
@@ -3885,7 +5153,7 @@ export interface CreativeManifest1 {
|
|
|
3885
5153
|
/**
|
|
3886
5154
|
* Map of asset IDs to actual asset content. Each key MUST match an asset_id from the format's assets array (e.g., 'banner_image', 'clickthrough_url', 'video_file', 'vast_tag'). The asset_id is the technical identifier used to match assets to format requirements.
|
|
3887
5155
|
*
|
|
3888
|
-
* IMPORTANT:
|
|
5156
|
+
* IMPORTANT: Full validation requires format context. The format defines what type each asset_id should be. Standalone schema validation only checks structural conformance — each asset must match at least one valid asset type schema.
|
|
3889
5157
|
*/
|
|
3890
5158
|
assets: {
|
|
3891
5159
|
[k: string]: unknown | undefined;
|
|
@@ -3896,7 +5164,7 @@ export interface CreativeManifest1 {
|
|
|
3896
5164
|
/**
|
|
3897
5165
|
* Response containing preview links for one or more creatives. Format matches the request: single preview response for single requests, batch results for batch requests.
|
|
3898
5166
|
*/
|
|
3899
|
-
export type PreviewCreativeResponse = PreviewCreativeSingleResponse | PreviewCreativeBatchResponse;
|
|
5167
|
+
export type PreviewCreativeResponse = PreviewCreativeSingleResponse | PreviewCreativeBatchResponse | PreviewCreativeVariantResponse;
|
|
3900
5168
|
/**
|
|
3901
5169
|
* A single rendered piece of a creative preview with discriminated output format
|
|
3902
5170
|
*/
|
|
@@ -4044,7 +5312,7 @@ export type PreviewRender = {
|
|
|
4044
5312
|
[k: string]: unknown | undefined;
|
|
4045
5313
|
};
|
|
4046
5314
|
/**
|
|
4047
|
-
*
|
|
5315
|
+
* VAST (Video Ad Serving Template) tag for third-party video ad serving
|
|
4048
5316
|
*/
|
|
4049
5317
|
export interface PreviewCreativeSingleResponse {
|
|
4050
5318
|
/**
|
|
@@ -4116,49 +5384,463 @@ export interface PreviewBatchResultError {
|
|
|
4116
5384
|
success?: false;
|
|
4117
5385
|
}
|
|
4118
5386
|
/**
|
|
4119
|
-
*
|
|
5387
|
+
* Variant preview response - shows what a specific creative variant looked like when served during delivery
|
|
4120
5388
|
*/
|
|
4121
|
-
export
|
|
5389
|
+
export interface PreviewCreativeVariantResponse {
|
|
4122
5390
|
/**
|
|
4123
|
-
* Discriminator indicating this is a
|
|
5391
|
+
* Discriminator indicating this is a variant preview response
|
|
4124
5392
|
*/
|
|
4125
|
-
|
|
5393
|
+
response_type: 'variant';
|
|
4126
5394
|
/**
|
|
4127
|
-
* Platform identifier
|
|
5395
|
+
* Platform-assigned variant identifier
|
|
4128
5396
|
*/
|
|
4129
|
-
|
|
5397
|
+
variant_id: string;
|
|
4130
5398
|
/**
|
|
4131
|
-
*
|
|
5399
|
+
* Creative identifier this variant belongs to
|
|
4132
5400
|
*/
|
|
4133
|
-
|
|
5401
|
+
creative_id?: string;
|
|
5402
|
+
/**
|
|
5403
|
+
* Array of rendered pieces for this variant. Most formats render as a single piece.
|
|
5404
|
+
*/
|
|
5405
|
+
previews: {
|
|
5406
|
+
/**
|
|
5407
|
+
* Unique identifier for this preview
|
|
5408
|
+
*/
|
|
5409
|
+
preview_id: string;
|
|
5410
|
+
/**
|
|
5411
|
+
* Rendered pieces for this variant
|
|
5412
|
+
*/
|
|
5413
|
+
renders: PreviewRender[];
|
|
5414
|
+
}[];
|
|
5415
|
+
manifest?: CreativeManifest;
|
|
5416
|
+
/**
|
|
5417
|
+
* ISO 8601 timestamp when preview links expire
|
|
5418
|
+
*/
|
|
5419
|
+
expires_at?: string;
|
|
5420
|
+
context?: ContextObject;
|
|
5421
|
+
ext?: ExtensionObject;
|
|
5422
|
+
}
|
|
5423
|
+
/**
|
|
5424
|
+
* The rendered creative manifest for this variant — the actual output that was served, not the input assets
|
|
5425
|
+
*/
|
|
5426
|
+
/**
|
|
5427
|
+
* Request parameters for retrieving creative delivery data including variant-level metrics from a creative agent. At least one scoping filter (media_buy_ids, media_buy_buyer_refs, or creative_ids) is required.
|
|
5428
|
+
*/
|
|
5429
|
+
export type GetCreativeDeliveryRequest = {
|
|
4134
5430
|
[k: string]: unknown | undefined;
|
|
4135
|
-
}
|
|
5431
|
+
} & {
|
|
4136
5432
|
/**
|
|
4137
|
-
*
|
|
5433
|
+
* Account context for routing and scoping. Limits results to creatives within this account. Optional if the agent has a single account or can determine routing from the media buy identifiers.
|
|
4138
5434
|
*/
|
|
4139
|
-
|
|
5435
|
+
account_id?: string;
|
|
4140
5436
|
/**
|
|
4141
|
-
*
|
|
5437
|
+
* Filter to specific media buys by publisher ID. If omitted, returns creative delivery across all matching media buys.
|
|
4142
5438
|
*/
|
|
4143
|
-
|
|
5439
|
+
media_buy_ids?: string[];
|
|
4144
5440
|
/**
|
|
4145
|
-
*
|
|
5441
|
+
* Filter to specific media buys by buyer reference ID. Alternative to media_buy_ids when the buyer doesn't have the publisher's identifiers.
|
|
4146
5442
|
*/
|
|
4147
|
-
|
|
4148
|
-
|
|
5443
|
+
media_buy_buyer_refs?: string[];
|
|
5444
|
+
/**
|
|
5445
|
+
* Filter to specific creatives by ID. If omitted, returns delivery for all creatives matching the other filters.
|
|
5446
|
+
*/
|
|
5447
|
+
creative_ids?: string[];
|
|
5448
|
+
/**
|
|
5449
|
+
* Start date for delivery period (YYYY-MM-DD). Interpreted in the platform's reporting timezone.
|
|
5450
|
+
*/
|
|
5451
|
+
start_date?: string;
|
|
5452
|
+
/**
|
|
5453
|
+
* End date for delivery period (YYYY-MM-DD). Interpreted in the platform's reporting timezone.
|
|
5454
|
+
*/
|
|
5455
|
+
end_date?: string;
|
|
5456
|
+
/**
|
|
5457
|
+
* Maximum number of variants to return per creative. When omitted, the agent returns all variants. Use this to limit response size for generative creatives that may produce large numbers of variants.
|
|
5458
|
+
*/
|
|
5459
|
+
max_variants?: number;
|
|
5460
|
+
/**
|
|
5461
|
+
* Pagination parameters for the creatives array in the response. When omitted, the agent returns all matching creatives.
|
|
5462
|
+
*/
|
|
5463
|
+
pagination?: {
|
|
5464
|
+
/**
|
|
5465
|
+
* Maximum number of creatives to return
|
|
5466
|
+
*/
|
|
5467
|
+
limit?: number;
|
|
5468
|
+
/**
|
|
5469
|
+
* Number of creatives to skip
|
|
5470
|
+
*/
|
|
5471
|
+
offset?: number;
|
|
5472
|
+
};
|
|
5473
|
+
context?: ContextObject;
|
|
5474
|
+
ext?: ExtensionObject;
|
|
4149
5475
|
};
|
|
4150
5476
|
/**
|
|
4151
|
-
*
|
|
5477
|
+
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
4152
5478
|
*/
|
|
4153
|
-
export type SignalCatalogType = 'marketplace' | 'custom' | 'owned';
|
|
4154
5479
|
/**
|
|
4155
|
-
*
|
|
5480
|
+
* The event type
|
|
4156
5481
|
*/
|
|
4157
|
-
export
|
|
5482
|
+
export type CreativeVariant = DeliveryMetrics1 & {
|
|
5483
|
+
/**
|
|
5484
|
+
* Platform-assigned identifier for this variant
|
|
5485
|
+
*/
|
|
5486
|
+
variant_id: string;
|
|
5487
|
+
manifest?: CreativeManifest;
|
|
5488
|
+
/**
|
|
5489
|
+
* Input signals that triggered generation of this variant (Tier 3). Describes why the platform created this specific variant. Platforms should provide summarized or anonymized signals rather than raw user input. For web contexts, may include page topic or URL. For conversational contexts, an anonymized content signal. For search, query category or intent. When the content context is managed through AdCP content standards, reference the artifact directly via the artifact field.
|
|
5490
|
+
*/
|
|
5491
|
+
generation_context?: {
|
|
5492
|
+
/**
|
|
5493
|
+
* Type of context that triggered generation (e.g., 'web_page', 'conversational', 'search', 'app', 'dooh')
|
|
5494
|
+
*/
|
|
5495
|
+
context_type?: string;
|
|
5496
|
+
/**
|
|
5497
|
+
* Reference to the content-standards artifact that provided the generation context. Links this variant to the specific piece of content (article, video, podcast segment, etc.) where the ad was placed.
|
|
5498
|
+
*/
|
|
5499
|
+
artifact?: {
|
|
5500
|
+
property_id: Identifier;
|
|
5501
|
+
/**
|
|
5502
|
+
* Artifact identifier within the property
|
|
5503
|
+
*/
|
|
5504
|
+
artifact_id: string;
|
|
5505
|
+
};
|
|
5506
|
+
ext?: ExtensionObject;
|
|
5507
|
+
[k: string]: unknown | undefined;
|
|
5508
|
+
};
|
|
5509
|
+
};
|
|
5510
|
+
/**
|
|
5511
|
+
* VAST (Video Ad Serving Template) tag for third-party video ad serving
|
|
5512
|
+
*/
|
|
5513
|
+
export type PropertyIdentifierTypes = 'domain' | 'subdomain' | 'network_id' | 'ios_bundle' | 'android_package' | 'apple_app_store_id' | 'google_play_id' | 'roku_store_id' | 'fire_tv_asin' | 'samsung_app_id' | 'apple_tv_bundle' | 'bundle_id' | 'venue_id' | 'screen_id' | 'openooh_venue_type' | 'rss_url' | 'apple_podcast_id' | 'spotify_show_id' | 'podcast_guid';
|
|
5514
|
+
/**
|
|
5515
|
+
* Response payload for get_creative_delivery task. Returns creative delivery data with variant-level breakdowns including manifests and metrics.
|
|
5516
|
+
*/
|
|
5517
|
+
export interface GetCreativeDeliveryResponse {
|
|
5518
|
+
/**
|
|
5519
|
+
* Account identifier. Present when the response spans or is scoped to a specific account.
|
|
5520
|
+
*/
|
|
5521
|
+
account_id?: string;
|
|
5522
|
+
/**
|
|
5523
|
+
* Publisher's media buy identifier. Present when the request was scoped to a single media buy.
|
|
5524
|
+
*/
|
|
5525
|
+
media_buy_id?: string;
|
|
5526
|
+
/**
|
|
5527
|
+
* Buyer's reference identifier for the media buy. Echoed back so the buyer can correlate without mapping publisher IDs.
|
|
5528
|
+
*/
|
|
5529
|
+
media_buy_buyer_ref?: string;
|
|
4158
5530
|
/**
|
|
4159
|
-
*
|
|
5531
|
+
* ISO 4217 currency code for monetary values in this response (e.g., 'USD', 'EUR')
|
|
4160
5532
|
*/
|
|
4161
|
-
|
|
5533
|
+
currency: string;
|
|
5534
|
+
/**
|
|
5535
|
+
* Date range for the report.
|
|
5536
|
+
*/
|
|
5537
|
+
reporting_period: {
|
|
5538
|
+
/**
|
|
5539
|
+
* ISO 8601 start timestamp
|
|
5540
|
+
*/
|
|
5541
|
+
start: string;
|
|
5542
|
+
/**
|
|
5543
|
+
* ISO 8601 end timestamp
|
|
5544
|
+
*/
|
|
5545
|
+
end: string;
|
|
5546
|
+
/**
|
|
5547
|
+
* IANA timezone identifier for the reporting period (e.g., 'America/New_York', 'UTC'). Platforms report in their native timezone.
|
|
5548
|
+
*/
|
|
5549
|
+
timezone?: string;
|
|
5550
|
+
};
|
|
5551
|
+
/**
|
|
5552
|
+
* Creative delivery data with variant breakdowns
|
|
5553
|
+
*/
|
|
5554
|
+
creatives: {
|
|
5555
|
+
/**
|
|
5556
|
+
* Creative identifier
|
|
5557
|
+
*/
|
|
5558
|
+
creative_id: string;
|
|
5559
|
+
/**
|
|
5560
|
+
* Publisher's media buy identifier for this creative. Present when the request spanned multiple media buys, so the buyer can correlate each creative to its media buy.
|
|
5561
|
+
*/
|
|
5562
|
+
media_buy_id?: string;
|
|
5563
|
+
format_id?: FormatID;
|
|
5564
|
+
totals?: DeliveryMetrics;
|
|
5565
|
+
/**
|
|
5566
|
+
* Total number of variants for this creative. When max_variants was specified in the request, this may exceed the number of items in the variants array.
|
|
5567
|
+
*/
|
|
5568
|
+
variant_count?: number;
|
|
5569
|
+
/**
|
|
5570
|
+
* Variant-level delivery breakdown. Each variant includes the rendered manifest and delivery metrics. For standard creatives, contains a single variant. For asset group optimization, one per combination. For generative creative, one per generated execution. Empty when a creative has no variants yet.
|
|
5571
|
+
*/
|
|
5572
|
+
variants: CreativeVariant[];
|
|
5573
|
+
}[];
|
|
5574
|
+
/**
|
|
5575
|
+
* Pagination information. Present when the request included pagination parameters.
|
|
5576
|
+
*/
|
|
5577
|
+
pagination?: {
|
|
5578
|
+
/**
|
|
5579
|
+
* Maximum number of creatives requested
|
|
5580
|
+
*/
|
|
5581
|
+
limit: number;
|
|
5582
|
+
/**
|
|
5583
|
+
* Number of creatives skipped
|
|
5584
|
+
*/
|
|
5585
|
+
offset: number;
|
|
5586
|
+
/**
|
|
5587
|
+
* Whether more creatives are available beyond this page
|
|
5588
|
+
*/
|
|
5589
|
+
has_more: boolean;
|
|
5590
|
+
/**
|
|
5591
|
+
* Total number of creatives matching the request filters
|
|
5592
|
+
*/
|
|
5593
|
+
total?: number;
|
|
5594
|
+
};
|
|
5595
|
+
/**
|
|
5596
|
+
* Task-specific errors and warnings
|
|
5597
|
+
*/
|
|
5598
|
+
errors?: Error[];
|
|
5599
|
+
context?: ContextObject;
|
|
5600
|
+
ext?: ExtensionObject;
|
|
5601
|
+
}
|
|
5602
|
+
/**
|
|
5603
|
+
* Format of this creative
|
|
5604
|
+
*/
|
|
5605
|
+
export interface DeliveryMetrics1 {
|
|
5606
|
+
/**
|
|
5607
|
+
* Impressions delivered
|
|
5608
|
+
*/
|
|
5609
|
+
impressions?: number;
|
|
5610
|
+
/**
|
|
5611
|
+
* Amount spent
|
|
5612
|
+
*/
|
|
5613
|
+
spend?: number;
|
|
5614
|
+
/**
|
|
5615
|
+
* Total clicks
|
|
5616
|
+
*/
|
|
5617
|
+
clicks?: number;
|
|
5618
|
+
/**
|
|
5619
|
+
* Click-through rate (clicks/impressions)
|
|
5620
|
+
*/
|
|
5621
|
+
ctr?: number;
|
|
5622
|
+
/**
|
|
5623
|
+
* Views at threshold (for CPV)
|
|
5624
|
+
*/
|
|
5625
|
+
views?: number;
|
|
5626
|
+
/**
|
|
5627
|
+
* 100% completions (for CPCV)
|
|
5628
|
+
*/
|
|
5629
|
+
completed_views?: number;
|
|
5630
|
+
/**
|
|
5631
|
+
* Completion rate (completed_views/impressions)
|
|
5632
|
+
*/
|
|
5633
|
+
completion_rate?: number;
|
|
5634
|
+
/**
|
|
5635
|
+
* Total conversions attributed to this delivery. When by_event_type is present, this equals the sum of all by_event_type[].count entries.
|
|
5636
|
+
*/
|
|
5637
|
+
conversions?: number;
|
|
5638
|
+
/**
|
|
5639
|
+
* Total monetary value of attributed conversions (in the reporting currency)
|
|
5640
|
+
*/
|
|
5641
|
+
conversion_value?: number;
|
|
5642
|
+
/**
|
|
5643
|
+
* Return on ad spend (conversion_value / spend)
|
|
5644
|
+
*/
|
|
5645
|
+
roas?: number;
|
|
5646
|
+
/**
|
|
5647
|
+
* Cost per conversion (spend / conversions)
|
|
5648
|
+
*/
|
|
5649
|
+
cost_per_acquisition?: number;
|
|
5650
|
+
/**
|
|
5651
|
+
* Fraction of conversions from first-time brand buyers (0 = none, 1 = all)
|
|
5652
|
+
*/
|
|
5653
|
+
new_to_brand_rate?: number;
|
|
5654
|
+
/**
|
|
5655
|
+
* Leads generated (convenience alias for by_event_type where event_type='lead')
|
|
5656
|
+
*/
|
|
5657
|
+
leads?: number;
|
|
5658
|
+
/**
|
|
5659
|
+
* Conversion metrics broken down by event type. Spend-derived metrics (ROAS, CPA) are only available at the package/totals level since spend cannot be attributed to individual event types.
|
|
5660
|
+
*/
|
|
5661
|
+
by_event_type?: {
|
|
5662
|
+
event_type: EventType;
|
|
5663
|
+
/**
|
|
5664
|
+
* Event source that produced these conversions (for disambiguation when multiple event sources are configured)
|
|
5665
|
+
*/
|
|
5666
|
+
event_source_id?: string;
|
|
5667
|
+
/**
|
|
5668
|
+
* Number of events of this type
|
|
5669
|
+
*/
|
|
5670
|
+
count: number;
|
|
5671
|
+
/**
|
|
5672
|
+
* Total monetary value of events of this type
|
|
5673
|
+
*/
|
|
5674
|
+
value?: number;
|
|
5675
|
+
[k: string]: unknown | undefined;
|
|
5676
|
+
}[];
|
|
5677
|
+
/**
|
|
5678
|
+
* Gross Rating Points delivered (for CPP)
|
|
5679
|
+
*/
|
|
5680
|
+
grps?: number;
|
|
5681
|
+
/**
|
|
5682
|
+
* Unique reach - units depend on measurement provider (e.g., individuals, households, devices, cookies). See delivery_measurement.provider for methodology.
|
|
5683
|
+
*/
|
|
5684
|
+
reach?: number;
|
|
5685
|
+
/**
|
|
5686
|
+
* Average frequency per individual (typically measured over campaign duration, but can vary by measurement provider)
|
|
5687
|
+
*/
|
|
5688
|
+
frequency?: number;
|
|
5689
|
+
/**
|
|
5690
|
+
* Video quartile completion data
|
|
5691
|
+
*/
|
|
5692
|
+
quartile_data?: {
|
|
5693
|
+
/**
|
|
5694
|
+
* 25% completion views
|
|
5695
|
+
*/
|
|
5696
|
+
q1_views?: number;
|
|
5697
|
+
/**
|
|
5698
|
+
* 50% completion views
|
|
5699
|
+
*/
|
|
5700
|
+
q2_views?: number;
|
|
5701
|
+
/**
|
|
5702
|
+
* 75% completion views
|
|
5703
|
+
*/
|
|
5704
|
+
q3_views?: number;
|
|
5705
|
+
/**
|
|
5706
|
+
* 100% completion views
|
|
5707
|
+
*/
|
|
5708
|
+
q4_views?: number;
|
|
5709
|
+
};
|
|
5710
|
+
/**
|
|
5711
|
+
* DOOH-specific metrics (only included for DOOH campaigns)
|
|
5712
|
+
*/
|
|
5713
|
+
dooh_metrics?: {
|
|
5714
|
+
/**
|
|
5715
|
+
* Number of times ad played in rotation
|
|
5716
|
+
*/
|
|
5717
|
+
loop_plays?: number;
|
|
5718
|
+
/**
|
|
5719
|
+
* Number of unique screens displaying the ad
|
|
5720
|
+
*/
|
|
5721
|
+
screens_used?: number;
|
|
5722
|
+
/**
|
|
5723
|
+
* Total display time in seconds
|
|
5724
|
+
*/
|
|
5725
|
+
screen_time_seconds?: number;
|
|
5726
|
+
/**
|
|
5727
|
+
* Actual share of voice delivered (0.0 to 1.0)
|
|
5728
|
+
*/
|
|
5729
|
+
sov_achieved?: number;
|
|
5730
|
+
/**
|
|
5731
|
+
* Explanation of how DOOH impressions were calculated
|
|
5732
|
+
*/
|
|
5733
|
+
calculation_notes?: string;
|
|
5734
|
+
/**
|
|
5735
|
+
* Per-venue performance breakdown
|
|
5736
|
+
*/
|
|
5737
|
+
venue_breakdown?: {
|
|
5738
|
+
/**
|
|
5739
|
+
* Venue identifier
|
|
5740
|
+
*/
|
|
5741
|
+
venue_id: string;
|
|
5742
|
+
/**
|
|
5743
|
+
* Human-readable venue name
|
|
5744
|
+
*/
|
|
5745
|
+
venue_name?: string;
|
|
5746
|
+
/**
|
|
5747
|
+
* Venue type (e.g., 'airport', 'transit', 'retail', 'billboard')
|
|
5748
|
+
*/
|
|
5749
|
+
venue_type?: string;
|
|
5750
|
+
/**
|
|
5751
|
+
* Impressions delivered at this venue
|
|
5752
|
+
*/
|
|
5753
|
+
impressions: number;
|
|
5754
|
+
/**
|
|
5755
|
+
* Loop plays at this venue
|
|
5756
|
+
*/
|
|
5757
|
+
loop_plays?: number;
|
|
5758
|
+
/**
|
|
5759
|
+
* Number of screens used at this venue
|
|
5760
|
+
*/
|
|
5761
|
+
screens_used?: number;
|
|
5762
|
+
[k: string]: unknown | undefined;
|
|
5763
|
+
}[];
|
|
5764
|
+
[k: string]: unknown | undefined;
|
|
5765
|
+
};
|
|
5766
|
+
/**
|
|
5767
|
+
* Viewability metrics. Viewable rate should be calculated as viewable_impressions / measurable_impressions (not total impressions), since some environments cannot measure viewability.
|
|
5768
|
+
*/
|
|
5769
|
+
viewability?: {
|
|
5770
|
+
/**
|
|
5771
|
+
* Impressions where viewability could be measured. Excludes environments without measurement capability (e.g., non-Intersection Observer browsers, certain app environments).
|
|
5772
|
+
*/
|
|
5773
|
+
measurable_impressions?: number;
|
|
5774
|
+
/**
|
|
5775
|
+
* Impressions that met the viewability threshold defined by the measurement standard.
|
|
5776
|
+
*/
|
|
5777
|
+
viewable_impressions?: number;
|
|
5778
|
+
/**
|
|
5779
|
+
* Viewable impression rate (viewable_impressions / measurable_impressions). Range 0.0 to 1.0.
|
|
5780
|
+
*/
|
|
5781
|
+
viewable_rate?: number;
|
|
5782
|
+
/**
|
|
5783
|
+
* Viewability measurement standard. 'mrc': 50% of pixels in view for 1 second (display) or 2 seconds (video), per MRC/IAB guidelines. 'groupm': 100% of pixels in view for the same durations. These are materially different thresholds and should not be compared across standards.
|
|
5784
|
+
*/
|
|
5785
|
+
standard?: 'mrc' | 'groupm';
|
|
5786
|
+
[k: string]: unknown | undefined;
|
|
5787
|
+
};
|
|
5788
|
+
/**
|
|
5789
|
+
* Platform-specific engagement rate (0.0 to 1.0). Definition varies by platform (e.g., likes+comments+shares/impressions on social, interactions/impressions on rich media).
|
|
5790
|
+
*/
|
|
5791
|
+
engagement_rate?: number;
|
|
5792
|
+
/**
|
|
5793
|
+
* Cost per click (spend / clicks)
|
|
5794
|
+
*/
|
|
5795
|
+
cost_per_click?: number;
|
|
5796
|
+
/**
|
|
5797
|
+
* Conversion metrics broken down by action source (website, app, in_store, etc.). Useful for omnichannel sellers where conversions occur across digital and physical channels.
|
|
5798
|
+
*/
|
|
5799
|
+
by_action_source?: {
|
|
5800
|
+
action_source: ActionSource;
|
|
5801
|
+
/**
|
|
5802
|
+
* Event source that produced these conversions (for disambiguation when multiple event sources are configured)
|
|
5803
|
+
*/
|
|
5804
|
+
event_source_id?: string;
|
|
5805
|
+
/**
|
|
5806
|
+
* Number of conversions from this action source
|
|
5807
|
+
*/
|
|
5808
|
+
count: number;
|
|
5809
|
+
/**
|
|
5810
|
+
* Total monetary value of conversions from this action source
|
|
5811
|
+
*/
|
|
5812
|
+
value?: number;
|
|
5813
|
+
[k: string]: unknown | undefined;
|
|
5814
|
+
}[];
|
|
5815
|
+
[k: string]: unknown | undefined;
|
|
5816
|
+
}
|
|
5817
|
+
/**
|
|
5818
|
+
* The rendered creative manifest for this variant — the actual output that was served, not the input assets. Contains format_id and the resolved assets (specific headline, image, video, etc. the platform selected or generated). For Tier 2, shows which asset combination was picked. For Tier 3, contains the generated assets which may differ entirely from the input brand manifest. Pass to preview_creative to re-render.
|
|
5819
|
+
*/
|
|
5820
|
+
export interface Identifier {
|
|
5821
|
+
type: PropertyIdentifierTypes;
|
|
5822
|
+
/**
|
|
5823
|
+
* The identifier value. For domain type: 'example.com' matches base domain plus www and m subdomains; 'edition.example.com' matches that specific subdomain; '*.example.com' matches ALL subdomains but NOT base domain
|
|
5824
|
+
*/
|
|
5825
|
+
value: string;
|
|
5826
|
+
}
|
|
5827
|
+
/**
|
|
5828
|
+
* Standard error structure for task-specific errors and warnings
|
|
5829
|
+
*/
|
|
5830
|
+
/**
|
|
5831
|
+
* Request parameters for discovering signals. Use signal_spec for natural language discovery, signal_ids for exact lookups, or both (signal_ids take precedence for exact matches, signal_spec provides additional discovery context).
|
|
5832
|
+
*/
|
|
5833
|
+
export type GetSignalsRequest = {
|
|
5834
|
+
[k: string]: unknown | undefined;
|
|
5835
|
+
} & {
|
|
5836
|
+
/**
|
|
5837
|
+
* Natural language description of the desired signals. When used alone, enables semantic discovery. When combined with signal_ids, provides context for the agent but signal_ids matches are returned first.
|
|
5838
|
+
*/
|
|
5839
|
+
signal_spec?: string;
|
|
5840
|
+
/**
|
|
5841
|
+
* Specific signals to look up by data provider and ID. Returns exact matches from the data provider's catalog. Takes precedence over signal_spec when both are provided.
|
|
5842
|
+
*/
|
|
5843
|
+
signal_ids?: SignalID[];
|
|
4162
5844
|
/**
|
|
4163
5845
|
* Deployment targets where signals need to be activated
|
|
4164
5846
|
*/
|
|
@@ -4174,24 +5856,65 @@ export interface GetSignalsRequest {
|
|
|
4174
5856
|
};
|
|
4175
5857
|
filters?: SignalFilters;
|
|
4176
5858
|
/**
|
|
4177
|
-
* Maximum number of results to return
|
|
5859
|
+
* Maximum number of results to return
|
|
5860
|
+
*/
|
|
5861
|
+
max_results?: number;
|
|
5862
|
+
pagination?: PaginationRequest;
|
|
5863
|
+
context?: ContextObject;
|
|
5864
|
+
ext?: ExtensionObject;
|
|
5865
|
+
};
|
|
5866
|
+
/**
|
|
5867
|
+
* Universal signal identifier. Uses 'source' as discriminator: 'catalog' for signals from a data provider's published catalog (verifiable), 'agent' for agent-native signals (not externally verifiable).
|
|
5868
|
+
*/
|
|
5869
|
+
export type Destination = {
|
|
5870
|
+
/**
|
|
5871
|
+
* Discriminator indicating this is a platform-based deployment
|
|
5872
|
+
*/
|
|
5873
|
+
type: 'platform';
|
|
5874
|
+
/**
|
|
5875
|
+
* Platform identifier for DSPs (e.g., 'the-trade-desk', 'amazon-dsp')
|
|
5876
|
+
*/
|
|
5877
|
+
platform: string;
|
|
5878
|
+
/**
|
|
5879
|
+
* Optional account identifier on the platform
|
|
5880
|
+
*/
|
|
5881
|
+
account?: string;
|
|
5882
|
+
[k: string]: unknown | undefined;
|
|
5883
|
+
} | {
|
|
5884
|
+
/**
|
|
5885
|
+
* Discriminator indicating this is an agent URL-based deployment
|
|
5886
|
+
*/
|
|
5887
|
+
type: 'agent';
|
|
5888
|
+
/**
|
|
5889
|
+
* URL identifying the deployment agent (for sales agents, etc.)
|
|
5890
|
+
*/
|
|
5891
|
+
agent_url: string;
|
|
5892
|
+
/**
|
|
5893
|
+
* Optional account identifier on the agent
|
|
4178
5894
|
*/
|
|
4179
|
-
|
|
4180
|
-
|
|
4181
|
-
|
|
4182
|
-
|
|
5895
|
+
account?: string;
|
|
5896
|
+
[k: string]: unknown | undefined;
|
|
5897
|
+
};
|
|
5898
|
+
/**
|
|
5899
|
+
* Types of signal catalogs available for audience targeting
|
|
5900
|
+
*/
|
|
5901
|
+
export type SignalCatalogType = 'marketplace' | 'custom' | 'owned';
|
|
4183
5902
|
/**
|
|
4184
5903
|
* Filters to refine signal discovery results
|
|
4185
5904
|
*/
|
|
4186
5905
|
export interface SignalFilters {
|
|
4187
5906
|
/**
|
|
4188
5907
|
* Filter by catalog type
|
|
5908
|
+
*
|
|
5909
|
+
* @minItems 1
|
|
4189
5910
|
*/
|
|
4190
|
-
catalog_types?: SignalCatalogType[];
|
|
5911
|
+
catalog_types?: [SignalCatalogType, ...SignalCatalogType[]];
|
|
4191
5912
|
/**
|
|
4192
5913
|
* Filter by specific data providers
|
|
5914
|
+
*
|
|
5915
|
+
* @minItems 1
|
|
4193
5916
|
*/
|
|
4194
|
-
data_providers?: string[];
|
|
5917
|
+
data_providers?: [string, ...string[]];
|
|
4195
5918
|
/**
|
|
4196
5919
|
* Maximum CPM price filter
|
|
4197
5920
|
*/
|
|
@@ -4203,10 +5926,14 @@ export interface SignalFilters {
|
|
|
4203
5926
|
[k: string]: unknown | undefined;
|
|
4204
5927
|
}
|
|
4205
5928
|
/**
|
|
4206
|
-
*
|
|
5929
|
+
* Standard cursor-based pagination parameters for list operations
|
|
5930
|
+
*/
|
|
5931
|
+
/**
|
|
5932
|
+
* Universal signal identifier referencing the data provider's catalog. Use this to verify authorization and look up signal definitions.
|
|
4207
5933
|
*/
|
|
5934
|
+
export type SignalValueType = 'binary' | 'categorical' | 'numeric';
|
|
4208
5935
|
/**
|
|
4209
|
-
*
|
|
5936
|
+
* Catalog type of signal (marketplace, custom, owned)
|
|
4210
5937
|
*/
|
|
4211
5938
|
export type Deployment = {
|
|
4212
5939
|
/**
|
|
@@ -4327,8 +6054,9 @@ export interface GetSignalsResponse {
|
|
|
4327
6054
|
* Array of matching signals
|
|
4328
6055
|
*/
|
|
4329
6056
|
signals: {
|
|
6057
|
+
signal_id?: SignalID;
|
|
4330
6058
|
/**
|
|
4331
|
-
*
|
|
6059
|
+
* Opaque identifier used for activation. This is the signals agent's internal segment ID.
|
|
4332
6060
|
*/
|
|
4333
6061
|
signal_agent_segment_id: string;
|
|
4334
6062
|
/**
|
|
@@ -4339,9 +6067,10 @@ export interface GetSignalsResponse {
|
|
|
4339
6067
|
* Detailed signal description
|
|
4340
6068
|
*/
|
|
4341
6069
|
description: string;
|
|
6070
|
+
value_type?: SignalValueType;
|
|
4342
6071
|
signal_type: SignalCatalogType;
|
|
4343
6072
|
/**
|
|
4344
|
-
*
|
|
6073
|
+
* Human-readable name of the data provider
|
|
4345
6074
|
*/
|
|
4346
6075
|
data_provider: string;
|
|
4347
6076
|
/**
|
|
@@ -4370,6 +6099,7 @@ export interface GetSignalsResponse {
|
|
|
4370
6099
|
* Task-specific errors and warnings (e.g., signal discovery or pricing issues)
|
|
4371
6100
|
*/
|
|
4372
6101
|
errors?: Error[];
|
|
6102
|
+
pagination?: PaginationResponse;
|
|
4373
6103
|
context?: ContextObject;
|
|
4374
6104
|
ext?: ExtensionObject;
|
|
4375
6105
|
}
|
|
@@ -4430,10 +6160,6 @@ export type BasePropertySource = PublisherTagsSource | PublisherPropertyIDsSourc
|
|
|
4430
6160
|
/**
|
|
4431
6161
|
* Tag for categorizing publisher properties. Must be lowercase alphanumeric with underscores only.
|
|
4432
6162
|
*/
|
|
4433
|
-
export type PropertyIdentifierTypes = 'domain' | 'subdomain' | 'network_id' | 'ios_bundle' | 'android_package' | 'apple_app_store_id' | 'google_play_id' | 'roku_store_id' | 'fire_tv_asin' | 'samsung_app_id' | 'apple_tv_bundle' | 'bundle_id' | 'venue_id' | 'screen_id' | 'openooh_venue_type' | 'rss_url' | 'apple_podcast_id' | 'spotify_show_id' | 'podcast_guid';
|
|
4434
|
-
/**
|
|
4435
|
-
* Standardized advertising media channels describing how buyers allocate budget. Channels are planning abstractions, not technical substrates. See the Media Channel Taxonomy specification for detailed definitions.
|
|
4436
|
-
*/
|
|
4437
6163
|
export type PropertyType = 'website' | 'mobile_app' | 'ctv_app' | 'desktop_app' | 'dooh' | 'podcast' | 'radio' | 'streaming_audio';
|
|
4438
6164
|
/**
|
|
4439
6165
|
* Type of asset. Note: Brand manifests typically contain basic media assets (image, video, audio, text). Code assets (html, javascript, css) and ad markup (vast, daast) are usually not part of brand asset libraries.
|
|
@@ -4512,37 +6238,37 @@ export interface DirectIdentifiersSource {
|
|
|
4512
6238
|
/**
|
|
4513
6239
|
* A property identifier with type and value. Used to identify properties across platforms (domains, app store IDs, etc.).
|
|
4514
6240
|
*/
|
|
4515
|
-
export interface Identifier {
|
|
4516
|
-
type: PropertyIdentifierTypes;
|
|
4517
|
-
/**
|
|
4518
|
-
* The identifier value. For domain type: 'example.com' matches base domain plus www and m subdomains; 'edition.example.com' matches that specific subdomain; '*.example.com' matches ALL subdomains but NOT base domain
|
|
4519
|
-
*/
|
|
4520
|
-
value: string;
|
|
4521
|
-
}
|
|
4522
|
-
/**
|
|
4523
|
-
* Dynamic filters to apply when resolving the list
|
|
4524
|
-
*/
|
|
4525
6241
|
export interface PropertyListFilters {
|
|
4526
6242
|
/**
|
|
4527
6243
|
* Property must have feature data for ALL listed countries (ISO codes). Required.
|
|
6244
|
+
*
|
|
6245
|
+
* @minItems 1
|
|
4528
6246
|
*/
|
|
4529
|
-
countries_all: string[];
|
|
6247
|
+
countries_all: [string, ...string[]];
|
|
4530
6248
|
/**
|
|
4531
6249
|
* Property must support ANY of the listed channels. Required.
|
|
6250
|
+
*
|
|
6251
|
+
* @minItems 1
|
|
4532
6252
|
*/
|
|
4533
|
-
channels_any: MediaChannel[];
|
|
6253
|
+
channels_any: [MediaChannel, ...MediaChannel[]];
|
|
4534
6254
|
/**
|
|
4535
6255
|
* Filter to these property types
|
|
6256
|
+
*
|
|
6257
|
+
* @minItems 1
|
|
4536
6258
|
*/
|
|
4537
|
-
property_types?: PropertyType[];
|
|
6259
|
+
property_types?: [PropertyType, ...PropertyType[]];
|
|
4538
6260
|
/**
|
|
4539
6261
|
* Feature-based requirements. Property must pass ALL requirements (AND logic).
|
|
6262
|
+
*
|
|
6263
|
+
* @minItems 1
|
|
4540
6264
|
*/
|
|
4541
|
-
feature_requirements?: FeatureRequirement[];
|
|
6265
|
+
feature_requirements?: [FeatureRequirement, ...FeatureRequirement[]];
|
|
4542
6266
|
/**
|
|
4543
6267
|
* Identifiers to always exclude from results
|
|
6268
|
+
*
|
|
6269
|
+
* @minItems 1
|
|
4544
6270
|
*/
|
|
4545
|
-
exclude_identifiers?: Identifier[];
|
|
6271
|
+
exclude_identifiers?: [Identifier, ...Identifier[]];
|
|
4546
6272
|
}
|
|
4547
6273
|
/**
|
|
4548
6274
|
* A feature-based requirement for property filtering. Use min_value/max_value for quantitative features, allowed_values for binary/categorical features.
|
|
@@ -4562,8 +6288,10 @@ export interface FeatureRequirement {
|
|
|
4562
6288
|
max_value?: number;
|
|
4563
6289
|
/**
|
|
4564
6290
|
* Values that pass the requirement (for binary/categorical features)
|
|
6291
|
+
*
|
|
6292
|
+
* @minItems 1
|
|
4565
6293
|
*/
|
|
4566
|
-
allowed_values?: unknown[];
|
|
6294
|
+
allowed_values?: [unknown, ...unknown[]];
|
|
4567
6295
|
/**
|
|
4568
6296
|
* How to handle properties where this feature is not covered. 'exclude' (default): property is removed from the list. 'include': property passes this requirement (fail-open).
|
|
4569
6297
|
*/
|
|
@@ -4688,13 +6416,18 @@ export interface GetPropertyListRequest {
|
|
|
4688
6416
|
*/
|
|
4689
6417
|
resolve?: boolean;
|
|
4690
6418
|
/**
|
|
4691
|
-
*
|
|
4692
|
-
*/
|
|
4693
|
-
max_results?: number;
|
|
4694
|
-
/**
|
|
4695
|
-
* Pagination cursor for large result sets
|
|
6419
|
+
* Pagination parameters. Uses higher limits than standard pagination because property lists can contain tens of thousands of identifiers.
|
|
4696
6420
|
*/
|
|
4697
|
-
|
|
6421
|
+
pagination?: {
|
|
6422
|
+
/**
|
|
6423
|
+
* Maximum number of identifiers to return per page
|
|
6424
|
+
*/
|
|
6425
|
+
max_results?: number;
|
|
6426
|
+
/**
|
|
6427
|
+
* Opaque cursor from a previous response to fetch the next page
|
|
6428
|
+
*/
|
|
6429
|
+
cursor?: string;
|
|
6430
|
+
};
|
|
4698
6431
|
context?: ContextObject;
|
|
4699
6432
|
ext?: ExtensionObject;
|
|
4700
6433
|
}
|
|
@@ -4710,27 +6443,7 @@ export interface GetPropertyListResponse {
|
|
|
4710
6443
|
* Resolved identifiers that passed filters (if resolve=true). Cache these locally for real-time use.
|
|
4711
6444
|
*/
|
|
4712
6445
|
identifiers?: Identifier[];
|
|
4713
|
-
|
|
4714
|
-
* Total number of identifiers in resolved list
|
|
4715
|
-
*/
|
|
4716
|
-
total_count?: number;
|
|
4717
|
-
/**
|
|
4718
|
-
* Number of identifiers returned in this response
|
|
4719
|
-
*/
|
|
4720
|
-
returned_count?: number;
|
|
4721
|
-
/**
|
|
4722
|
-
* Pagination information
|
|
4723
|
-
*/
|
|
4724
|
-
pagination?: {
|
|
4725
|
-
/**
|
|
4726
|
-
* Whether more results are available
|
|
4727
|
-
*/
|
|
4728
|
-
has_more?: boolean;
|
|
4729
|
-
/**
|
|
4730
|
-
* Cursor for next page
|
|
4731
|
-
*/
|
|
4732
|
-
cursor?: string;
|
|
4733
|
-
};
|
|
6446
|
+
pagination?: PaginationResponse;
|
|
4734
6447
|
/**
|
|
4735
6448
|
* When the list was resolved
|
|
4736
6449
|
*/
|
|
@@ -4762,19 +6475,12 @@ export interface ListPropertyListsRequest {
|
|
|
4762
6475
|
* Filter to lists whose name contains this string
|
|
4763
6476
|
*/
|
|
4764
6477
|
name_contains?: string;
|
|
4765
|
-
|
|
4766
|
-
* Maximum lists to return
|
|
4767
|
-
*/
|
|
4768
|
-
max_results?: number;
|
|
4769
|
-
/**
|
|
4770
|
-
* Pagination cursor
|
|
4771
|
-
*/
|
|
4772
|
-
cursor?: string;
|
|
6478
|
+
pagination?: PaginationRequest;
|
|
4773
6479
|
context?: ContextObject;
|
|
4774
6480
|
ext?: ExtensionObject;
|
|
4775
6481
|
}
|
|
4776
6482
|
/**
|
|
4777
|
-
*
|
|
6483
|
+
* Standard cursor-based pagination parameters for list operations
|
|
4778
6484
|
*/
|
|
4779
6485
|
/**
|
|
4780
6486
|
* A source of properties for a property list. Supports three selection patterns: publisher with tags, publisher with property IDs, or direct identifiers.
|
|
@@ -4784,27 +6490,7 @@ export interface ListPropertyListsResponse {
|
|
|
4784
6490
|
* Array of property lists (metadata only, not resolved properties)
|
|
4785
6491
|
*/
|
|
4786
6492
|
lists: PropertyList[];
|
|
4787
|
-
|
|
4788
|
-
* Total number of lists matching criteria
|
|
4789
|
-
*/
|
|
4790
|
-
total_count?: number;
|
|
4791
|
-
/**
|
|
4792
|
-
* Number of lists returned in this response
|
|
4793
|
-
*/
|
|
4794
|
-
returned_count?: number;
|
|
4795
|
-
/**
|
|
4796
|
-
* Pagination information
|
|
4797
|
-
*/
|
|
4798
|
-
pagination?: {
|
|
4799
|
-
/**
|
|
4800
|
-
* Whether more results are available
|
|
4801
|
-
*/
|
|
4802
|
-
has_more?: boolean;
|
|
4803
|
-
/**
|
|
4804
|
-
* Cursor for next page
|
|
4805
|
-
*/
|
|
4806
|
-
cursor?: string;
|
|
4807
|
-
};
|
|
6493
|
+
pagination?: PaginationResponse;
|
|
4808
6494
|
ext?: ExtensionObject;
|
|
4809
6495
|
}
|
|
4810
6496
|
/**
|
|
@@ -4857,11 +6543,12 @@ export interface ListContentStandardsRequest {
|
|
|
4857
6543
|
* Filter by ISO 3166-1 alpha-2 country codes
|
|
4858
6544
|
*/
|
|
4859
6545
|
countries?: string[];
|
|
6546
|
+
pagination?: PaginationRequest;
|
|
4860
6547
|
context?: ContextObject;
|
|
4861
6548
|
ext?: ExtensionObject;
|
|
4862
6549
|
}
|
|
4863
6550
|
/**
|
|
4864
|
-
*
|
|
6551
|
+
* Standard cursor-based pagination parameters for list operations
|
|
4865
6552
|
*/
|
|
4866
6553
|
/**
|
|
4867
6554
|
* Response payload with list of content standards configurations
|
|
@@ -4877,6 +6564,7 @@ export type ListContentStandardsResponse = {
|
|
|
4877
6564
|
errors?: {
|
|
4878
6565
|
[k: string]: unknown | undefined;
|
|
4879
6566
|
};
|
|
6567
|
+
pagination?: PaginationResponse;
|
|
4880
6568
|
context?: ContextObject;
|
|
4881
6569
|
ext?: ExtensionObject;
|
|
4882
6570
|
} | {
|
|
@@ -4976,12 +6664,16 @@ export interface ContentStandards {
|
|
|
4976
6664
|
name?: string;
|
|
4977
6665
|
/**
|
|
4978
6666
|
* ISO 3166-1 alpha-2 country codes. Standards apply in ALL listed countries (AND logic).
|
|
6667
|
+
*
|
|
6668
|
+
* @minItems 1
|
|
4979
6669
|
*/
|
|
4980
|
-
countries_all?: string[];
|
|
6670
|
+
countries_all?: [string, ...string[]];
|
|
4981
6671
|
/**
|
|
4982
6672
|
* Advertising channels. Standards apply to ANY of the listed channels (OR logic).
|
|
6673
|
+
*
|
|
6674
|
+
* @minItems 1
|
|
4983
6675
|
*/
|
|
4984
|
-
channels_any?: MediaChannel[];
|
|
6676
|
+
channels_any?: [MediaChannel, ...MediaChannel[]];
|
|
4985
6677
|
/**
|
|
4986
6678
|
* BCP 47 language tags (e.g., 'en', 'de', 'fr'). Standards apply to content in ANY of these languages (OR logic). Content in unlisted languages is not covered by these standards.
|
|
4987
6679
|
*
|
|
@@ -5790,6 +7482,10 @@ export type ValidateContentDeliveryResponse = {
|
|
|
5790
7482
|
* Request parameters for retrieving content artifacts from a media buy for validation
|
|
5791
7483
|
*/
|
|
5792
7484
|
export interface GetMediaBuyArtifactsRequest {
|
|
7485
|
+
/**
|
|
7486
|
+
* Filter artifacts to a specific account. When provided, only returns artifacts for media buys belonging to this account. When omitted, returns artifacts across all accessible accounts. Optional if the agent has a single account.
|
|
7487
|
+
*/
|
|
7488
|
+
account_id?: string;
|
|
5793
7489
|
/**
|
|
5794
7490
|
* Media buy to get artifacts from
|
|
5795
7491
|
*/
|
|
@@ -5825,13 +7521,18 @@ export interface GetMediaBuyArtifactsRequest {
|
|
|
5825
7521
|
end?: string;
|
|
5826
7522
|
};
|
|
5827
7523
|
/**
|
|
5828
|
-
*
|
|
5829
|
-
*/
|
|
5830
|
-
limit?: number;
|
|
5831
|
-
/**
|
|
5832
|
-
* Pagination cursor for fetching subsequent pages
|
|
7524
|
+
* Pagination parameters. Uses higher limits than standard pagination because artifact result sets can be very large.
|
|
5833
7525
|
*/
|
|
5834
|
-
|
|
7526
|
+
pagination?: {
|
|
7527
|
+
/**
|
|
7528
|
+
* Maximum number of artifacts to return per page
|
|
7529
|
+
*/
|
|
7530
|
+
max_results?: number;
|
|
7531
|
+
/**
|
|
7532
|
+
* Opaque cursor from a previous response to fetch the next page
|
|
7533
|
+
*/
|
|
7534
|
+
cursor?: string;
|
|
7535
|
+
};
|
|
5835
7536
|
context?: ContextObject;
|
|
5836
7537
|
ext?: ExtensionObject;
|
|
5837
7538
|
}
|
|
@@ -5910,19 +7611,7 @@ export type GetMediaBuyArtifactsResponse = {
|
|
|
5910
7611
|
*/
|
|
5911
7612
|
method?: 'random' | 'stratified' | 'recent' | 'failures_only';
|
|
5912
7613
|
};
|
|
5913
|
-
|
|
5914
|
-
* Pagination information for large result sets
|
|
5915
|
-
*/
|
|
5916
|
-
pagination?: {
|
|
5917
|
-
/**
|
|
5918
|
-
* Cursor for fetching the next page
|
|
5919
|
-
*/
|
|
5920
|
-
cursor?: string;
|
|
5921
|
-
/**
|
|
5922
|
-
* Whether more results are available
|
|
5923
|
-
*/
|
|
5924
|
-
has_more?: boolean;
|
|
5925
|
-
};
|
|
7614
|
+
pagination?: PaginationResponse;
|
|
5926
7615
|
/**
|
|
5927
7616
|
* Field must not be present in success response
|
|
5928
7617
|
*/
|
|
@@ -6593,6 +8282,10 @@ export interface GetAdCPCapabilitiesRequest {
|
|
|
6593
8282
|
/**
|
|
6594
8283
|
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
6595
8284
|
*/
|
|
8285
|
+
/**
|
|
8286
|
+
* Methods for verifying user age for compliance. Does not include 'inferred' as it is not accepted for regulatory compliance.
|
|
8287
|
+
*/
|
|
8288
|
+
export type EventType1 = 'page_view' | 'view_content' | 'select_content' | 'select_item' | 'search' | 'share' | 'add_to_cart' | 'remove_from_cart' | 'viewed_cart' | 'add_to_wishlist' | 'initiate_checkout' | 'add_payment_info' | 'purchase' | 'refund' | 'lead' | 'qualify_lead' | 'close_convert_lead' | 'disqualify_lead' | 'complete_registration' | 'subscribe' | 'start_trial' | 'app_install' | 'app_launch' | 'contact' | 'schedule' | 'donate' | 'submit_application' | 'custom';
|
|
6596
8289
|
/**
|
|
6597
8290
|
* Standardized advertising media channels describing how buyers allocate budget. Channels are planning abstractions, not technical substrates. See the Media Channel Taxonomy specification for detailed definitions.
|
|
6598
8291
|
*/
|
|
@@ -6610,6 +8303,31 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
6610
8303
|
* Which AdCP domain protocols this seller supports
|
|
6611
8304
|
*/
|
|
6612
8305
|
supported_protocols: ('media_buy' | 'signals' | 'governance' | 'sponsored_intelligence' | 'creative')[];
|
|
8306
|
+
/**
|
|
8307
|
+
* Account management capabilities. Describes how accounts are established, what billing models are supported, and whether an account is required before browsing products.
|
|
8308
|
+
*/
|
|
8309
|
+
account?: {
|
|
8310
|
+
/**
|
|
8311
|
+
* Whether the seller requires operator-level credentials. When false (default), the seller trusts the agent's identity claims — the agent authenticates once and declares brands/operators via sync_accounts. When true, each operator must authenticate independently with the seller, and the agent opens a per-operator session using the operator's credential.
|
|
8312
|
+
*/
|
|
8313
|
+
require_operator_auth?: boolean;
|
|
8314
|
+
/**
|
|
8315
|
+
* OAuth authorization endpoint for obtaining operator-level credentials. Present when the seller supports OAuth for operator authentication. The agent directs the operator to this URL to authenticate and obtain a bearer token. If absent and require_operator_auth is true, operators obtain credentials out-of-band (e.g., seller portal, API key).
|
|
8316
|
+
*/
|
|
8317
|
+
authorization_endpoint?: string;
|
|
8318
|
+
/**
|
|
8319
|
+
* Billing models this seller supports. brand: seller invoices the brand directly. operator: seller invoices the operator (agency). agent: agent consolidates billing.
|
|
8320
|
+
*/
|
|
8321
|
+
supported_billing: ('brand' | 'operator' | 'agent')[];
|
|
8322
|
+
/**
|
|
8323
|
+
* The billing model applied when the agent omits billing from a sync_accounts request. Must be one of the values in supported_billing.
|
|
8324
|
+
*/
|
|
8325
|
+
default_billing?: 'brand' | 'operator' | 'agent';
|
|
8326
|
+
/**
|
|
8327
|
+
* Whether an active account is required to call get_products. When true, the agent must establish an account via sync_accounts before browsing products. When false, get_products works without an account (account_id is optional for rate-card-specific pricing).
|
|
8328
|
+
*/
|
|
8329
|
+
required_for_products?: boolean;
|
|
8330
|
+
};
|
|
6613
8331
|
/**
|
|
6614
8332
|
* Media-buy protocol capabilities. Only present if media_buy is in supported_protocols.
|
|
6615
8333
|
*/
|
|
@@ -6718,8 +8436,64 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
6718
8436
|
*/
|
|
6719
8437
|
au_postcode?: boolean;
|
|
6720
8438
|
};
|
|
8439
|
+
/**
|
|
8440
|
+
* Age restriction capabilities for compliance (alcohol, gambling)
|
|
8441
|
+
*/
|
|
8442
|
+
age_restriction?: {
|
|
8443
|
+
/**
|
|
8444
|
+
* Whether seller supports age restrictions
|
|
8445
|
+
*/
|
|
8446
|
+
supported?: boolean;
|
|
8447
|
+
/**
|
|
8448
|
+
* Age verification methods this seller supports
|
|
8449
|
+
*/
|
|
8450
|
+
verification_methods?: AgeVerificationMethod[];
|
|
8451
|
+
};
|
|
8452
|
+
/**
|
|
8453
|
+
* Whether seller supports device platform targeting (Sec-CH-UA-Platform values)
|
|
8454
|
+
*/
|
|
8455
|
+
device_platform?: boolean;
|
|
8456
|
+
/**
|
|
8457
|
+
* Whether seller supports language targeting (ISO 639-1 codes)
|
|
8458
|
+
*/
|
|
8459
|
+
language?: boolean;
|
|
6721
8460
|
};
|
|
6722
8461
|
};
|
|
8462
|
+
/**
|
|
8463
|
+
* Seller-level conversion tracking capabilities. Only present when features.conversion_tracking is true.
|
|
8464
|
+
*/
|
|
8465
|
+
conversion_tracking?: {
|
|
8466
|
+
/**
|
|
8467
|
+
* Event types this seller can track and attribute. If omitted, all standard event types are supported.
|
|
8468
|
+
*/
|
|
8469
|
+
supported_event_types?: EventType[];
|
|
8470
|
+
/**
|
|
8471
|
+
* Universal ID types accepted for user matching
|
|
8472
|
+
*/
|
|
8473
|
+
supported_uid_types?: UIDType[];
|
|
8474
|
+
/**
|
|
8475
|
+
* Hashed PII types accepted for user matching. Buyers must hash before sending (SHA-256, normalized).
|
|
8476
|
+
*/
|
|
8477
|
+
supported_hashed_identifiers?: ('hashed_email' | 'hashed_phone')[];
|
|
8478
|
+
/**
|
|
8479
|
+
* Action sources this seller accepts events from
|
|
8480
|
+
*/
|
|
8481
|
+
supported_action_sources?: ActionSource[];
|
|
8482
|
+
/**
|
|
8483
|
+
* Attribution windows available from this seller. Single-element arrays indicate fixed windows; multi-element arrays indicate configurable options the buyer can choose from via optimization_goal.attribution_window on packages.
|
|
8484
|
+
*/
|
|
8485
|
+
attribution_windows?: {
|
|
8486
|
+
event_type?: EventType1;
|
|
8487
|
+
/**
|
|
8488
|
+
* Available click-through attribution windows (e.g. ["7d"], ["7d", "14d", "30d"])
|
|
8489
|
+
*/
|
|
8490
|
+
click_through: string[];
|
|
8491
|
+
/**
|
|
8492
|
+
* Available view-through attribution windows (e.g. ["1d"], ["1d", "7d", "14d"])
|
|
8493
|
+
*/
|
|
8494
|
+
view_through?: string[];
|
|
8495
|
+
}[];
|
|
8496
|
+
};
|
|
6723
8497
|
/**
|
|
6724
8498
|
* Information about the seller's media inventory portfolio
|
|
6725
8499
|
*/
|
|
@@ -6747,13 +8521,21 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
6747
8521
|
};
|
|
6748
8522
|
};
|
|
6749
8523
|
/**
|
|
6750
|
-
* Signals protocol capabilities. Only present if signals is in supported_protocols.
|
|
8524
|
+
* Signals protocol capabilities. Only present if signals is in supported_protocols.
|
|
6751
8525
|
*/
|
|
6752
8526
|
signals?: {
|
|
8527
|
+
/**
|
|
8528
|
+
* Data provider domains this signals agent is authorized to resell. Buyers should fetch each data provider's adagents.json for signal catalog definitions and to verify authorization.
|
|
8529
|
+
*/
|
|
8530
|
+
data_provider_domains?: string[];
|
|
6753
8531
|
/**
|
|
6754
8532
|
* Optional signals features supported
|
|
6755
8533
|
*/
|
|
6756
8534
|
features?: {
|
|
8535
|
+
/**
|
|
8536
|
+
* Supports signals from data provider catalogs with structured signal_id references
|
|
8537
|
+
*/
|
|
8538
|
+
catalog_signals?: boolean;
|
|
6757
8539
|
[k: string]: boolean | undefined;
|
|
6758
8540
|
};
|
|
6759
8541
|
};
|
|
@@ -6855,14 +8637,15 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
6855
8637
|
*/
|
|
6856
8638
|
export interface ListAccountsRequest {
|
|
6857
8639
|
/**
|
|
6858
|
-
* Filter accounts by status
|
|
8640
|
+
* Filter accounts by status. Omit to return accounts in all statuses.
|
|
6859
8641
|
*/
|
|
6860
|
-
status?: 'active' | '
|
|
8642
|
+
status?: 'active' | 'pending_approval' | 'payment_required' | 'suspended' | 'closed';
|
|
8643
|
+
pagination?: PaginationRequest;
|
|
6861
8644
|
context?: ContextObject;
|
|
6862
8645
|
ext?: ExtensionObject;
|
|
6863
8646
|
}
|
|
6864
8647
|
/**
|
|
6865
|
-
*
|
|
8648
|
+
* Standard cursor-based pagination parameters for list operations
|
|
6866
8649
|
*/
|
|
6867
8650
|
/**
|
|
6868
8651
|
* Response payload for list_accounts task
|
|
@@ -6876,10 +8659,157 @@ export interface ListAccountsResponse {
|
|
|
6876
8659
|
* Task-specific errors and warnings
|
|
6877
8660
|
*/
|
|
6878
8661
|
errors?: Error[];
|
|
8662
|
+
pagination?: PaginationResponse;
|
|
6879
8663
|
context?: ContextObject;
|
|
6880
8664
|
ext?: ExtensionObject;
|
|
6881
8665
|
}
|
|
6882
8666
|
/**
|
|
6883
8667
|
* A billing account representing the relationship between a buyer and seller. The account determines rate cards, payment terms, and billing entity.
|
|
6884
8668
|
*/
|
|
8669
|
+
/**
|
|
8670
|
+
* Authentication schemes for push notification endpoints
|
|
8671
|
+
*/
|
|
8672
|
+
export interface SyncAccountsRequest {
|
|
8673
|
+
/**
|
|
8674
|
+
* Advertiser accounts to sync
|
|
8675
|
+
*
|
|
8676
|
+
* @maxItems 1000
|
|
8677
|
+
*/
|
|
8678
|
+
accounts: {
|
|
8679
|
+
/**
|
|
8680
|
+
* House domain where brand.json is hosted (e.g., 'unilever.com', 'coca-cola.com'). This is the canonical identity anchor for the brand, resolved via /.well-known/brand.json. For single-brand houses, this alone identifies the brand.
|
|
8681
|
+
*/
|
|
8682
|
+
house: string;
|
|
8683
|
+
/**
|
|
8684
|
+
* Brand ID within the house portfolio (from brand.json). Required when the house has multiple brands (e.g., 'dove' under unilever.com, 'tide' under pg.com). Omit for single-brand houses.
|
|
8685
|
+
*/
|
|
8686
|
+
brand_id?: string;
|
|
8687
|
+
/**
|
|
8688
|
+
* Domain of the entity operating the seat (e.g., 'groupm.com', 'mindshare.com'). Verified against the brand's authorized_operators in brand.json. Omit if the brand operates its own seat.
|
|
8689
|
+
*/
|
|
8690
|
+
operator?: string;
|
|
8691
|
+
/**
|
|
8692
|
+
* Who should be invoiced. brand: seller invoices the brand directly. operator: seller invoices the operator (agency). agent: agent consolidates billing across brands. Omit to accept the seller's default.
|
|
8693
|
+
*/
|
|
8694
|
+
billing?: 'brand' | 'operator' | 'agent';
|
|
8695
|
+
}[];
|
|
8696
|
+
/**
|
|
8697
|
+
* When true, accounts previously synced by this agent but not included in this request will be deactivated. Scoped to the authenticated agent — does not affect accounts managed by other agents. Use with caution.
|
|
8698
|
+
*/
|
|
8699
|
+
delete_missing?: boolean;
|
|
8700
|
+
/**
|
|
8701
|
+
* When true, preview what would change without applying. Returns what would be created/updated/deactivated.
|
|
8702
|
+
*/
|
|
8703
|
+
dry_run?: boolean;
|
|
8704
|
+
push_notification_config?: PushNotificationConfig;
|
|
8705
|
+
context?: ContextObject;
|
|
8706
|
+
ext?: ExtensionObject;
|
|
8707
|
+
}
|
|
8708
|
+
/**
|
|
8709
|
+
* Optional webhook for async notifications when account status changes (e.g., pending_approval transitions to active).
|
|
8710
|
+
*/
|
|
8711
|
+
/**
|
|
8712
|
+
* Response from account sync operation. Returns per-account results with status and billing, or operation-level errors on complete failure.
|
|
8713
|
+
*/
|
|
8714
|
+
export type SyncAccountsResponse = SyncAccountsSuccess | SyncAccountsError;
|
|
8715
|
+
/**
|
|
8716
|
+
* Sync operation processed accounts (individual accounts may be pending or have action=failed)
|
|
8717
|
+
*/
|
|
8718
|
+
export interface SyncAccountsSuccess {
|
|
8719
|
+
/**
|
|
8720
|
+
* Whether this was a dry run (no actual changes made)
|
|
8721
|
+
*/
|
|
8722
|
+
dry_run?: boolean;
|
|
8723
|
+
/**
|
|
8724
|
+
* Results for each account processed
|
|
8725
|
+
*/
|
|
8726
|
+
accounts: {
|
|
8727
|
+
/**
|
|
8728
|
+
* Seller-assigned account identifier. When billing is 'agent', multiple brands may share the same account_id.
|
|
8729
|
+
*/
|
|
8730
|
+
account_id?: string;
|
|
8731
|
+
/**
|
|
8732
|
+
* House domain, echoed from the request
|
|
8733
|
+
*/
|
|
8734
|
+
house: string;
|
|
8735
|
+
/**
|
|
8736
|
+
* Brand ID within the house portfolio, echoed from request
|
|
8737
|
+
*/
|
|
8738
|
+
brand_id?: string;
|
|
8739
|
+
/**
|
|
8740
|
+
* Operator domain, echoed from request
|
|
8741
|
+
*/
|
|
8742
|
+
operator?: string;
|
|
8743
|
+
/**
|
|
8744
|
+
* Human-readable account name assigned by the seller
|
|
8745
|
+
*/
|
|
8746
|
+
name?: string;
|
|
8747
|
+
/**
|
|
8748
|
+
* Action taken for this account. created: new account provisioned. updated: existing account modified. unchanged: no changes needed. failed: could not process (see errors).
|
|
8749
|
+
*/
|
|
8750
|
+
action: 'created' | 'updated' | 'unchanged' | 'failed';
|
|
8751
|
+
/**
|
|
8752
|
+
* Account status. active: ready for use. pending_approval: seller reviewing (credit, legal). payment_required: credit limit reached or funds depleted. suspended: was active, now paused. closed: terminated.
|
|
8753
|
+
*/
|
|
8754
|
+
status: 'active' | 'pending_approval' | 'payment_required' | 'suspended' | 'closed';
|
|
8755
|
+
/**
|
|
8756
|
+
* Who is invoiced on this account. May differ from the requested billing if the seller doesn't support it.
|
|
8757
|
+
*/
|
|
8758
|
+
billing?: 'brand' | 'operator' | 'agent';
|
|
8759
|
+
/**
|
|
8760
|
+
* Parent account ID when this account is a sub-account under a shared billing account
|
|
8761
|
+
*/
|
|
8762
|
+
parent_account_id?: string;
|
|
8763
|
+
/**
|
|
8764
|
+
* Setup information for pending accounts. Provides the agent (or human) with next steps to complete account activation.
|
|
8765
|
+
*/
|
|
8766
|
+
setup?: {
|
|
8767
|
+
/**
|
|
8768
|
+
* URL where the human can complete the required action (credit application, legal agreement, add funds)
|
|
8769
|
+
*/
|
|
8770
|
+
url?: string;
|
|
8771
|
+
/**
|
|
8772
|
+
* Human-readable description of what's needed
|
|
8773
|
+
*/
|
|
8774
|
+
message: string;
|
|
8775
|
+
/**
|
|
8776
|
+
* When this setup link expires
|
|
8777
|
+
*/
|
|
8778
|
+
expires_at?: string;
|
|
8779
|
+
};
|
|
8780
|
+
/**
|
|
8781
|
+
* Rate card applied to this account
|
|
8782
|
+
*/
|
|
8783
|
+
rate_card?: string;
|
|
8784
|
+
/**
|
|
8785
|
+
* Payment terms (e.g., 'net_30', 'prepay')
|
|
8786
|
+
*/
|
|
8787
|
+
payment_terms?: string;
|
|
8788
|
+
credit_limit?: {
|
|
8789
|
+
amount: number;
|
|
8790
|
+
currency: string;
|
|
8791
|
+
};
|
|
8792
|
+
/**
|
|
8793
|
+
* Per-account errors (only present when action is 'failed')
|
|
8794
|
+
*/
|
|
8795
|
+
errors?: Error[];
|
|
8796
|
+
/**
|
|
8797
|
+
* Non-fatal warnings about this account
|
|
8798
|
+
*/
|
|
8799
|
+
warnings?: string[];
|
|
8800
|
+
}[];
|
|
8801
|
+
context?: ContextObject;
|
|
8802
|
+
ext?: ExtensionObject;
|
|
8803
|
+
}
|
|
8804
|
+
/**
|
|
8805
|
+
* Standard error structure for task-specific errors and warnings
|
|
8806
|
+
*/
|
|
8807
|
+
export interface SyncAccountsError {
|
|
8808
|
+
/**
|
|
8809
|
+
* Operation-level errors (e.g., authentication failure, service unavailable)
|
|
8810
|
+
*/
|
|
8811
|
+
errors: Error[];
|
|
8812
|
+
context?: ContextObject;
|
|
8813
|
+
ext?: ExtensionObject;
|
|
8814
|
+
}
|
|
6885
8815
|
//# sourceMappingURL=tools.generated.d.ts.map
|