@adcp/client 4.0.1 → 4.1.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/dist/lib/adapters/content-standards-adapter.d.ts.map +1 -1
- package/dist/lib/adapters/content-standards-adapter.js +2 -0
- package/dist/lib/adapters/content-standards-adapter.js.map +1 -1
- package/dist/lib/core/AgentClient.d.ts.map +1 -1
- package/dist/lib/core/SingleAgentClient.d.ts +0 -14
- package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
- package/dist/lib/core/SingleAgentClient.js +29 -72
- package/dist/lib/core/SingleAgentClient.js.map +1 -1
- package/dist/lib/index.d.ts +6 -2
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +12 -4
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/types/adcp.d.ts +2 -5
- package/dist/lib/types/adcp.d.ts.map +1 -1
- package/dist/lib/types/compat.d.ts +3 -0
- package/dist/lib/types/compat.d.ts.map +1 -1
- package/dist/lib/types/compat.js.map +1 -1
- package/dist/lib/types/core.generated.d.ts +731 -226
- package/dist/lib/types/core.generated.d.ts.map +1 -1
- package/dist/lib/types/core.generated.js +1 -1
- package/dist/lib/types/error-codes.d.ts +32 -0
- package/dist/lib/types/error-codes.d.ts.map +1 -0
- package/dist/lib/types/error-codes.js +114 -0
- package/dist/lib/types/error-codes.js.map +1 -0
- package/dist/lib/types/index.d.ts +1 -1
- package/dist/lib/types/index.d.ts.map +1 -1
- package/dist/lib/types/index.js.map +1 -1
- package/dist/lib/types/schemas.generated.d.ts +23334 -8549
- package/dist/lib/types/schemas.generated.d.ts.map +1 -1
- package/dist/lib/types/schemas.generated.js +644 -462
- package/dist/lib/types/schemas.generated.js.map +1 -1
- package/dist/lib/types/tools.generated.d.ts +1360 -925
- package/dist/lib/types/tools.generated.d.ts.map +1 -1
- package/dist/lib/utils/creative-adapter.d.ts +1 -1
- package/dist/lib/utils/creative-adapter.js +2 -2
- package/dist/lib/utils/creative-adapter.js.map +1 -1
- package/dist/lib/utils/deprecation.d.ts +11 -0
- package/dist/lib/utils/deprecation.d.ts.map +1 -0
- package/dist/lib/utils/deprecation.js +23 -0
- package/dist/lib/utils/deprecation.js.map +1 -0
- package/dist/lib/utils/index.d.ts +1 -0
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js +4 -1
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/utils/request-normalizer.d.ts +23 -0
- package/dist/lib/utils/request-normalizer.d.ts.map +1 -0
- package/dist/lib/utils/request-normalizer.js +119 -0
- package/dist/lib/utils/request-normalizer.js.map +1 -0
- package/dist/lib/utils/sync-creatives-adapter.d.ts +18 -0
- package/dist/lib/utils/sync-creatives-adapter.d.ts.map +1 -0
- package/dist/lib/utils/sync-creatives-adapter.js +46 -0
- package/dist/lib/utils/sync-creatives-adapter.js.map +1 -0
- 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
|
@@ -1,15 +1,62 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Request parameters for discovering
|
|
2
|
+
* Request parameters for discovering or refining advertising products. buying_mode declares the buyer's intent: 'brief' for curated discovery, 'wholesale' for raw catalog access, or 'refine' to iterate on known products and proposals.
|
|
3
3
|
*/
|
|
4
4
|
export type GetProductsRequest = {
|
|
5
5
|
/**
|
|
6
|
-
* Declares buyer intent for this request. 'brief': publisher curates product recommendations from the provided brief. 'wholesale': buyer requests raw inventory to apply their own audiences — brief must not be provided
|
|
6
|
+
* Declares buyer intent for this request. 'brief': publisher curates product recommendations from the provided brief. 'wholesale': buyer requests raw inventory to apply their own audiences — brief must not be provided, and proposals are omitted. 'refine': iterate on products and proposals from a previous get_products response using the refine array of change requests.
|
|
7
7
|
*/
|
|
8
|
-
buying_mode: 'brief' | 'wholesale';
|
|
8
|
+
buying_mode: 'brief' | 'wholesale' | 'refine';
|
|
9
9
|
/**
|
|
10
|
-
* Natural language description of campaign requirements. Required when buying_mode is 'brief'. Must not be provided when buying_mode is 'wholesale'.
|
|
10
|
+
* Natural language description of campaign requirements. Required when buying_mode is 'brief'. Must not be provided when buying_mode is 'wholesale' or 'refine'.
|
|
11
11
|
*/
|
|
12
12
|
brief?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Array of change requests for iterating on products and proposals from a previous get_products response. Each entry declares a scope (request, product, or proposal) and what the buyer is asking for. Only valid when buying_mode is 'refine'. The seller responds to each entry via refinement_applied in the response, matched by position.
|
|
15
|
+
*/
|
|
16
|
+
refine?: ({
|
|
17
|
+
/**
|
|
18
|
+
* Change scoped to the overall request — direction for the selection as a whole.
|
|
19
|
+
*/
|
|
20
|
+
scope: 'request';
|
|
21
|
+
/**
|
|
22
|
+
* What the buyer is asking for at the request level (e.g., 'more video options and less display', 'suggest how to combine these products').
|
|
23
|
+
*/
|
|
24
|
+
ask: string;
|
|
25
|
+
} | {
|
|
26
|
+
/**
|
|
27
|
+
* Change scoped to a specific product.
|
|
28
|
+
*/
|
|
29
|
+
scope: 'product';
|
|
30
|
+
/**
|
|
31
|
+
* Product ID from a previous get_products response.
|
|
32
|
+
*/
|
|
33
|
+
id: string;
|
|
34
|
+
/**
|
|
35
|
+
* 'include': return this product with updated pricing and data. 'omit': exclude this product from the response. 'more_like_this': find additional products similar to this one (the original is also returned).
|
|
36
|
+
*/
|
|
37
|
+
action: 'include' | 'omit' | 'more_like_this';
|
|
38
|
+
/**
|
|
39
|
+
* What the buyer is asking for on this product. For 'include': specific changes to request (e.g., 'add 16:9 format'). For 'more_like_this': what 'similar' means (e.g., 'same audience but video format'). Ignored when action is 'omit'.
|
|
40
|
+
*/
|
|
41
|
+
ask?: string;
|
|
42
|
+
} | {
|
|
43
|
+
/**
|
|
44
|
+
* Change scoped to a specific proposal.
|
|
45
|
+
*/
|
|
46
|
+
scope: 'proposal';
|
|
47
|
+
/**
|
|
48
|
+
* Proposal ID from a previous get_products response.
|
|
49
|
+
*/
|
|
50
|
+
id: string;
|
|
51
|
+
/**
|
|
52
|
+
* 'include': return this proposal with updated allocations and pricing. 'omit': exclude this proposal from the response.
|
|
53
|
+
*/
|
|
54
|
+
action: 'include' | 'omit';
|
|
55
|
+
/**
|
|
56
|
+
* What the buyer is asking for on this proposal (e.g., 'shift more budget toward video', 'reduce total by 10%'). Ignored when action is 'omit'.
|
|
57
|
+
*/
|
|
58
|
+
ask?: string;
|
|
59
|
+
})[];
|
|
13
60
|
brand?: BrandReference;
|
|
14
61
|
catalog?: Catalog;
|
|
15
62
|
account?: AccountReference;
|
|
@@ -19,14 +66,23 @@ export type GetProductsRequest = {
|
|
|
19
66
|
buyer_campaign_ref?: string;
|
|
20
67
|
filters?: ProductFilters;
|
|
21
68
|
property_list?: PropertyListReference;
|
|
69
|
+
/**
|
|
70
|
+
* Specific product fields to include in the response. When omitted, all fields are returned. Use for lightweight discovery calls where only a subset of product data is needed (e.g., just IDs and pricing for comparison). Required fields (product_id, name) are always included regardless of selection.
|
|
71
|
+
*/
|
|
72
|
+
fields?: ('product_id' | 'name' | 'description' | 'publisher_properties' | 'channels' | 'format_ids' | 'placements' | 'delivery_type' | 'pricing_options' | 'forecast' | 'outcome_measurement' | 'delivery_measurement' | 'reporting_capabilities' | 'creative_policy' | 'catalog_types' | 'metric_optimization' | 'conversion_tracking' | 'data_provider_signals' | 'max_optimization_goals' | 'catalog_match' | 'brief_relevance' | 'expires_at' | 'product_card' | 'product_card_detailed')[];
|
|
22
73
|
pagination?: PaginationRequest;
|
|
23
74
|
context?: ContextObject;
|
|
24
75
|
ext?: ExtensionObject;
|
|
25
76
|
} & ({
|
|
26
77
|
buying_mode: 'brief';
|
|
78
|
+
refine?: never;
|
|
27
79
|
} | {
|
|
28
80
|
buying_mode: 'wholesale';
|
|
29
81
|
brief?: never;
|
|
82
|
+
refine?: never;
|
|
83
|
+
} | {
|
|
84
|
+
buying_mode: 'refine';
|
|
85
|
+
brief?: never;
|
|
30
86
|
});
|
|
31
87
|
/**
|
|
32
88
|
* Brand identifier within the house portfolio. Optional for single-brand domains.
|
|
@@ -602,6 +658,27 @@ export interface GetProductsResponse {
|
|
|
602
658
|
* Whether the seller filtered results based on the provided catalog. True if the seller matched catalog items against its inventory. Absent or false if no catalog was provided or the seller does not support catalog matching.
|
|
603
659
|
*/
|
|
604
660
|
catalog_applied?: boolean;
|
|
661
|
+
/**
|
|
662
|
+
* Seller's response to each change request in the refine array, matched by position. Each entry acknowledges whether the corresponding ask was applied, partially applied, or unable to be fulfilled. MUST contain the same number of entries in the same order as the request's refine array. Only present when the request used buying_mode: 'refine'.
|
|
663
|
+
*/
|
|
664
|
+
refinement_applied?: {
|
|
665
|
+
/**
|
|
666
|
+
* Echoes the scope from the corresponding refine entry. Allows orchestrators to cross-validate alignment.
|
|
667
|
+
*/
|
|
668
|
+
scope?: 'request' | 'product' | 'proposal';
|
|
669
|
+
/**
|
|
670
|
+
* Echoes the id from the corresponding refine entry (for product and proposal scopes).
|
|
671
|
+
*/
|
|
672
|
+
id?: string;
|
|
673
|
+
/**
|
|
674
|
+
* 'applied': the ask was fulfilled. 'partial': the ask was partially fulfilled — see notes for details. 'unable': the seller could not fulfill the ask — see notes for why.
|
|
675
|
+
*/
|
|
676
|
+
status: 'applied' | 'partial' | 'unable';
|
|
677
|
+
/**
|
|
678
|
+
* Seller explanation of what was done, what couldn't be done, or why. Recommended when status is 'partial' or 'unable'.
|
|
679
|
+
*/
|
|
680
|
+
notes?: string;
|
|
681
|
+
}[];
|
|
605
682
|
pagination?: PaginationResponse;
|
|
606
683
|
/**
|
|
607
684
|
* When true, this response contains simulated data from sandbox mode.
|
|
@@ -648,7 +725,7 @@ export interface Product {
|
|
|
648
725
|
*/
|
|
649
726
|
pricing_options: PricingOption[];
|
|
650
727
|
forecast?: DeliveryForecast;
|
|
651
|
-
|
|
728
|
+
outcome_measurement?: OutcomeMeasurement;
|
|
652
729
|
/**
|
|
653
730
|
* Measurement provider and methodology for delivery metrics. The buyer accepts the declared provider as the source of truth for the buy. REQUIRED for all products.
|
|
654
731
|
*/
|
|
@@ -691,7 +768,11 @@ export interface Product {
|
|
|
691
768
|
/**
|
|
692
769
|
* Metric kinds this product can optimize for. Buyers should only request metric goals for kinds listed here.
|
|
693
770
|
*/
|
|
694
|
-
supported_metrics: ('clicks' | 'views' | 'completed_views' | 'viewed_seconds' | 'attention_seconds' | 'attention_score' | 'engagements' | 'follows' | 'saves' | 'profile_visits')[];
|
|
771
|
+
supported_metrics: ('clicks' | 'views' | 'completed_views' | 'viewed_seconds' | 'attention_seconds' | 'attention_score' | 'engagements' | 'follows' | 'saves' | 'profile_visits' | 'reach')[];
|
|
772
|
+
/**
|
|
773
|
+
* Reach units this product can optimize for. Required when supported_metrics includes 'reach'. Buyers must set reach_unit to a value in this list on reach optimization goals — sellers reject unsupported values.
|
|
774
|
+
*/
|
|
775
|
+
supported_reach_units?: ReachUnit[];
|
|
695
776
|
/**
|
|
696
777
|
* Video view duration thresholds (in seconds) this product supports for completed_views goals. Only relevant when supported_metrics includes 'completed_views'. When absent, the seller uses their platform default. Buyers must set view_duration_seconds to a value in this list — sellers reject unsupported values.
|
|
697
778
|
*/
|
|
@@ -1226,9 +1307,22 @@ export interface ForecastPoint {
|
|
|
1226
1307
|
*/
|
|
1227
1308
|
budget: number;
|
|
1228
1309
|
/**
|
|
1229
|
-
* Forecasted metric values at this budget level. Keys are
|
|
1310
|
+
* Forecasted metric values at this budget level. Keys are forecastable-metric enum values for delivery/engagement or event-type enum values for outcomes. Values are ForecastRange objects (low/mid/high). Use { "mid": value } for point estimates. Include spend when the platform predicts it will differ from budget. Additional keys beyond the documented properties are allowed for event-type values (purchase, lead, app_install, etc.).
|
|
1230
1311
|
*/
|
|
1231
1312
|
metrics: {
|
|
1313
|
+
audience_size?: ForecastRange;
|
|
1314
|
+
reach?: ForecastRange;
|
|
1315
|
+
frequency?: ForecastRange;
|
|
1316
|
+
impressions?: ForecastRange;
|
|
1317
|
+
clicks?: ForecastRange;
|
|
1318
|
+
spend?: ForecastRange;
|
|
1319
|
+
views?: ForecastRange;
|
|
1320
|
+
completed_views?: ForecastRange;
|
|
1321
|
+
grps?: ForecastRange;
|
|
1322
|
+
engagements?: ForecastRange;
|
|
1323
|
+
follows?: ForecastRange;
|
|
1324
|
+
saves?: ForecastRange;
|
|
1325
|
+
profile_visits?: ForecastRange;
|
|
1232
1326
|
[k: string]: ForecastRange | undefined;
|
|
1233
1327
|
};
|
|
1234
1328
|
}
|
|
@@ -1250,9 +1344,9 @@ export interface ForecastRange {
|
|
|
1250
1344
|
high?: number;
|
|
1251
1345
|
}
|
|
1252
1346
|
/**
|
|
1253
|
-
*
|
|
1347
|
+
* Business outcome measurement capabilities included with a product (e.g., incremental sales lift, brand lift, foot traffic). Distinct from delivery_measurement, which declares who counts ad impressions.
|
|
1254
1348
|
*/
|
|
1255
|
-
export interface
|
|
1349
|
+
export interface OutcomeMeasurement {
|
|
1256
1350
|
/**
|
|
1257
1351
|
* Type of measurement
|
|
1258
1352
|
*/
|
|
@@ -1262,14 +1356,27 @@ export interface Measurement {
|
|
|
1262
1356
|
*/
|
|
1263
1357
|
attribution: string;
|
|
1264
1358
|
/**
|
|
1265
|
-
* Attribution window
|
|
1359
|
+
* Attribution window as a structured duration (e.g., {"interval": 30, "unit": "days"}).
|
|
1266
1360
|
*/
|
|
1267
|
-
window?:
|
|
1361
|
+
window?: Duration;
|
|
1268
1362
|
/**
|
|
1269
1363
|
* Reporting frequency and format
|
|
1270
1364
|
*/
|
|
1271
1365
|
reporting: string;
|
|
1272
1366
|
}
|
|
1367
|
+
/**
|
|
1368
|
+
* A time duration expressed as an interval and unit. Used for frequency cap windows, attribution windows, reach optimization windows, and other time-based settings. When unit is 'campaign', interval must be 1 — the window spans the full campaign flight.
|
|
1369
|
+
*/
|
|
1370
|
+
export interface Duration {
|
|
1371
|
+
/**
|
|
1372
|
+
* Number of time units. Must be 1 when unit is 'campaign'.
|
|
1373
|
+
*/
|
|
1374
|
+
interval: number;
|
|
1375
|
+
/**
|
|
1376
|
+
* Time unit. 'campaign' spans the full campaign flight.
|
|
1377
|
+
*/
|
|
1378
|
+
unit: 'minutes' | 'hours' | 'days' | 'campaign';
|
|
1379
|
+
}
|
|
1273
1380
|
/**
|
|
1274
1381
|
* Reporting capabilities available for a product
|
|
1275
1382
|
*/
|
|
@@ -1298,11 +1405,57 @@ export interface ReportingCapabilities {
|
|
|
1298
1405
|
* Whether this product supports creative-level metric breakdowns in delivery reporting (by_creative within by_package)
|
|
1299
1406
|
*/
|
|
1300
1407
|
supports_creative_breakdown?: boolean;
|
|
1408
|
+
/**
|
|
1409
|
+
* Whether this product supports keyword-level metric breakdowns in delivery reporting (by_keyword within by_package)
|
|
1410
|
+
*/
|
|
1411
|
+
supports_keyword_breakdown?: boolean;
|
|
1412
|
+
supports_geo_breakdown?: GeographicBreakdownSupport;
|
|
1413
|
+
/**
|
|
1414
|
+
* Whether this product supports device type breakdowns in delivery reporting (by_device_type within by_package)
|
|
1415
|
+
*/
|
|
1416
|
+
supports_device_type_breakdown?: boolean;
|
|
1417
|
+
/**
|
|
1418
|
+
* Whether this product supports device platform breakdowns in delivery reporting (by_device_platform within by_package)
|
|
1419
|
+
*/
|
|
1420
|
+
supports_device_platform_breakdown?: boolean;
|
|
1421
|
+
/**
|
|
1422
|
+
* Whether this product supports audience segment breakdowns in delivery reporting (by_audience within by_package)
|
|
1423
|
+
*/
|
|
1424
|
+
supports_audience_breakdown?: boolean;
|
|
1425
|
+
/**
|
|
1426
|
+
* Whether this product supports placement breakdowns in delivery reporting (by_placement within by_package)
|
|
1427
|
+
*/
|
|
1428
|
+
supports_placement_breakdown?: boolean;
|
|
1301
1429
|
/**
|
|
1302
1430
|
* 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.
|
|
1303
1431
|
*/
|
|
1304
1432
|
date_range_support: 'date_range' | 'lifetime_only';
|
|
1305
1433
|
}
|
|
1434
|
+
/**
|
|
1435
|
+
* Geographic breakdown support for this product. Declares which geo levels and systems are available for by_geo reporting within by_package.
|
|
1436
|
+
*/
|
|
1437
|
+
export interface GeographicBreakdownSupport {
|
|
1438
|
+
/**
|
|
1439
|
+
* Supports country-level geo breakdown (ISO 3166-1 alpha-2)
|
|
1440
|
+
*/
|
|
1441
|
+
country?: boolean;
|
|
1442
|
+
/**
|
|
1443
|
+
* Supports region/state-level geo breakdown (ISO 3166-2)
|
|
1444
|
+
*/
|
|
1445
|
+
region?: boolean;
|
|
1446
|
+
/**
|
|
1447
|
+
* Metro area breakdown support. Keys are metro-system enum values; true means supported.
|
|
1448
|
+
*/
|
|
1449
|
+
metro?: {
|
|
1450
|
+
[k: string]: boolean | undefined;
|
|
1451
|
+
};
|
|
1452
|
+
/**
|
|
1453
|
+
* Postal area breakdown support. Keys are postal-system enum values; true means supported.
|
|
1454
|
+
*/
|
|
1455
|
+
postal_area?: {
|
|
1456
|
+
[k: string]: boolean | undefined;
|
|
1457
|
+
};
|
|
1458
|
+
}
|
|
1306
1459
|
/**
|
|
1307
1460
|
* Creative requirements and restrictions for a product
|
|
1308
1461
|
*/
|
|
@@ -1313,6 +1466,10 @@ export interface CreativePolicy {
|
|
|
1313
1466
|
* Whether creative templates are provided
|
|
1314
1467
|
*/
|
|
1315
1468
|
templates_available: boolean;
|
|
1469
|
+
/**
|
|
1470
|
+
* Whether creatives must include provenance metadata. When true, the seller requires buyers to attach provenance declarations to creative submissions. The seller may independently verify claims via get_creative_features.
|
|
1471
|
+
*/
|
|
1472
|
+
provenance_required?: boolean;
|
|
1316
1473
|
}
|
|
1317
1474
|
/**
|
|
1318
1475
|
* A proposed media plan with budget allocations across products. Represents the publisher's strategic recommendation for how to structure a campaign based on the brief. Proposals are actionable - buyers can execute them directly via create_media_buy by providing the proposal_id.
|
|
@@ -1427,7 +1584,7 @@ export interface DaypartTarget {
|
|
|
1427
1584
|
*/
|
|
1428
1585
|
export interface Error {
|
|
1429
1586
|
/**
|
|
1430
|
-
* Error code for programmatic handling
|
|
1587
|
+
* Error code for programmatic handling. Standard codes are defined in error-code.json and enable autonomous agent recovery. Sellers MAY use codes not in the standard vocabulary for platform-specific errors; agents MUST handle unknown codes gracefully by falling back to the recovery classification.
|
|
1431
1588
|
*/
|
|
1432
1589
|
code: string;
|
|
1433
1590
|
/**
|
|
@@ -1450,6 +1607,10 @@ export interface Error {
|
|
|
1450
1607
|
* Additional task-specific error details
|
|
1451
1608
|
*/
|
|
1452
1609
|
details?: {};
|
|
1610
|
+
/**
|
|
1611
|
+
* Agent recovery classification. transient: retry after delay (rate limit, service unavailable, timeout). correctable: fix the request and resend (invalid field, budget too low, creative rejected). terminal: requires human action (account suspended, payment required, account not found).
|
|
1612
|
+
*/
|
|
1613
|
+
recovery?: 'transient' | 'correctable' | 'terminal';
|
|
1453
1614
|
}
|
|
1454
1615
|
/**
|
|
1455
1616
|
* Standard cursor-based pagination metadata for list responses
|
|
@@ -1471,11 +1632,15 @@ export interface PaginationResponse {
|
|
|
1471
1632
|
/**
|
|
1472
1633
|
* Types of content that can be used as creative assets. Describes what KIND of content an asset contains (image, video, code, etc.), not where it displays.
|
|
1473
1634
|
*/
|
|
1474
|
-
export type AssetContentType = 'image' | 'video' | 'audio' | 'text' | 'markdown' | 'html' | 'css' | 'javascript' | 'vast' | 'daast' | 'url' | 'webhook';
|
|
1635
|
+
export type AssetContentType = 'image' | 'video' | 'audio' | 'text' | 'markdown' | 'html' | 'css' | 'javascript' | 'vast' | 'daast' | 'url' | 'webhook' | 'brief' | 'catalog';
|
|
1475
1636
|
/**
|
|
1476
1637
|
* Filter to formats that meet at least this WCAG conformance level (A < AA < AAA)
|
|
1477
1638
|
*/
|
|
1478
1639
|
export type WCAGLevel = 'A' | 'AA' | 'AAA';
|
|
1640
|
+
/**
|
|
1641
|
+
* Where a required disclosure should appear within a creative. Used by creative briefs to specify disclosure placement and by formats to declare which positions they can render.
|
|
1642
|
+
*/
|
|
1643
|
+
export type DisclosurePosition = 'prominent' | 'footer' | 'audio' | 'subtitle' | 'overlay' | 'end_card' | 'pre_roll' | 'companion';
|
|
1479
1644
|
/**
|
|
1480
1645
|
* Request parameters for discovering supported creative formats
|
|
1481
1646
|
*/
|
|
@@ -1514,6 +1679,10 @@ export interface ListCreativeFormatsRequest {
|
|
|
1514
1679
|
*/
|
|
1515
1680
|
name_search?: string;
|
|
1516
1681
|
wcag_level?: WCAGLevel;
|
|
1682
|
+
/**
|
|
1683
|
+
* Filter to formats whose supported_disclosure_positions include all of these positions. Use to find formats compatible with a brief's compliance requirements.
|
|
1684
|
+
*/
|
|
1685
|
+
disclosure_positions?: DisclosurePosition[];
|
|
1517
1686
|
/**
|
|
1518
1687
|
* Filter to formats whose output_format_ids includes any of these format IDs. Returns formats that can produce these outputs — inspect each result's input_format_ids to see what inputs they accept.
|
|
1519
1688
|
*/
|
|
@@ -1534,29 +1703,6 @@ export type FormatIDParameter = 'dimensions' | 'duration';
|
|
|
1534
1703
|
* 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.
|
|
1535
1704
|
*/
|
|
1536
1705
|
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' | 'CATALOG_ID' | 'SKU' | 'GTIN' | 'OFFERING_ID' | 'JOB_ID' | 'HOTEL_ID' | 'FLIGHT_ID' | 'VEHICLE_ID' | 'LISTING_ID' | 'STORE_ID' | 'PROGRAM_ID' | 'DESTINATION_ID' | 'CREATIVE_VARIANT_ID' | 'APP_ITEM_ID';
|
|
1537
|
-
/**
|
|
1538
|
-
* Technical requirements for each item in this group (e.g., max_length for text, min_width/aspect_ratio for images). Applies uniformly to all items in the group.
|
|
1539
|
-
*/
|
|
1540
|
-
export type AssetRequirements = ImageAssetRequirements | VideoAssetRequirements | AudioAssetRequirements | TextAssetRequirements | MarkdownAssetRequirements | HTMLAssetRequirements | CSSAssetRequirements | JavaScriptAssetRequirements | VASTAssetRequirements | DAASTAssetRequirements | URLAssetRequirements | WebhookAssetRequirements;
|
|
1541
|
-
/**
|
|
1542
|
-
* Maps a format template slot to a catalog item field or typed asset pool. The 'kind' field identifies the binding variant. All bindings are optional — agents can still infer mappings without them.
|
|
1543
|
-
*/
|
|
1544
|
-
export type CatalogFieldBinding = ScalarBinding | AssetPoolBinding | {
|
|
1545
|
-
kind: 'catalog_group';
|
|
1546
|
-
/**
|
|
1547
|
-
* The asset_group_id of a repeatable_group in the format's assets array.
|
|
1548
|
-
*/
|
|
1549
|
-
format_group_id: string;
|
|
1550
|
-
/**
|
|
1551
|
-
* Each repetition of the format's repeatable_group maps to one item from the catalog.
|
|
1552
|
-
*/
|
|
1553
|
-
catalog_item: true;
|
|
1554
|
-
/**
|
|
1555
|
-
* Scalar and asset pool bindings that apply within each repetition of the group. Nested catalog_group bindings are not permitted.
|
|
1556
|
-
*/
|
|
1557
|
-
per_item_bindings?: (ScalarBinding | AssetPoolBinding)[];
|
|
1558
|
-
ext?: ExtensionObject;
|
|
1559
|
-
};
|
|
1560
1706
|
/**
|
|
1561
1707
|
* Capabilities supported by creative agents for format handling
|
|
1562
1708
|
*/
|
|
@@ -1697,6 +1843,10 @@ export interface Format {
|
|
|
1697
1843
|
*/
|
|
1698
1844
|
requires_accessible_assets?: boolean;
|
|
1699
1845
|
};
|
|
1846
|
+
/**
|
|
1847
|
+
* Disclosure positions this format can render. Buyers use this to determine whether a format can satisfy their compliance requirements before submitting a creative. When omitted, the format makes no disclosure rendering guarantees — creative agents SHOULD treat this as incompatible with briefs that require specific disclosure positions. Values correspond to positions on creative-brief.json required_disclosures.
|
|
1848
|
+
*/
|
|
1849
|
+
supported_disclosure_positions?: DisclosurePosition[];
|
|
1700
1850
|
/**
|
|
1701
1851
|
* Optional detailed card with carousel and full specifications. Provides rich format documentation similar to ad spec pages.
|
|
1702
1852
|
*/
|
|
@@ -1707,10 +1857,6 @@ export interface Format {
|
|
|
1707
1857
|
*/
|
|
1708
1858
|
manifest: {};
|
|
1709
1859
|
};
|
|
1710
|
-
/**
|
|
1711
|
-
* Catalog feeds this format requires for rendering. Formats that display product listings, store locators, inventory availability, or promotional pricing declare what catalog types must be synced to the account. Buyers ensure the required catalogs are synced via sync_catalogs before submitting creatives in this format.
|
|
1712
|
-
*/
|
|
1713
|
-
catalog_requirements?: CatalogRequirements[];
|
|
1714
1860
|
/**
|
|
1715
1861
|
* 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.
|
|
1716
1862
|
*/
|
|
@@ -1726,7 +1872,7 @@ export interface BaseIndividualAsset {
|
|
|
1726
1872
|
*/
|
|
1727
1873
|
asset_id: string;
|
|
1728
1874
|
/**
|
|
1729
|
-
*
|
|
1875
|
+
* Descriptive label for this asset's purpose (e.g., 'hero_image', 'logo', 'third_party_tracking'). For documentation and UI display only — manifests key assets by asset_id, not asset_role.
|
|
1730
1876
|
*/
|
|
1731
1877
|
asset_role?: string;
|
|
1732
1878
|
/**
|
|
@@ -1799,7 +1945,7 @@ export interface BaseGroupAsset {
|
|
|
1799
1945
|
*/
|
|
1800
1946
|
asset_id: string;
|
|
1801
1947
|
/**
|
|
1802
|
-
*
|
|
1948
|
+
* Descriptive label for this asset's purpose. For documentation and UI display only — manifests key assets by asset_id, not asset_role.
|
|
1803
1949
|
*/
|
|
1804
1950
|
asset_role?: string;
|
|
1805
1951
|
/**
|
|
@@ -1812,562 +1958,253 @@ export interface BaseGroupAsset {
|
|
|
1812
1958
|
overlays?: Overlay[];
|
|
1813
1959
|
}
|
|
1814
1960
|
/**
|
|
1815
|
-
*
|
|
1961
|
+
* Budget pacing strategy
|
|
1962
|
+
*/
|
|
1963
|
+
export type Pacing = 'even' | 'asap' | 'front_loaded';
|
|
1964
|
+
/**
|
|
1965
|
+
* A single optimization target for a package. Packages accept an array of optimization_goals. When multiple goals are present, priority determines which the seller focuses on — 1 is highest priority (primary goal); higher numbers are secondary. Duplicate priority values result in undefined seller behavior.
|
|
1816
1966
|
*/
|
|
1817
|
-
export
|
|
1818
|
-
|
|
1967
|
+
export type OptimizationGoal = {
|
|
1968
|
+
kind: 'metric';
|
|
1819
1969
|
/**
|
|
1820
|
-
*
|
|
1970
|
+
* Seller-native metric to optimize for. Delivery metrics: clicks (link clicks, swipe-throughs, CTA taps that navigate away), views (viewable impressions), completed_views (video/audio completions — see view_duration_seconds), reach (unique audience reach — see reach_unit and target_frequency). Duration/score metrics: viewed_seconds (time in view per impression), attention_seconds (attention time per impression), attention_score (vendor-specific attention score). Audience action metrics: engagements (any direct interaction with the ad unit beyond viewing — social reactions/comments/shares, story/unit opens, interactive overlay taps, companion banner interactions on audio and CTV), follows (new followers, page likes, artist/podcast/channel subscribes), saves (saves, bookmarks, playlist adds, pins — signals of intent to return), profile_visits (visits to the brand's in-platform page — profile, artist page, channel, or storefront. Does not include external website clicks, which are covered by 'clicks').
|
|
1821
1971
|
*/
|
|
1822
|
-
|
|
1972
|
+
metric: 'clicks' | 'views' | 'completed_views' | 'viewed_seconds' | 'attention_seconds' | 'attention_score' | 'engagements' | 'follows' | 'saves' | 'profile_visits' | 'reach';
|
|
1823
1973
|
/**
|
|
1824
|
-
*
|
|
1974
|
+
* Unit for reach measurement. Required when metric is 'reach'. Must be a value declared in the product's metric_optimization.supported_reach_units.
|
|
1825
1975
|
*/
|
|
1826
|
-
|
|
1976
|
+
reach_unit?: ReachUnit;
|
|
1827
1977
|
/**
|
|
1828
|
-
*
|
|
1978
|
+
* Target frequency band for reach optimization. Only applicable when metric is 'reach'. Frames frequency as an optimization signal: the seller should treat impressions toward entities already within the [min, max] band as lower-value, and impressions toward unreached entities as higher-value. This shifts budget toward fresh reach rather than re-reaching known users. When omitted, the seller maximizes unique reach without a frequency constraint. A hard cap can still be layered via targeting_overlay.frequency_cap if a ceiling is needed.
|
|
1829
1979
|
*/
|
|
1830
|
-
|
|
1980
|
+
target_frequency?: {
|
|
1981
|
+
[k: string]: unknown | undefined;
|
|
1982
|
+
};
|
|
1831
1983
|
/**
|
|
1832
|
-
*
|
|
1984
|
+
* Minimum video view duration in seconds that qualifies as a completed_view for this goal. Only applicable when metric is 'completed_views'. When omitted, the seller uses their platform default (typically 2–15 seconds). Common values: 2 (Snap/LinkedIn default), 6 (TikTok), 15 (Snap 15-second views, Meta ThruPlay). Sellers declare which durations they support in metric_optimization.supported_view_durations. Sellers must reject goals with unsupported values — silent rounding would create measurement discrepancies.
|
|
1833
1985
|
*/
|
|
1834
|
-
|
|
1986
|
+
view_duration_seconds?: number;
|
|
1835
1987
|
/**
|
|
1836
|
-
*
|
|
1988
|
+
* Target for this metric. When omitted, the seller optimizes for maximum metric volume within budget.
|
|
1837
1989
|
*/
|
|
1838
|
-
|
|
1990
|
+
target?: {
|
|
1991
|
+
kind: 'cost_per';
|
|
1992
|
+
/**
|
|
1993
|
+
* Target cost per metric unit in the buy currency
|
|
1994
|
+
*/
|
|
1995
|
+
value: number;
|
|
1996
|
+
} | {
|
|
1997
|
+
kind: 'threshold_rate';
|
|
1998
|
+
/**
|
|
1999
|
+
* Minimum per-impression value. Units depend on the metric: proportion (clicks, views, completed_views), seconds (viewed_seconds, attention_seconds), or score (attention_score).
|
|
2000
|
+
*/
|
|
2001
|
+
value: number;
|
|
2002
|
+
};
|
|
1839
2003
|
/**
|
|
1840
|
-
*
|
|
2004
|
+
* Relative priority among all optimization goals on this package. 1 = highest priority (primary goal); higher numbers are lower priority (secondary signals). When omitted, sellers may use array position as priority.
|
|
1841
2005
|
*/
|
|
1842
|
-
|
|
1843
|
-
}
|
|
1844
|
-
|
|
1845
|
-
* Declares per-group creative requirements that each offering must satisfy. Allows formats to specify what asset groups (headlines, images, videos) offerings must provide, along with count and per-asset technical constraints.
|
|
1846
|
-
*/
|
|
1847
|
-
export interface OfferingAssetConstraint {
|
|
2006
|
+
priority?: number;
|
|
2007
|
+
} | {
|
|
2008
|
+
kind: 'event';
|
|
1848
2009
|
/**
|
|
1849
|
-
*
|
|
2010
|
+
* Event source and type pairs that feed this goal. Each entry identifies a source and event type to include. When the seller supports multi_source_event_dedup (declared in get_adcp_capabilities), they deduplicate by event_id across all entries — the same business event from multiple sources counts once, using value_field and value_factor from the first matching entry. When multi_source_event_dedup is false or absent, buyers should use a single entry per goal; the seller will use only the first entry. All event sources must be configured via sync_event_sources.
|
|
1850
2011
|
*/
|
|
1851
|
-
|
|
1852
|
-
|
|
2012
|
+
event_sources: {
|
|
2013
|
+
/**
|
|
2014
|
+
* Event source to include (must be configured on this account via sync_event_sources)
|
|
2015
|
+
*/
|
|
2016
|
+
event_source_id: string;
|
|
2017
|
+
event_type: EventType;
|
|
2018
|
+
/**
|
|
2019
|
+
* Required when event_type is 'custom'. Platform-specific name for the custom event.
|
|
2020
|
+
*/
|
|
2021
|
+
custom_event_name?: string;
|
|
2022
|
+
/**
|
|
2023
|
+
* Which field in the event's custom_data carries the monetary value. The seller must use this field for value extraction and aggregation when computing ROAS and conversion value metrics. Required on at least one entry when target.kind is 'per_ad_spend' or 'maximize_value'. Common values: 'value', 'order_total', 'profit_margin'. This is not passed as a parameter to underlying platform APIs — the seller maps it to their platform's value ingestion mechanism.
|
|
2024
|
+
*/
|
|
2025
|
+
value_field?: string;
|
|
2026
|
+
/**
|
|
2027
|
+
* Multiplier the seller must apply to value_field before aggregation. Use -1 for refund events (negate the value), 0.01 for values in cents, -0.01 for refunds in cents. A value of 0 zeroes out this source's value contribution (the source still counts for event dedup). Defaults to 1. This is not passed as a parameter to underlying platform APIs — the seller applies it when computing aggregated value metrics.
|
|
2028
|
+
*/
|
|
2029
|
+
value_factor?: number;
|
|
2030
|
+
}[];
|
|
1853
2031
|
/**
|
|
1854
|
-
*
|
|
2032
|
+
* Target cost or return for this event goal. When omitted, the seller optimizes for maximum conversions within budget.
|
|
1855
2033
|
*/
|
|
1856
|
-
|
|
2034
|
+
target?: {
|
|
2035
|
+
kind: 'cost_per';
|
|
2036
|
+
/**
|
|
2037
|
+
* Target cost per event in the buy currency
|
|
2038
|
+
*/
|
|
2039
|
+
value: number;
|
|
2040
|
+
} | {
|
|
2041
|
+
kind: 'per_ad_spend';
|
|
2042
|
+
/**
|
|
2043
|
+
* Target return ratio (e.g., 4.0 means $4 of value per $1 spent)
|
|
2044
|
+
*/
|
|
2045
|
+
value: number;
|
|
2046
|
+
} | {
|
|
2047
|
+
kind: 'maximize_value';
|
|
2048
|
+
};
|
|
1857
2049
|
/**
|
|
1858
|
-
*
|
|
2050
|
+
* Attribution window for this optimization goal. Values must match an option declared in the seller's conversion_tracking.attribution_windows capability. Sellers must reject windows not in their declared capabilities. When omitted, the seller uses their default window.
|
|
1859
2051
|
*/
|
|
1860
|
-
|
|
2052
|
+
attribution_window?: {
|
|
2053
|
+
/**
|
|
2054
|
+
* Post-click attribution window. Conversions within this duration after a click are attributed to the ad (e.g. {"interval": 7, "unit": "days"}).
|
|
2055
|
+
*/
|
|
2056
|
+
post_click: Duration;
|
|
2057
|
+
/**
|
|
2058
|
+
* Post-view attribution window. Conversions within this duration after an ad impression (without click) are attributed to the ad (e.g. {"interval": 1, "unit": "days"}).
|
|
2059
|
+
*/
|
|
2060
|
+
post_view?: Duration;
|
|
2061
|
+
};
|
|
1861
2062
|
/**
|
|
1862
|
-
*
|
|
2063
|
+
* Relative priority among all optimization goals on this package. 1 = highest priority (primary goal); higher numbers are lower priority (secondary signals). When omitted, sellers may use array position as priority.
|
|
1863
2064
|
*/
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
ext?: ExtensionObject;
|
|
1867
|
-
}
|
|
2065
|
+
priority?: number;
|
|
2066
|
+
};
|
|
1868
2067
|
/**
|
|
1869
|
-
*
|
|
2068
|
+
* Postal code system (e.g., 'us_zip', 'gb_outward'). System name encodes country and precision.
|
|
1870
2069
|
*/
|
|
1871
|
-
export
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
*/
|
|
1879
|
-
max_width?: number;
|
|
1880
|
-
/**
|
|
1881
|
-
* Minimum height in pixels. For exact dimensions, set min_height = max_height.
|
|
1882
|
-
*/
|
|
1883
|
-
min_height?: number;
|
|
1884
|
-
/**
|
|
1885
|
-
* Maximum height in pixels. For exact dimensions, set min_height = max_height.
|
|
1886
|
-
*/
|
|
1887
|
-
max_height?: number;
|
|
1888
|
-
/**
|
|
1889
|
-
* Required aspect ratio (e.g., '16:9', '1:1', '1.91:1')
|
|
1890
|
-
*/
|
|
1891
|
-
aspect_ratio?: string;
|
|
2070
|
+
export type PostalCodeSystem = 'us_zip' | 'us_zip_plus_four' | 'gb_outward' | 'gb_full' | 'ca_fsa' | 'ca_full' | 'de_plz' | 'fr_code_postal' | 'au_postcode' | 'ch_plz' | 'at_plz';
|
|
2071
|
+
/**
|
|
2072
|
+
* Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set.
|
|
2073
|
+
*/
|
|
2074
|
+
export type FrequencyCap = {
|
|
2075
|
+
[k: string]: unknown | undefined;
|
|
2076
|
+
} & {
|
|
1892
2077
|
/**
|
|
1893
|
-
*
|
|
2078
|
+
* Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {"interval": 60, "unit": "minutes"} for a 1-hour cooldown). Preferred over suppress_minutes.
|
|
1894
2079
|
*/
|
|
1895
|
-
|
|
2080
|
+
suppress?: Duration;
|
|
1896
2081
|
/**
|
|
1897
|
-
*
|
|
2082
|
+
* Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).
|
|
1898
2083
|
*/
|
|
1899
|
-
|
|
2084
|
+
suppress_minutes?: number;
|
|
1900
2085
|
/**
|
|
1901
|
-
*
|
|
2086
|
+
* Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window; 'campaign' applies a fixed cap across the full flight.
|
|
1902
2087
|
*/
|
|
1903
|
-
|
|
2088
|
+
max_impressions?: number;
|
|
1904
2089
|
/**
|
|
1905
|
-
*
|
|
2090
|
+
* Entity granularity for impression counting. Required when max_impressions is set.
|
|
1906
2091
|
*/
|
|
1907
|
-
|
|
2092
|
+
per?: ReachUnit;
|
|
1908
2093
|
/**
|
|
1909
|
-
*
|
|
2094
|
+
* Time window for the max_impressions cap (e.g. {"interval": 7, "unit": "days"} or {"interval": 1, "unit": "campaign"} for the full flight). Required when max_impressions is set.
|
|
1910
2095
|
*/
|
|
1911
|
-
|
|
1912
|
-
}
|
|
2096
|
+
window?: Duration;
|
|
2097
|
+
};
|
|
2098
|
+
/**
|
|
2099
|
+
* Methods for verifying user age for compliance. Does not include 'inferred' as it is not accepted for regulatory compliance.
|
|
2100
|
+
*/
|
|
2101
|
+
export type AgeVerificationMethod = 'facial_age_estimation' | 'id_document' | 'digital_id' | 'credit_card' | 'world_id';
|
|
2102
|
+
/**
|
|
2103
|
+
* Operating system platforms for device targeting. Browser values from Sec-CH-UA-Platform standard, extended for CTV.
|
|
2104
|
+
*/
|
|
2105
|
+
export type DevicePlatform = 'ios' | 'android' | 'windows' | 'macos' | 'linux' | 'chromeos' | 'tvos' | 'tizen' | 'webos' | 'fire_os' | 'roku_os' | 'unknown';
|
|
2106
|
+
/**
|
|
2107
|
+
* Device form factor categories for targeting and reporting. Complements device-platform (operating system) with hardware classification. OpenRTB mapping: 1 (Mobile/Tablet General) → mobile, 2 (PC) → desktop, 4 (Phone) → mobile, 5 (Tablet) → tablet, 6 (Connected Device) → ctv, 7 (Set Top Box) → ctv. DOOH inventory uses dooh.
|
|
2108
|
+
*/
|
|
2109
|
+
export type DeviceType = 'desktop' | 'mobile' | 'tablet' | 'ctv' | 'dooh' | 'unknown';
|
|
1913
2110
|
/**
|
|
1914
|
-
*
|
|
2111
|
+
* IPTC-aligned classification of AI involvement in producing this content
|
|
1915
2112
|
*/
|
|
1916
|
-
export
|
|
2113
|
+
export type DigitalSourceType = 'digital_capture' | 'digital_creation' | 'trained_algorithmic_media' | 'composite_with_trained_algorithmic_media' | 'algorithmic_media' | 'composite_capture' | 'composite_synthetic' | 'human_edits' | 'data_driven_media';
|
|
2114
|
+
/**
|
|
2115
|
+
* VAST (Video Ad Serving Template) tag for third-party video ad serving
|
|
2116
|
+
*/
|
|
2117
|
+
export type VASTAsset = {
|
|
1917
2118
|
/**
|
|
1918
|
-
*
|
|
2119
|
+
* Discriminator indicating VAST is delivered via URL endpoint
|
|
1919
2120
|
*/
|
|
1920
|
-
|
|
2121
|
+
delivery_type: 'url';
|
|
1921
2122
|
/**
|
|
1922
|
-
*
|
|
2123
|
+
* URL endpoint that returns VAST XML
|
|
1923
2124
|
*/
|
|
1924
|
-
|
|
2125
|
+
url: string;
|
|
2126
|
+
vast_version?: VASTVersion;
|
|
1925
2127
|
/**
|
|
1926
|
-
*
|
|
2128
|
+
* Whether VPAID (Video Player-Ad Interface Definition) is supported
|
|
1927
2129
|
*/
|
|
1928
|
-
|
|
2130
|
+
vpaid_enabled?: boolean;
|
|
1929
2131
|
/**
|
|
1930
|
-
*
|
|
2132
|
+
* Expected video duration in milliseconds (if known)
|
|
1931
2133
|
*/
|
|
1932
|
-
|
|
2134
|
+
duration_ms?: number;
|
|
1933
2135
|
/**
|
|
1934
|
-
*
|
|
2136
|
+
* Tracking events supported by this VAST tag
|
|
1935
2137
|
*/
|
|
1936
|
-
|
|
2138
|
+
tracking_events?: VASTTrackingEvent[];
|
|
1937
2139
|
/**
|
|
1938
|
-
*
|
|
2140
|
+
* URL to captions file (WebVTT, SRT, etc.)
|
|
1939
2141
|
*/
|
|
1940
|
-
|
|
2142
|
+
captions_url?: string;
|
|
1941
2143
|
/**
|
|
1942
|
-
*
|
|
2144
|
+
* URL to audio description track for visually impaired users
|
|
1943
2145
|
*/
|
|
1944
|
-
|
|
2146
|
+
audio_description_url?: string;
|
|
2147
|
+
provenance?: Provenance;
|
|
2148
|
+
} | {
|
|
1945
2149
|
/**
|
|
1946
|
-
*
|
|
2150
|
+
* Discriminator indicating VAST is delivered as inline XML content
|
|
1947
2151
|
*/
|
|
1948
|
-
|
|
2152
|
+
delivery_type: 'inline';
|
|
1949
2153
|
/**
|
|
1950
|
-
*
|
|
2154
|
+
* Inline VAST XML content
|
|
1951
2155
|
*/
|
|
1952
|
-
|
|
2156
|
+
content: string;
|
|
2157
|
+
vast_version?: VASTVersion;
|
|
1953
2158
|
/**
|
|
1954
|
-
*
|
|
2159
|
+
* Whether VPAID (Video Player-Ad Interface Definition) is supported
|
|
1955
2160
|
*/
|
|
1956
|
-
|
|
2161
|
+
vpaid_enabled?: boolean;
|
|
1957
2162
|
/**
|
|
1958
|
-
*
|
|
2163
|
+
* Expected video duration in milliseconds (if known)
|
|
1959
2164
|
*/
|
|
1960
|
-
|
|
2165
|
+
duration_ms?: number;
|
|
1961
2166
|
/**
|
|
1962
|
-
*
|
|
2167
|
+
* Tracking events supported by this VAST tag
|
|
1963
2168
|
*/
|
|
1964
|
-
|
|
2169
|
+
tracking_events?: VASTTrackingEvent[];
|
|
1965
2170
|
/**
|
|
1966
|
-
*
|
|
2171
|
+
* URL to captions file (WebVTT, SRT, etc.)
|
|
1967
2172
|
*/
|
|
1968
|
-
|
|
2173
|
+
captions_url?: string;
|
|
1969
2174
|
/**
|
|
1970
|
-
*
|
|
2175
|
+
* URL to audio description track for visually impaired users
|
|
1971
2176
|
*/
|
|
1972
|
-
|
|
1973
|
-
|
|
2177
|
+
audio_description_url?: string;
|
|
2178
|
+
provenance?: Provenance;
|
|
2179
|
+
};
|
|
1974
2180
|
/**
|
|
1975
|
-
*
|
|
2181
|
+
* VAST specification version
|
|
1976
2182
|
*/
|
|
1977
|
-
export
|
|
1978
|
-
/**
|
|
1979
|
-
* Minimum duration in milliseconds
|
|
1980
|
-
*/
|
|
1981
|
-
min_duration_ms?: number;
|
|
1982
|
-
/**
|
|
1983
|
-
* Maximum duration in milliseconds
|
|
1984
|
-
*/
|
|
1985
|
-
max_duration_ms?: number;
|
|
1986
|
-
/**
|
|
1987
|
-
* Accepted audio file formats
|
|
1988
|
-
*/
|
|
1989
|
-
formats?: ('mp3' | 'aac' | 'wav' | 'ogg' | 'flac')[];
|
|
1990
|
-
/**
|
|
1991
|
-
* Maximum file size in kilobytes
|
|
1992
|
-
*/
|
|
1993
|
-
max_file_size_kb?: number;
|
|
1994
|
-
/**
|
|
1995
|
-
* Accepted sample rates in Hz (e.g., [44100, 48000])
|
|
1996
|
-
*/
|
|
1997
|
-
sample_rates?: number[];
|
|
1998
|
-
/**
|
|
1999
|
-
* Accepted audio channel configurations
|
|
2000
|
-
*/
|
|
2001
|
-
channels?: ('mono' | 'stereo')[];
|
|
2002
|
-
/**
|
|
2003
|
-
* Minimum audio bitrate in kilobits per second
|
|
2004
|
-
*/
|
|
2005
|
-
min_bitrate_kbps?: number;
|
|
2006
|
-
/**
|
|
2007
|
-
* Maximum audio bitrate in kilobits per second
|
|
2008
|
-
*/
|
|
2009
|
-
max_bitrate_kbps?: number;
|
|
2010
|
-
}
|
|
2011
|
-
/**
|
|
2012
|
-
* Requirements for text creative assets such as headlines, body copy, and CTAs.
|
|
2013
|
-
*/
|
|
2014
|
-
export interface TextAssetRequirements {
|
|
2015
|
-
/**
|
|
2016
|
-
* Minimum character length
|
|
2017
|
-
*/
|
|
2018
|
-
min_length?: number;
|
|
2019
|
-
/**
|
|
2020
|
-
* Maximum character length
|
|
2021
|
-
*/
|
|
2022
|
-
max_length?: number;
|
|
2023
|
-
/**
|
|
2024
|
-
* Minimum number of lines
|
|
2025
|
-
*/
|
|
2026
|
-
min_lines?: number;
|
|
2027
|
-
/**
|
|
2028
|
-
* Maximum number of lines
|
|
2029
|
-
*/
|
|
2030
|
-
max_lines?: number;
|
|
2031
|
-
/**
|
|
2032
|
-
* Regex pattern defining allowed characters (e.g., '^[a-zA-Z0-9 .,!?-]+$')
|
|
2033
|
-
*/
|
|
2034
|
-
character_pattern?: string;
|
|
2035
|
-
/**
|
|
2036
|
-
* List of prohibited words or phrases
|
|
2037
|
-
*/
|
|
2038
|
-
prohibited_terms?: string[];
|
|
2039
|
-
}
|
|
2040
|
-
/**
|
|
2041
|
-
* Requirements for markdown creative assets.
|
|
2042
|
-
*/
|
|
2043
|
-
export interface MarkdownAssetRequirements {
|
|
2044
|
-
/**
|
|
2045
|
-
* Maximum character length
|
|
2046
|
-
*/
|
|
2047
|
-
max_length?: number;
|
|
2048
|
-
}
|
|
2049
|
-
/**
|
|
2050
|
-
* Requirements for HTML creative assets. These define the execution environment constraints that the HTML must be compatible with.
|
|
2051
|
-
*/
|
|
2052
|
-
export interface HTMLAssetRequirements {
|
|
2053
|
-
/**
|
|
2054
|
-
* Maximum file size in kilobytes for the HTML asset
|
|
2055
|
-
*/
|
|
2056
|
-
max_file_size_kb?: number;
|
|
2057
|
-
/**
|
|
2058
|
-
* Sandbox environment the HTML must be compatible with. 'none' = direct DOM access, 'iframe' = standard iframe isolation, 'safeframe' = IAB SafeFrame container, 'fencedframe' = Privacy Sandbox fenced frame
|
|
2059
|
-
*/
|
|
2060
|
-
sandbox?: 'none' | 'iframe' | 'safeframe' | 'fencedframe';
|
|
2061
|
-
/**
|
|
2062
|
-
* Whether the HTML creative can load external resources (scripts, images, fonts, etc.). When false, all resources must be inlined or bundled.
|
|
2063
|
-
*/
|
|
2064
|
-
external_resources_allowed?: boolean;
|
|
2065
|
-
/**
|
|
2066
|
-
* List of domains the HTML creative may reference for external resources. Only applicable when external_resources_allowed is true.
|
|
2067
|
-
*/
|
|
2068
|
-
allowed_external_domains?: string[];
|
|
2069
|
-
}
|
|
2070
|
-
/**
|
|
2071
|
-
* Requirements for CSS creative assets.
|
|
2072
|
-
*/
|
|
2073
|
-
export interface CSSAssetRequirements {
|
|
2074
|
-
/**
|
|
2075
|
-
* Maximum file size in kilobytes
|
|
2076
|
-
*/
|
|
2077
|
-
max_file_size_kb?: number;
|
|
2078
|
-
}
|
|
2079
|
-
/**
|
|
2080
|
-
* Requirements for JavaScript creative assets. These define the execution environment constraints that the JavaScript must be compatible with.
|
|
2081
|
-
*/
|
|
2082
|
-
export interface JavaScriptAssetRequirements {
|
|
2083
|
-
/**
|
|
2084
|
-
* Maximum file size in kilobytes for the JavaScript asset
|
|
2085
|
-
*/
|
|
2086
|
-
max_file_size_kb?: number;
|
|
2087
|
-
/**
|
|
2088
|
-
* Required JavaScript module format. 'script' = classic script, 'module' = ES modules, 'iife' = immediately invoked function expression
|
|
2089
|
-
*/
|
|
2090
|
-
module_type?: 'script' | 'module' | 'iife';
|
|
2091
|
-
/**
|
|
2092
|
-
* Whether the JavaScript must use strict mode
|
|
2093
|
-
*/
|
|
2094
|
-
strict_mode_required?: boolean;
|
|
2095
|
-
/**
|
|
2096
|
-
* Whether the JavaScript can load external resources dynamically
|
|
2097
|
-
*/
|
|
2098
|
-
external_resources_allowed?: boolean;
|
|
2099
|
-
/**
|
|
2100
|
-
* List of domains the JavaScript may reference for external resources. Only applicable when external_resources_allowed is true.
|
|
2101
|
-
*/
|
|
2102
|
-
allowed_external_domains?: string[];
|
|
2103
|
-
}
|
|
2104
|
-
/**
|
|
2105
|
-
* Requirements for VAST (Video Ad Serving Template) creative assets.
|
|
2106
|
-
*/
|
|
2107
|
-
export interface VASTAssetRequirements {
|
|
2108
|
-
/**
|
|
2109
|
-
* Required VAST version
|
|
2110
|
-
*/
|
|
2111
|
-
vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2';
|
|
2112
|
-
}
|
|
2113
|
-
/**
|
|
2114
|
-
* Requirements for DAAST (Digital Audio Ad Serving Template) creative assets.
|
|
2115
|
-
*/
|
|
2116
|
-
export interface DAASTAssetRequirements {
|
|
2117
|
-
/**
|
|
2118
|
-
* Required DAAST version. DAAST 1.0 is the current IAB standard.
|
|
2119
|
-
*/
|
|
2120
|
-
daast_version?: '1.0';
|
|
2121
|
-
}
|
|
2122
|
-
/**
|
|
2123
|
-
* Requirements for URL assets such as click-through URLs, tracking pixels, and landing pages.
|
|
2124
|
-
*/
|
|
2125
|
-
export interface URLAssetRequirements {
|
|
2126
|
-
/**
|
|
2127
|
-
* Standard role for this URL asset. Use this to constrain which purposes are valid for this URL slot. Complements asset_role (which is a human-readable label) by providing a machine-readable enum.
|
|
2128
|
-
*/
|
|
2129
|
-
role?: 'clickthrough' | 'landing_page' | 'impression_tracker' | 'click_tracker' | 'viewability_tracker' | 'third_party_tracker';
|
|
2130
|
-
/**
|
|
2131
|
-
* Allowed URL protocols. HTTPS is recommended for all ad URLs.
|
|
2132
|
-
*/
|
|
2133
|
-
protocols?: ('https' | 'http')[];
|
|
2134
|
-
/**
|
|
2135
|
-
* List of allowed domains for the URL
|
|
2136
|
-
*/
|
|
2137
|
-
allowed_domains?: string[];
|
|
2138
|
-
/**
|
|
2139
|
-
* Maximum URL length in characters
|
|
2140
|
-
*/
|
|
2141
|
-
max_length?: number;
|
|
2142
|
-
/**
|
|
2143
|
-
* Whether the URL supports macro substitution (e.g., ${CACHEBUSTER})
|
|
2144
|
-
*/
|
|
2145
|
-
macro_support?: boolean;
|
|
2146
|
-
}
|
|
2147
|
-
/**
|
|
2148
|
-
* Requirements for webhook creative assets.
|
|
2149
|
-
*/
|
|
2150
|
-
export interface WebhookAssetRequirements {
|
|
2151
|
-
/**
|
|
2152
|
-
* Allowed HTTP methods
|
|
2153
|
-
*/
|
|
2154
|
-
methods?: ('GET' | 'POST')[];
|
|
2155
|
-
}
|
|
2156
|
-
/**
|
|
2157
|
-
* Maps an individual format asset to a catalog item field via dot-notation path.
|
|
2158
|
-
*/
|
|
2159
|
-
export interface ScalarBinding {
|
|
2160
|
-
kind: 'scalar';
|
|
2161
|
-
/**
|
|
2162
|
-
* The asset_id from the format's assets array. Identifies which individual template slot this binding applies to.
|
|
2163
|
-
*/
|
|
2164
|
-
asset_id: string;
|
|
2165
|
-
/**
|
|
2166
|
-
* Dot-notation path to the field on the catalog item (e.g., 'name', 'price.amount', 'location.city').
|
|
2167
|
-
*/
|
|
2168
|
-
catalog_field: string;
|
|
2169
|
-
ext?: ExtensionObject;
|
|
2170
|
-
}
|
|
2171
|
-
/**
|
|
2172
|
-
* Maps an individual format asset to a typed asset pool on the catalog item (e.g., images_landscape, images_vertical, logo). The format slot receives the first item in the pool.
|
|
2173
|
-
*/
|
|
2174
|
-
export interface AssetPoolBinding {
|
|
2175
|
-
kind: 'asset_pool';
|
|
2176
|
-
/**
|
|
2177
|
-
* The asset_id from the format's assets array. Identifies which individual template slot this binding applies to.
|
|
2178
|
-
*/
|
|
2179
|
-
asset_id: string;
|
|
2180
|
-
/**
|
|
2181
|
-
* The asset_group_id on the catalog item's assets array to pull from (e.g., 'images_landscape', 'images_vertical', 'logo').
|
|
2182
|
-
*/
|
|
2183
|
-
asset_group_id: string;
|
|
2184
|
-
ext?: ExtensionObject;
|
|
2185
|
-
}
|
|
2186
|
-
/**
|
|
2187
|
-
* Budget pacing strategy
|
|
2188
|
-
*/
|
|
2189
|
-
export type Pacing = 'even' | 'asap' | 'front_loaded';
|
|
2190
|
-
/**
|
|
2191
|
-
* A single optimization target for a package. Packages accept an array of optimization_goals. When multiple goals are present, priority determines which the seller focuses on — 1 is highest priority (primary goal); higher numbers are secondary. Duplicate priority values result in undefined seller behavior.
|
|
2192
|
-
*/
|
|
2193
|
-
export type OptimizationGoal = {
|
|
2194
|
-
kind: 'metric';
|
|
2195
|
-
/**
|
|
2196
|
-
* Seller-native metric to optimize for. Delivery metrics: clicks (link clicks, swipe-throughs, CTA taps that navigate away), views (viewable impressions), completed_views (video/audio completions — see view_duration_seconds). Duration/score metrics: viewed_seconds (time in view per impression), attention_seconds (attention time per impression), attention_score (vendor-specific attention score). Audience action metrics: engagements (any direct interaction with the ad unit beyond viewing — social reactions/comments/shares, story/unit opens, interactive overlay taps, companion banner interactions on audio and CTV), follows (new followers, page likes, artist/podcast/channel subscribes), saves (saves, bookmarks, playlist adds, pins — signals of intent to return), profile_visits (visits to the brand's in-platform page — profile, artist page, channel, or storefront. Does not include external website clicks, which are covered by 'clicks').
|
|
2197
|
-
*/
|
|
2198
|
-
metric: 'clicks' | 'views' | 'completed_views' | 'viewed_seconds' | 'attention_seconds' | 'attention_score' | 'engagements' | 'follows' | 'saves' | 'profile_visits';
|
|
2199
|
-
/**
|
|
2200
|
-
* Minimum video view duration in seconds that qualifies as a completed_view for this goal. Only applicable when metric is 'completed_views'. When omitted, the seller uses their platform default (typically 2–15 seconds). Common values: 2 (Snap/LinkedIn default), 6 (TikTok), 15 (Snap 15-second views, Meta ThruPlay). Sellers declare which durations they support in metric_optimization.supported_view_durations. Sellers must reject goals with unsupported values — silent rounding would create measurement discrepancies.
|
|
2201
|
-
*/
|
|
2202
|
-
view_duration_seconds?: number;
|
|
2203
|
-
/**
|
|
2204
|
-
* Target for this metric. When omitted, the seller optimizes for maximum metric volume within budget.
|
|
2205
|
-
*/
|
|
2206
|
-
target?: {
|
|
2207
|
-
kind: 'cost_per';
|
|
2208
|
-
/**
|
|
2209
|
-
* Target cost per metric unit in the buy currency
|
|
2210
|
-
*/
|
|
2211
|
-
value: number;
|
|
2212
|
-
} | {
|
|
2213
|
-
kind: 'threshold_rate';
|
|
2214
|
-
/**
|
|
2215
|
-
* Minimum per-impression value. Units depend on the metric: proportion (clicks, views, completed_views), seconds (viewed_seconds, attention_seconds), or score (attention_score).
|
|
2216
|
-
*/
|
|
2217
|
-
value: number;
|
|
2218
|
-
};
|
|
2219
|
-
/**
|
|
2220
|
-
* Relative priority among all optimization goals on this package. 1 = highest priority (primary goal); higher numbers are lower priority (secondary signals). When omitted, sellers may use array position as priority.
|
|
2221
|
-
*/
|
|
2222
|
-
priority?: number;
|
|
2223
|
-
} | {
|
|
2224
|
-
kind: 'event';
|
|
2225
|
-
/**
|
|
2226
|
-
* Event source and type pairs that feed this goal. Each entry identifies a source and event type to include. When the seller supports multi_source_event_dedup (declared in get_adcp_capabilities), they deduplicate by event_id across all entries — the same business event from multiple sources counts once, using value_field and value_factor from the first matching entry. When multi_source_event_dedup is false or absent, buyers should use a single entry per goal; the seller will use only the first entry. All event sources must be configured via sync_event_sources.
|
|
2227
|
-
*/
|
|
2228
|
-
event_sources: {
|
|
2229
|
-
/**
|
|
2230
|
-
* Event source to include (must be configured on this account via sync_event_sources)
|
|
2231
|
-
*/
|
|
2232
|
-
event_source_id: string;
|
|
2233
|
-
event_type: EventType;
|
|
2234
|
-
/**
|
|
2235
|
-
* Required when event_type is 'custom'. Platform-specific name for the custom event.
|
|
2236
|
-
*/
|
|
2237
|
-
custom_event_name?: string;
|
|
2238
|
-
/**
|
|
2239
|
-
* Which field in the event's custom_data carries the monetary value. The seller must use this field for value extraction and aggregation when computing ROAS and conversion value metrics. Required on at least one entry when target.kind is 'per_ad_spend' or 'maximize_value'. Common values: 'value', 'order_total', 'profit_margin'. This is not passed as a parameter to underlying platform APIs — the seller maps it to their platform's value ingestion mechanism.
|
|
2240
|
-
*/
|
|
2241
|
-
value_field?: string;
|
|
2242
|
-
/**
|
|
2243
|
-
* Multiplier the seller must apply to value_field before aggregation. Use -1 for refund events (negate the value), 0.01 for values in cents, -0.01 for refunds in cents. A value of 0 zeroes out this source's value contribution (the source still counts for event dedup). Defaults to 1. This is not passed as a parameter to underlying platform APIs — the seller applies it when computing aggregated value metrics.
|
|
2244
|
-
*/
|
|
2245
|
-
value_factor?: number;
|
|
2246
|
-
}[];
|
|
2247
|
-
/**
|
|
2248
|
-
* Target cost or return for this event goal. When omitted, the seller optimizes for maximum conversions within budget.
|
|
2249
|
-
*/
|
|
2250
|
-
target?: {
|
|
2251
|
-
kind: 'cost_per';
|
|
2252
|
-
/**
|
|
2253
|
-
* Target cost per event in the buy currency
|
|
2254
|
-
*/
|
|
2255
|
-
value: number;
|
|
2256
|
-
} | {
|
|
2257
|
-
kind: 'per_ad_spend';
|
|
2258
|
-
/**
|
|
2259
|
-
* Target return ratio (e.g., 4.0 means $4 of value per $1 spent)
|
|
2260
|
-
*/
|
|
2261
|
-
value: number;
|
|
2262
|
-
} | {
|
|
2263
|
-
kind: 'maximize_value';
|
|
2264
|
-
};
|
|
2265
|
-
/**
|
|
2266
|
-
* Attribution window for this optimization goal. Values must match an option declared in the seller's conversion_tracking.attribution_windows capability. Sellers must reject windows not in their declared capabilities. When omitted, the seller uses their default window.
|
|
2267
|
-
*/
|
|
2268
|
-
attribution_window?: {
|
|
2269
|
-
/**
|
|
2270
|
-
* Click-through attribution window (e.g. '7d', '28d', '30d')
|
|
2271
|
-
*/
|
|
2272
|
-
click_through: string;
|
|
2273
|
-
/**
|
|
2274
|
-
* View-through attribution window (e.g. '1d', '7d')
|
|
2275
|
-
*/
|
|
2276
|
-
view_through?: string;
|
|
2277
|
-
};
|
|
2278
|
-
/**
|
|
2279
|
-
* Relative priority among all optimization goals on this package. 1 = highest priority (primary goal); higher numbers are lower priority (secondary signals). When omitted, sellers may use array position as priority.
|
|
2280
|
-
*/
|
|
2281
|
-
priority?: number;
|
|
2282
|
-
};
|
|
2283
|
-
/**
|
|
2284
|
-
* Postal code system (e.g., 'us_zip', 'gb_outward'). System name encodes country and precision.
|
|
2285
|
-
*/
|
|
2286
|
-
export type PostalCodeSystem = 'us_zip' | 'us_zip_plus_four' | 'gb_outward' | 'gb_full' | 'ca_fsa' | 'ca_full' | 'de_plz' | 'fr_code_postal' | 'au_postcode' | 'ch_plz' | 'at_plz';
|
|
2183
|
+
export type VASTVersion = '2.0' | '3.0' | '4.0' | '4.1' | '4.2';
|
|
2287
2184
|
/**
|
|
2288
|
-
*
|
|
2185
|
+
* Standard VAST tracking events for video ad playback and interaction
|
|
2289
2186
|
*/
|
|
2290
|
-
export type
|
|
2187
|
+
export type VASTTrackingEvent = 'start' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'complete' | 'impression' | 'click' | 'pause' | 'resume' | 'skip' | 'mute' | 'unmute' | 'fullscreen' | 'exitFullscreen' | 'playerExpand' | 'playerCollapse';
|
|
2291
2188
|
/**
|
|
2292
|
-
*
|
|
2189
|
+
* Type of URL asset: 'clickthrough' for user click destination (landing page), 'tracker_pixel' for impression/event tracking via HTTP request (fires GET, expects pixel/204 response), 'tracker_script' for measurement SDKs that must load as <script> tag (OMID verification, native event trackers using method:2)
|
|
2293
2190
|
*/
|
|
2294
|
-
export type
|
|
2191
|
+
export type URLAssetType = 'clickthrough' | 'tracker_pixel' | 'tracker_script';
|
|
2295
2192
|
/**
|
|
2296
2193
|
* JavaScript module type
|
|
2297
2194
|
*/
|
|
2298
2195
|
export type JavaScriptModuleType = 'esm' | 'commonjs' | 'script';
|
|
2299
2196
|
/**
|
|
2300
|
-
*
|
|
2197
|
+
* HTTP method
|
|
2301
2198
|
*/
|
|
2302
|
-
export type
|
|
2303
|
-
/**
|
|
2304
|
-
* Discriminator indicating VAST is delivered via URL endpoint
|
|
2305
|
-
*/
|
|
2306
|
-
delivery_type: 'url';
|
|
2307
|
-
/**
|
|
2308
|
-
* URL endpoint that returns VAST XML
|
|
2309
|
-
*/
|
|
2310
|
-
url: string;
|
|
2311
|
-
vast_version?: VASTVersion;
|
|
2312
|
-
/**
|
|
2313
|
-
* Whether VPAID (Video Player-Ad Interface Definition) is supported
|
|
2314
|
-
*/
|
|
2315
|
-
vpaid_enabled?: boolean;
|
|
2316
|
-
/**
|
|
2317
|
-
* Expected video duration in milliseconds (if known)
|
|
2318
|
-
*/
|
|
2319
|
-
duration_ms?: number;
|
|
2320
|
-
/**
|
|
2321
|
-
* Tracking events supported by this VAST tag
|
|
2322
|
-
*/
|
|
2323
|
-
tracking_events?: VASTTrackingEvent[];
|
|
2324
|
-
/**
|
|
2325
|
-
* URL to captions file (WebVTT, SRT, etc.)
|
|
2326
|
-
*/
|
|
2327
|
-
captions_url?: string;
|
|
2328
|
-
/**
|
|
2329
|
-
* URL to audio description track for visually impaired users
|
|
2330
|
-
*/
|
|
2331
|
-
audio_description_url?: string;
|
|
2332
|
-
} | {
|
|
2333
|
-
/**
|
|
2334
|
-
* Discriminator indicating VAST is delivered as inline XML content
|
|
2335
|
-
*/
|
|
2336
|
-
delivery_type: 'inline';
|
|
2337
|
-
/**
|
|
2338
|
-
* Inline VAST XML content
|
|
2339
|
-
*/
|
|
2340
|
-
content: string;
|
|
2341
|
-
vast_version?: VASTVersion;
|
|
2342
|
-
/**
|
|
2343
|
-
* Whether VPAID (Video Player-Ad Interface Definition) is supported
|
|
2344
|
-
*/
|
|
2345
|
-
vpaid_enabled?: boolean;
|
|
2346
|
-
/**
|
|
2347
|
-
* Expected video duration in milliseconds (if known)
|
|
2348
|
-
*/
|
|
2349
|
-
duration_ms?: number;
|
|
2350
|
-
/**
|
|
2351
|
-
* Tracking events supported by this VAST tag
|
|
2352
|
-
*/
|
|
2353
|
-
tracking_events?: VASTTrackingEvent[];
|
|
2354
|
-
/**
|
|
2355
|
-
* URL to captions file (WebVTT, SRT, etc.)
|
|
2356
|
-
*/
|
|
2357
|
-
captions_url?: string;
|
|
2358
|
-
/**
|
|
2359
|
-
* URL to audio description track for visually impaired users
|
|
2360
|
-
*/
|
|
2361
|
-
audio_description_url?: string;
|
|
2362
|
-
};
|
|
2199
|
+
export type HTTPMethod = 'GET' | 'POST';
|
|
2363
2200
|
/**
|
|
2364
|
-
*
|
|
2201
|
+
* Expected content type of webhook response
|
|
2365
2202
|
*/
|
|
2366
|
-
export type
|
|
2203
|
+
export type WebhookResponseType = 'html' | 'json' | 'xml' | 'javascript';
|
|
2367
2204
|
/**
|
|
2368
|
-
*
|
|
2205
|
+
* Authentication method
|
|
2369
2206
|
*/
|
|
2370
|
-
export type
|
|
2207
|
+
export type WebhookSecurityMethod = 'hmac_sha256' | 'api_key' | 'none';
|
|
2371
2208
|
/**
|
|
2372
2209
|
* DAAST (Digital Audio Ad Serving Template) tag for third-party audio ad serving
|
|
2373
2210
|
*/
|
|
@@ -2397,6 +2234,7 @@ export type DAASTAsset = {
|
|
|
2397
2234
|
* URL to text transcript of the audio content
|
|
2398
2235
|
*/
|
|
2399
2236
|
transcript_url?: string;
|
|
2237
|
+
provenance?: Provenance;
|
|
2400
2238
|
} | {
|
|
2401
2239
|
/**
|
|
2402
2240
|
* Discriminator indicating DAAST is delivered as inline XML content
|
|
@@ -2423,6 +2261,7 @@ export type DAASTAsset = {
|
|
|
2423
2261
|
* URL to text transcript of the audio content
|
|
2424
2262
|
*/
|
|
2425
2263
|
transcript_url?: string;
|
|
2264
|
+
provenance?: Provenance;
|
|
2426
2265
|
};
|
|
2427
2266
|
/**
|
|
2428
2267
|
* DAAST specification version
|
|
@@ -2433,9 +2272,17 @@ export type DAASTVersion = '1.0' | '1.1';
|
|
|
2433
2272
|
*/
|
|
2434
2273
|
export type DAASTTrackingEvent = 'start' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'complete' | 'impression' | 'pause' | 'resume' | 'skip' | 'mute' | 'unmute';
|
|
2435
2274
|
/**
|
|
2436
|
-
*
|
|
2275
|
+
* Markdown flavor used. CommonMark for strict compatibility, GFM for tables/task lists/strikethrough.
|
|
2437
2276
|
*/
|
|
2438
|
-
export type
|
|
2277
|
+
export type MarkdownFlavor = 'commonmark' | 'gfm';
|
|
2278
|
+
/**
|
|
2279
|
+
* Campaign-level creative context as an asset. Carries the creative brief through the manifest so it travels with the creative through regeneration, resizing, and auditing.
|
|
2280
|
+
*/
|
|
2281
|
+
export type BriefAsset = CreativeBrief;
|
|
2282
|
+
/**
|
|
2283
|
+
* A typed data feed as a creative asset. Carries catalog context (products, stores, jobs, etc.) within the manifest's assets map.
|
|
2284
|
+
*/
|
|
2285
|
+
export type CatalogAsset = Catalog;
|
|
2439
2286
|
/**
|
|
2440
2287
|
* For generative creatives: set to 'approved' to finalize, 'rejected' to request regeneration with updated assets/message. Omit for non-generative creatives (system will set based on processing state).
|
|
2441
2288
|
*/
|
|
@@ -2453,7 +2300,7 @@ export type AuthenticationScheme = 'Bearer' | 'HMAC-SHA256';
|
|
|
2453
2300
|
*/
|
|
2454
2301
|
export interface CreateMediaBuyRequest {
|
|
2455
2302
|
/**
|
|
2456
|
-
* Buyer's reference identifier for this media buy
|
|
2303
|
+
* Buyer's reference identifier for this media buy. Sellers SHOULD deduplicate requests with the same buyer_ref and account, returning the existing media buy rather than creating a duplicate.
|
|
2457
2304
|
*/
|
|
2458
2305
|
buyer_ref: string;
|
|
2459
2306
|
/**
|
|
@@ -2542,7 +2389,7 @@ export interface CreateMediaBuyRequest {
|
|
|
2542
2389
|
*/
|
|
2543
2390
|
export interface PackageRequest {
|
|
2544
2391
|
/**
|
|
2545
|
-
* Buyer's reference identifier for this package
|
|
2392
|
+
* Buyer's reference identifier for this package. Sellers SHOULD deduplicate requests with the same buyer_ref within a media buy, returning the existing package rather than creating a duplicate.
|
|
2546
2393
|
*/
|
|
2547
2394
|
buyer_ref: string;
|
|
2548
2395
|
/**
|
|
@@ -2574,7 +2421,10 @@ export interface PackageRequest {
|
|
|
2574
2421
|
* Whether this package should be created in a paused state. Paused packages do not deliver impressions. Defaults to false.
|
|
2575
2422
|
*/
|
|
2576
2423
|
paused?: boolean;
|
|
2577
|
-
|
|
2424
|
+
/**
|
|
2425
|
+
* Catalogs this package promotes. Each catalog MUST have a distinct type (e.g., one product catalog, one store catalog). This constraint is enforced at the application level — sellers MUST reject requests containing multiple catalogs of the same type with a validation_error. Makes the package catalog-driven: one budget envelope, platform optimizes across items.
|
|
2426
|
+
*/
|
|
2427
|
+
catalogs?: Catalog[];
|
|
2578
2428
|
/**
|
|
2579
2429
|
* Optimization targets for this package. The seller optimizes delivery toward these goals in priority order. Common pattern: event goals (purchase, install) as primary targets at priority 1; metric goals (clicks, views) as secondary proxy signals at priority 2+.
|
|
2580
2430
|
*/
|
|
@@ -2593,7 +2443,7 @@ export interface PackageRequest {
|
|
|
2593
2443
|
ext?: ExtensionObject;
|
|
2594
2444
|
}
|
|
2595
2445
|
/**
|
|
2596
|
-
* 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),
|
|
2446
|
+
* 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, proximity targeting), age verification (alcohol, gambling), device platform (app compatibility), language (localization), and keyword targeting (search/retail media).
|
|
2597
2447
|
*/
|
|
2598
2448
|
export interface TargetingOverlay {
|
|
2599
2449
|
/**
|
|
@@ -2695,6 +2545,14 @@ export interface TargetingOverlay {
|
|
|
2695
2545
|
* Restrict to specific platforms. Use for technical compatibility (app only works on iOS). Values from Sec-CH-UA-Platform standard, extended for CTV.
|
|
2696
2546
|
*/
|
|
2697
2547
|
device_platform?: DevicePlatform[];
|
|
2548
|
+
/**
|
|
2549
|
+
* Restrict to specific device form factors. Use for campaigns targeting hardware categories rather than operating systems (e.g., mobile-only promotions, CTV campaigns).
|
|
2550
|
+
*/
|
|
2551
|
+
device_type?: DeviceType[];
|
|
2552
|
+
/**
|
|
2553
|
+
* Exclude specific device form factors from delivery (e.g., exclude CTV for app-install campaigns).
|
|
2554
|
+
*/
|
|
2555
|
+
device_type_exclude?: DeviceType[];
|
|
2698
2556
|
/**
|
|
2699
2557
|
* Target users within store catchment areas from a synced store catalog. Each entry references a store-type catalog and optionally narrows to specific stores or catchment zones.
|
|
2700
2558
|
*/
|
|
@@ -2712,19 +2570,46 @@ export interface TargetingOverlay {
|
|
|
2712
2570
|
*/
|
|
2713
2571
|
catchment_ids?: string[];
|
|
2714
2572
|
}[];
|
|
2573
|
+
/**
|
|
2574
|
+
* Target users within travel time, distance, or a custom boundary around arbitrary geographic points. Multiple entries use OR semantics — a user within range of any listed point is eligible. For campaigns targeting 10+ locations, consider using store_catchments with a location catalog instead. Seller must declare support in get_adcp_capabilities.
|
|
2575
|
+
*/
|
|
2576
|
+
geo_proximity?: {
|
|
2577
|
+
[k: string]: unknown | undefined;
|
|
2578
|
+
}[];
|
|
2715
2579
|
/**
|
|
2716
2580
|
* Restrict to users with specific language preferences. ISO 639-1 codes (e.g., 'en', 'es', 'fr').
|
|
2717
2581
|
*/
|
|
2718
2582
|
language?: string[];
|
|
2719
|
-
}
|
|
2720
|
-
/**
|
|
2721
|
-
* Frequency capping settings for package-level application
|
|
2722
|
-
*/
|
|
2723
|
-
export interface FrequencyCap {
|
|
2724
2583
|
/**
|
|
2725
|
-
*
|
|
2584
|
+
* Keyword targeting for search and retail media platforms. Restricts delivery to queries matching the specified keywords. Each keyword is identified by the tuple (keyword, match_type) — the same keyword string with different match types are distinct targets. Sellers SHOULD reject duplicate (keyword, match_type) pairs within a single request. Seller must declare support in get_adcp_capabilities.
|
|
2585
|
+
*/
|
|
2586
|
+
keyword_targets?: {
|
|
2587
|
+
/**
|
|
2588
|
+
* The keyword to target
|
|
2589
|
+
*/
|
|
2590
|
+
keyword: string;
|
|
2591
|
+
/**
|
|
2592
|
+
* Match type: broad matches related queries, phrase matches queries containing the keyword phrase, exact matches the query exactly
|
|
2593
|
+
*/
|
|
2594
|
+
match_type: 'broad' | 'phrase' | 'exact';
|
|
2595
|
+
/**
|
|
2596
|
+
* Per-keyword bid price, denominated in the same currency as the package's pricing option. Overrides the package-level bid_price for this keyword. Inherits the max_bid interpretation from the pricing option: when max_bid is true, this is the keyword's bid ceiling; when false, this is the exact bid. If omitted, the package bid_price applies.
|
|
2597
|
+
*/
|
|
2598
|
+
bid_price?: number;
|
|
2599
|
+
}[];
|
|
2600
|
+
/**
|
|
2601
|
+
* Keywords to exclude from delivery. Queries matching these keywords will not trigger the ad. Each negative keyword is identified by the tuple (keyword, match_type). Seller must declare support in get_adcp_capabilities.
|
|
2726
2602
|
*/
|
|
2727
|
-
|
|
2603
|
+
negative_keywords?: {
|
|
2604
|
+
/**
|
|
2605
|
+
* The keyword to exclude
|
|
2606
|
+
*/
|
|
2607
|
+
keyword: string;
|
|
2608
|
+
/**
|
|
2609
|
+
* Match type for exclusion
|
|
2610
|
+
*/
|
|
2611
|
+
match_type: 'broad' | 'phrase' | 'exact';
|
|
2612
|
+
}[];
|
|
2728
2613
|
}
|
|
2729
2614
|
/**
|
|
2730
2615
|
* Assignment of a creative asset to a package with optional placement targeting. Used in create_media_buy and update_media_buy requests. Note: sync_creatives does not support placement_ids - use create/update_media_buy for placement-level targeting.
|
|
@@ -2735,7 +2620,7 @@ export interface CreativeAssignment {
|
|
|
2735
2620
|
*/
|
|
2736
2621
|
creative_id: string;
|
|
2737
2622
|
/**
|
|
2738
|
-
*
|
|
2623
|
+
* Relative delivery weight for this creative (0–100). When multiple creatives are assigned to the same package, weights determine impression distribution proportionally — a creative with weight 2 gets twice the delivery of weight 1. When omitted, the creative receives equal rotation with other unweighted creatives. A weight of 0 means the creative is assigned but paused (receives no delivery).
|
|
2739
2624
|
*/
|
|
2740
2625
|
weight?: number;
|
|
2741
2626
|
/**
|
|
@@ -2757,18 +2642,14 @@ export interface CreativeAsset {
|
|
|
2757
2642
|
name: string;
|
|
2758
2643
|
format_id: FormatID;
|
|
2759
2644
|
/**
|
|
2760
|
-
*
|
|
2761
|
-
*/
|
|
2762
|
-
catalogs?: Catalog[];
|
|
2763
|
-
/**
|
|
2764
|
-
* Assets required by the format, keyed by asset_role
|
|
2645
|
+
* Assets required by the format, keyed by asset_id
|
|
2765
2646
|
*/
|
|
2766
2647
|
assets: {
|
|
2767
2648
|
/**
|
|
2768
2649
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
2769
|
-
* via the `patternProperty` "^[a-
|
|
2650
|
+
* via the `patternProperty` "^[a-z0-9_]+$".
|
|
2770
2651
|
*/
|
|
2771
|
-
[k: string]: ImageAsset | VideoAsset | AudioAsset | TextAsset |
|
|
2652
|
+
[k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset | MarkdownAsset | BriefAsset | CatalogAsset;
|
|
2772
2653
|
};
|
|
2773
2654
|
/**
|
|
2774
2655
|
* Preview contexts for generative formats - defines what scenarios to generate previews for
|
|
@@ -2802,6 +2683,7 @@ export interface CreativeAsset {
|
|
|
2802
2683
|
* Optional array of placement IDs where this creative should run when uploading via create_media_buy or update_media_buy. References placement_id values from the product's placements array. If omitted, creative runs on all placements. Only used during upload to media buy - not stored in creative library.
|
|
2803
2684
|
*/
|
|
2804
2685
|
placement_ids?: string[];
|
|
2686
|
+
provenance?: Provenance;
|
|
2805
2687
|
}
|
|
2806
2688
|
/**
|
|
2807
2689
|
* Image asset with URL and dimensions
|
|
@@ -2827,6 +2709,116 @@ export interface ImageAsset {
|
|
|
2827
2709
|
* Alternative text for accessibility
|
|
2828
2710
|
*/
|
|
2829
2711
|
alt_text?: string;
|
|
2712
|
+
provenance?: Provenance;
|
|
2713
|
+
}
|
|
2714
|
+
/**
|
|
2715
|
+
* Provenance metadata for this asset, overrides manifest-level provenance
|
|
2716
|
+
*/
|
|
2717
|
+
export interface Provenance {
|
|
2718
|
+
digital_source_type?: DigitalSourceType;
|
|
2719
|
+
/**
|
|
2720
|
+
* AI system used to generate or modify this content. Aligns with IPTC 2025.1 AI metadata fields and C2PA claim_generator.
|
|
2721
|
+
*/
|
|
2722
|
+
ai_tool?: {
|
|
2723
|
+
/**
|
|
2724
|
+
* Name of the AI tool or model (e.g., 'DALL-E 3', 'Stable Diffusion XL', 'Gemini')
|
|
2725
|
+
*/
|
|
2726
|
+
name: string;
|
|
2727
|
+
/**
|
|
2728
|
+
* Version identifier for the AI tool or model (e.g., '25.1', '0125', '2.1'). For generative models, use the model version rather than the API version.
|
|
2729
|
+
*/
|
|
2730
|
+
version?: string;
|
|
2731
|
+
/**
|
|
2732
|
+
* Organization that provides the AI tool (e.g., 'OpenAI', 'Stability AI', 'Google')
|
|
2733
|
+
*/
|
|
2734
|
+
provider?: string;
|
|
2735
|
+
};
|
|
2736
|
+
/**
|
|
2737
|
+
* Level of human involvement in the AI-assisted creation process
|
|
2738
|
+
*/
|
|
2739
|
+
human_oversight?: 'none' | 'prompt_only' | 'selected' | 'edited' | 'directed';
|
|
2740
|
+
/**
|
|
2741
|
+
* Party declaring this provenance. Identifies who attached the provenance claim, enabling receiving parties to assess trust.
|
|
2742
|
+
*/
|
|
2743
|
+
declared_by?: {
|
|
2744
|
+
/**
|
|
2745
|
+
* URL of the agent or service that declared this provenance
|
|
2746
|
+
*/
|
|
2747
|
+
agent_url?: string;
|
|
2748
|
+
/**
|
|
2749
|
+
* Role of the declaring party in the supply chain
|
|
2750
|
+
*/
|
|
2751
|
+
role: 'creator' | 'advertiser' | 'agency' | 'platform' | 'tool';
|
|
2752
|
+
};
|
|
2753
|
+
/**
|
|
2754
|
+
* When this content was created or generated (ISO 8601)
|
|
2755
|
+
*/
|
|
2756
|
+
created_time?: string;
|
|
2757
|
+
/**
|
|
2758
|
+
* C2PA Content Credentials reference. Links to the cryptographic provenance manifest for this content. Because file-level C2PA bindings break during ad-tech transcoding, this URL reference preserves the chain of provenance through the supply chain.
|
|
2759
|
+
*/
|
|
2760
|
+
c2pa?: {
|
|
2761
|
+
/**
|
|
2762
|
+
* URL to the C2PA manifest store for this content
|
|
2763
|
+
*/
|
|
2764
|
+
manifest_url: string;
|
|
2765
|
+
};
|
|
2766
|
+
/**
|
|
2767
|
+
* Regulatory disclosure requirements for this content. Indicates whether AI disclosure is required and under which jurisdictions.
|
|
2768
|
+
*/
|
|
2769
|
+
disclosure?: {
|
|
2770
|
+
/**
|
|
2771
|
+
* Whether AI disclosure is required for this content based on applicable regulations
|
|
2772
|
+
*/
|
|
2773
|
+
required: boolean;
|
|
2774
|
+
/**
|
|
2775
|
+
* Jurisdictions where disclosure obligations apply
|
|
2776
|
+
*/
|
|
2777
|
+
jurisdictions?: {
|
|
2778
|
+
/**
|
|
2779
|
+
* ISO 3166-1 alpha-2 country code (e.g., 'US', 'DE', 'CN')
|
|
2780
|
+
*/
|
|
2781
|
+
country: string;
|
|
2782
|
+
/**
|
|
2783
|
+
* Sub-national region code (e.g., 'CA' for California, 'BY' for Bavaria)
|
|
2784
|
+
*/
|
|
2785
|
+
region?: string;
|
|
2786
|
+
/**
|
|
2787
|
+
* Regulation identifier (e.g., 'eu_ai_act_article_50', 'ca_sb_942', 'cn_deep_synthesis')
|
|
2788
|
+
*/
|
|
2789
|
+
regulation: string;
|
|
2790
|
+
/**
|
|
2791
|
+
* Required disclosure label text for this jurisdiction, in the local language
|
|
2792
|
+
*/
|
|
2793
|
+
label_text?: string;
|
|
2794
|
+
}[];
|
|
2795
|
+
};
|
|
2796
|
+
/**
|
|
2797
|
+
* Third-party verification or detection results for this content. Multiple services may independently evaluate the same content. Provenance is a claim — verification results attached by the declaring party are supplementary. The enforcing party (e.g., seller/publisher) should run its own verification via get_creative_features or calibrate_content.
|
|
2798
|
+
*/
|
|
2799
|
+
verification?: {
|
|
2800
|
+
/**
|
|
2801
|
+
* Name of the verification service (e.g., 'DoubleVerify', 'Hive Moderation', 'Reality Defender')
|
|
2802
|
+
*/
|
|
2803
|
+
verified_by: string;
|
|
2804
|
+
/**
|
|
2805
|
+
* When the verification was performed (ISO 8601)
|
|
2806
|
+
*/
|
|
2807
|
+
verified_time?: string;
|
|
2808
|
+
/**
|
|
2809
|
+
* Verification outcome
|
|
2810
|
+
*/
|
|
2811
|
+
result: 'authentic' | 'ai_generated' | 'ai_modified' | 'inconclusive';
|
|
2812
|
+
/**
|
|
2813
|
+
* Confidence score of the verification result (0.0 to 1.0)
|
|
2814
|
+
*/
|
|
2815
|
+
confidence?: number;
|
|
2816
|
+
/**
|
|
2817
|
+
* URL to the full verification report
|
|
2818
|
+
*/
|
|
2819
|
+
details_url?: string;
|
|
2820
|
+
}[];
|
|
2821
|
+
ext?: ExtensionObject;
|
|
2830
2822
|
}
|
|
2831
2823
|
/**
|
|
2832
2824
|
* Video asset with URL and technical specifications including audio track properties
|
|
@@ -2948,6 +2940,7 @@ export interface VideoAsset {
|
|
|
2948
2940
|
* URL to audio description track for visually impaired users
|
|
2949
2941
|
*/
|
|
2950
2942
|
audio_description_url?: string;
|
|
2943
|
+
provenance?: Provenance;
|
|
2951
2944
|
}
|
|
2952
2945
|
/**
|
|
2953
2946
|
* Audio asset with URL and technical specifications
|
|
@@ -3001,6 +2994,7 @@ export interface AudioAsset {
|
|
|
3001
2994
|
* URL to text transcript of the audio content
|
|
3002
2995
|
*/
|
|
3003
2996
|
transcript_url?: string;
|
|
2997
|
+
provenance?: Provenance;
|
|
3004
2998
|
}
|
|
3005
2999
|
/**
|
|
3006
3000
|
* Text content asset
|
|
@@ -3014,6 +3008,22 @@ export interface TextAsset {
|
|
|
3014
3008
|
* Language code (e.g., 'en', 'es', 'fr')
|
|
3015
3009
|
*/
|
|
3016
3010
|
language?: string;
|
|
3011
|
+
provenance?: Provenance;
|
|
3012
|
+
}
|
|
3013
|
+
/**
|
|
3014
|
+
* URL reference asset
|
|
3015
|
+
*/
|
|
3016
|
+
export interface URLAsset {
|
|
3017
|
+
/**
|
|
3018
|
+
* URL reference
|
|
3019
|
+
*/
|
|
3020
|
+
url: string;
|
|
3021
|
+
url_type?: URLAssetType;
|
|
3022
|
+
/**
|
|
3023
|
+
* Description of what this URL points to
|
|
3024
|
+
*/
|
|
3025
|
+
description?: string;
|
|
3026
|
+
provenance?: Provenance;
|
|
3017
3027
|
}
|
|
3018
3028
|
/**
|
|
3019
3029
|
* HTML content asset
|
|
@@ -3048,19 +3058,7 @@ export interface HTMLAsset {
|
|
|
3048
3058
|
*/
|
|
3049
3059
|
screen_reader_tested?: boolean;
|
|
3050
3060
|
};
|
|
3051
|
-
|
|
3052
|
-
/**
|
|
3053
|
-
* CSS stylesheet asset
|
|
3054
|
-
*/
|
|
3055
|
-
export interface CSSAsset {
|
|
3056
|
-
/**
|
|
3057
|
-
* CSS content
|
|
3058
|
-
*/
|
|
3059
|
-
content: string;
|
|
3060
|
-
/**
|
|
3061
|
-
* CSS media query context (e.g., 'screen', 'print')
|
|
3062
|
-
*/
|
|
3063
|
-
media?: string;
|
|
3061
|
+
provenance?: Provenance;
|
|
3064
3062
|
}
|
|
3065
3063
|
/**
|
|
3066
3064
|
* JavaScript code asset
|
|
@@ -3092,18 +3090,177 @@ export interface JavaScriptAsset {
|
|
|
3092
3090
|
*/
|
|
3093
3091
|
screen_reader_tested?: boolean;
|
|
3094
3092
|
};
|
|
3093
|
+
provenance?: Provenance;
|
|
3095
3094
|
}
|
|
3096
3095
|
/**
|
|
3097
|
-
*
|
|
3096
|
+
* Webhook for server-side dynamic content rendering (DCO)
|
|
3098
3097
|
*/
|
|
3099
|
-
export interface
|
|
3098
|
+
export interface WebhookAsset {
|
|
3100
3099
|
/**
|
|
3101
|
-
* URL
|
|
3100
|
+
* Webhook URL to call for dynamic content
|
|
3102
3101
|
*/
|
|
3103
3102
|
url: string;
|
|
3104
|
-
|
|
3103
|
+
method?: HTTPMethod;
|
|
3105
3104
|
/**
|
|
3106
|
-
*
|
|
3105
|
+
* Maximum time to wait for response in milliseconds
|
|
3106
|
+
*/
|
|
3107
|
+
timeout_ms?: number;
|
|
3108
|
+
/**
|
|
3109
|
+
* Universal macros that can be passed to webhook (e.g., DEVICE_TYPE, COUNTRY). See docs/creative/universal-macros.mdx for full list.
|
|
3110
|
+
*/
|
|
3111
|
+
supported_macros?: (UniversalMacro | string)[];
|
|
3112
|
+
/**
|
|
3113
|
+
* Universal macros that must be provided for webhook to function
|
|
3114
|
+
*/
|
|
3115
|
+
required_macros?: (UniversalMacro | string)[];
|
|
3116
|
+
response_type: WebhookResponseType;
|
|
3117
|
+
/**
|
|
3118
|
+
* Security configuration for webhook calls
|
|
3119
|
+
*/
|
|
3120
|
+
security: {
|
|
3121
|
+
method: WebhookSecurityMethod;
|
|
3122
|
+
/**
|
|
3123
|
+
* Header name for HMAC signature (e.g., 'X-Signature')
|
|
3124
|
+
*/
|
|
3125
|
+
hmac_header?: string;
|
|
3126
|
+
/**
|
|
3127
|
+
* Header name for API key (e.g., 'X-API-Key')
|
|
3128
|
+
*/
|
|
3129
|
+
api_key_header?: string;
|
|
3130
|
+
};
|
|
3131
|
+
provenance?: Provenance;
|
|
3132
|
+
}
|
|
3133
|
+
/**
|
|
3134
|
+
* CSS stylesheet asset
|
|
3135
|
+
*/
|
|
3136
|
+
export interface CSSAsset {
|
|
3137
|
+
/**
|
|
3138
|
+
* CSS content
|
|
3139
|
+
*/
|
|
3140
|
+
content: string;
|
|
3141
|
+
/**
|
|
3142
|
+
* CSS media query context (e.g., 'screen', 'print')
|
|
3143
|
+
*/
|
|
3144
|
+
media?: string;
|
|
3145
|
+
provenance?: Provenance;
|
|
3146
|
+
}
|
|
3147
|
+
/**
|
|
3148
|
+
* Markdown-formatted text content following CommonMark specification
|
|
3149
|
+
*/
|
|
3150
|
+
export interface MarkdownAsset {
|
|
3151
|
+
/**
|
|
3152
|
+
* Markdown content following CommonMark spec with optional GitHub Flavored Markdown extensions
|
|
3153
|
+
*/
|
|
3154
|
+
content: string;
|
|
3155
|
+
/**
|
|
3156
|
+
* Language code (e.g., 'en', 'es', 'fr')
|
|
3157
|
+
*/
|
|
3158
|
+
language?: string;
|
|
3159
|
+
markdown_flavor?: MarkdownFlavor;
|
|
3160
|
+
/**
|
|
3161
|
+
* Whether raw HTML blocks are allowed in the markdown. False recommended for security.
|
|
3162
|
+
*/
|
|
3163
|
+
allow_raw_html?: boolean;
|
|
3164
|
+
}
|
|
3165
|
+
/**
|
|
3166
|
+
* Campaign-level creative context for AI-powered creative generation. Provides the layer between brand identity (stable across campaigns) and individual creative execution (per-request). A brand has one identity (defined in brand.json) but different creative briefs for each campaign or flight.
|
|
3167
|
+
*/
|
|
3168
|
+
export interface CreativeBrief {
|
|
3169
|
+
/**
|
|
3170
|
+
* Campaign or flight name for identification
|
|
3171
|
+
*/
|
|
3172
|
+
name: string;
|
|
3173
|
+
/**
|
|
3174
|
+
* Campaign objective that guides creative tone and call-to-action strategy
|
|
3175
|
+
*/
|
|
3176
|
+
objective?: 'awareness' | 'consideration' | 'conversion' | 'retention' | 'engagement';
|
|
3177
|
+
/**
|
|
3178
|
+
* Desired tone for this campaign, modulating the brand's base tone (e.g., 'playful and festive', 'premium and aspirational')
|
|
3179
|
+
*/
|
|
3180
|
+
tone?: string;
|
|
3181
|
+
/**
|
|
3182
|
+
* Target audience description for this campaign
|
|
3183
|
+
*/
|
|
3184
|
+
audience?: string;
|
|
3185
|
+
/**
|
|
3186
|
+
* Creative territory or positioning the campaign should occupy
|
|
3187
|
+
*/
|
|
3188
|
+
territory?: string;
|
|
3189
|
+
/**
|
|
3190
|
+
* Messaging framework for the campaign
|
|
3191
|
+
*/
|
|
3192
|
+
messaging?: {
|
|
3193
|
+
/**
|
|
3194
|
+
* Primary headline
|
|
3195
|
+
*/
|
|
3196
|
+
headline?: string;
|
|
3197
|
+
/**
|
|
3198
|
+
* Supporting tagline or sub-headline
|
|
3199
|
+
*/
|
|
3200
|
+
tagline?: string;
|
|
3201
|
+
/**
|
|
3202
|
+
* Call-to-action text
|
|
3203
|
+
*/
|
|
3204
|
+
cta?: string;
|
|
3205
|
+
/**
|
|
3206
|
+
* Key messages to communicate in priority order
|
|
3207
|
+
*/
|
|
3208
|
+
key_messages?: string[];
|
|
3209
|
+
};
|
|
3210
|
+
/**
|
|
3211
|
+
* Visual and strategic reference materials such as mood boards, product shots, example creatives, and strategy documents
|
|
3212
|
+
*/
|
|
3213
|
+
reference_assets?: ReferenceAsset[];
|
|
3214
|
+
/**
|
|
3215
|
+
* Regulatory and legal compliance requirements for this campaign. Campaign-specific, regional, and product-based — distinct from brand-level disclaimers in brand.json.
|
|
3216
|
+
*/
|
|
3217
|
+
compliance?: {
|
|
3218
|
+
/**
|
|
3219
|
+
* Disclosures that must appear in creatives for this campaign. Each disclosure specifies the text, where it should appear, and which jurisdictions require it.
|
|
3220
|
+
*/
|
|
3221
|
+
required_disclosures?: {
|
|
3222
|
+
/**
|
|
3223
|
+
* The disclosure text that must appear in the creative
|
|
3224
|
+
*/
|
|
3225
|
+
text: string;
|
|
3226
|
+
position?: DisclosurePosition;
|
|
3227
|
+
/**
|
|
3228
|
+
* Jurisdictions where this disclosure is required. ISO 3166-1 alpha-2 country codes or ISO 3166-2 subdivision codes (e.g., 'US', 'GB', 'US-NJ', 'CA-QC'). If omitted, the disclosure applies to all jurisdictions in the campaign.
|
|
3229
|
+
*/
|
|
3230
|
+
jurisdictions?: string[];
|
|
3231
|
+
/**
|
|
3232
|
+
* The regulation or legal authority requiring this disclosure (e.g., 'SEC Rule 156', 'FCA COBS 4.5', 'FDA 21 CFR 202')
|
|
3233
|
+
*/
|
|
3234
|
+
regulation?: string;
|
|
3235
|
+
/**
|
|
3236
|
+
* Minimum display duration in milliseconds. For video/audio disclosures, how long the disclosure must be visible or audible. For static formats, how long the disclosure must remain on screen before any auto-advance.
|
|
3237
|
+
*/
|
|
3238
|
+
min_duration_ms?: number;
|
|
3239
|
+
/**
|
|
3240
|
+
* Language of the disclosure text as a BCP 47 language tag (e.g., 'en', 'fr-CA', 'es'). When omitted, the disclosure is assumed to match the creative's language.
|
|
3241
|
+
*/
|
|
3242
|
+
language?: string;
|
|
3243
|
+
}[];
|
|
3244
|
+
/**
|
|
3245
|
+
* Claims that must not appear in creatives for this campaign. Creative agents should ensure generated content avoids these claims.
|
|
3246
|
+
*/
|
|
3247
|
+
prohibited_claims?: string[];
|
|
3248
|
+
};
|
|
3249
|
+
}
|
|
3250
|
+
/**
|
|
3251
|
+
* A reference asset that provides creative context. Carries visual materials (mood boards, product shots, example creatives) with semantic roles that tell creative agents how to use them.
|
|
3252
|
+
*/
|
|
3253
|
+
export interface ReferenceAsset {
|
|
3254
|
+
/**
|
|
3255
|
+
* URL to the reference asset (image, video, or document)
|
|
3256
|
+
*/
|
|
3257
|
+
url: string;
|
|
3258
|
+
/**
|
|
3259
|
+
* How the creative agent should use this asset. style_reference: match the visual style; product_shot: include this product; mood_board: overall look and feel; example_creative: example of a similar execution; logo: logo to use; strategy_doc: strategy or planning document for context
|
|
3260
|
+
*/
|
|
3261
|
+
role: 'style_reference' | 'product_shot' | 'mood_board' | 'example_creative' | 'logo' | 'strategy_doc';
|
|
3262
|
+
/**
|
|
3263
|
+
* Human-readable description of the asset and how it should inform creative generation
|
|
3107
3264
|
*/
|
|
3108
3265
|
description?: string;
|
|
3109
3266
|
}
|
|
@@ -3291,7 +3448,7 @@ export interface Package {
|
|
|
3291
3448
|
*/
|
|
3292
3449
|
package_id: string;
|
|
3293
3450
|
/**
|
|
3294
|
-
* Buyer's reference identifier for this package
|
|
3451
|
+
* Buyer's reference identifier for this package. Sellers SHOULD deduplicate requests with the same buyer_ref within a media buy, returning the existing package rather than creating a duplicate.
|
|
3295
3452
|
*/
|
|
3296
3453
|
buyer_ref?: string;
|
|
3297
3454
|
/**
|
|
@@ -3315,6 +3472,14 @@ export interface Package {
|
|
|
3315
3472
|
* Impression goal for this package
|
|
3316
3473
|
*/
|
|
3317
3474
|
impressions?: number;
|
|
3475
|
+
/**
|
|
3476
|
+
* Catalogs this package promotes. Each catalog MUST have a distinct type (e.g., one product catalog, one store catalog). This constraint is enforced at the application level — sellers MUST reject requests containing multiple catalogs of the same type with a validation_error. Echoed from the create_media_buy request.
|
|
3477
|
+
*/
|
|
3478
|
+
catalogs?: Catalog[];
|
|
3479
|
+
/**
|
|
3480
|
+
* Format IDs active for this package. Echoed from the create_media_buy request; omitted means all formats for the product are active.
|
|
3481
|
+
*/
|
|
3482
|
+
format_ids?: FormatID[];
|
|
3318
3483
|
targeting_overlay?: TargetingOverlay;
|
|
3319
3484
|
/**
|
|
3320
3485
|
* Creative assets assigned to this package
|
|
@@ -3367,17 +3532,30 @@ export interface SyncCreativesRequest {
|
|
|
3367
3532
|
*/
|
|
3368
3533
|
creative_ids?: string[];
|
|
3369
3534
|
/**
|
|
3370
|
-
* Optional bulk assignment of creatives to packages
|
|
3535
|
+
* Optional bulk assignment of creatives to packages. Each entry maps one creative to one package with optional weight and placement targeting.
|
|
3371
3536
|
*/
|
|
3372
3537
|
assignments?: {
|
|
3373
3538
|
/**
|
|
3374
|
-
*
|
|
3375
|
-
*
|
|
3376
|
-
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
3377
|
-
* via the `patternProperty` "^[a-zA-Z0-9_-]+$".
|
|
3539
|
+
* ID of the creative to assign
|
|
3378
3540
|
*/
|
|
3379
|
-
|
|
3380
|
-
|
|
3541
|
+
creative_id: string;
|
|
3542
|
+
/**
|
|
3543
|
+
* ID of the package to assign the creative to
|
|
3544
|
+
*/
|
|
3545
|
+
package_id: string;
|
|
3546
|
+
/**
|
|
3547
|
+
* Relative delivery weight (0–100). When multiple creatives are assigned to the same package, weights determine impression distribution proportionally — a creative with weight 2 gets twice the delivery of weight 1. When omitted, the creative receives equal rotation with other unweighted creatives. A weight of 0 means the creative is assigned but paused (receives no delivery).
|
|
3548
|
+
*/
|
|
3549
|
+
weight?: number;
|
|
3550
|
+
/**
|
|
3551
|
+
* Restrict this creative to specific placements within the package. When omitted, the creative is eligible for all placements.
|
|
3552
|
+
*/
|
|
3553
|
+
placement_ids?: string[];
|
|
3554
|
+
}[];
|
|
3555
|
+
/**
|
|
3556
|
+
* Client-generated idempotency key for safe retries. If a sync fails without a response, resending with the same idempotency_key guarantees at-most-once execution.
|
|
3557
|
+
*/
|
|
3558
|
+
idempotency_key?: string;
|
|
3381
3559
|
/**
|
|
3382
3560
|
* When true, creatives not included in this sync will be archived. Use with caution for full library replacement.
|
|
3383
3561
|
*/
|
|
@@ -3455,7 +3633,7 @@ export interface SyncCreativesSuccess {
|
|
|
3455
3633
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
3456
3634
|
* via the `patternProperty` "^[a-zA-Z0-9_-]+$".
|
|
3457
3635
|
*/
|
|
3458
|
-
[k: string]: string;
|
|
3636
|
+
[k: string]: string | undefined;
|
|
3459
3637
|
};
|
|
3460
3638
|
}[];
|
|
3461
3639
|
/**
|
|
@@ -3678,18 +3856,14 @@ export interface ListCreativesResponse {
|
|
|
3678
3856
|
*/
|
|
3679
3857
|
updated_date: string;
|
|
3680
3858
|
/**
|
|
3681
|
-
*
|
|
3682
|
-
*/
|
|
3683
|
-
catalogs?: Catalog[];
|
|
3684
|
-
/**
|
|
3685
|
-
* Assets for this creative, keyed by asset_role
|
|
3859
|
+
* Assets for this creative, keyed by asset_id
|
|
3686
3860
|
*/
|
|
3687
3861
|
assets?: {
|
|
3688
3862
|
/**
|
|
3689
3863
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
3690
|
-
* via the `patternProperty` "^[a-
|
|
3864
|
+
* via the `patternProperty` "^[a-z0-9_]+$".
|
|
3691
3865
|
*/
|
|
3692
|
-
[k: string]: ImageAsset | VideoAsset | AudioAsset | TextAsset |
|
|
3866
|
+
[k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset | MarkdownAsset | BriefAsset | CatalogAsset;
|
|
3693
3867
|
};
|
|
3694
3868
|
/**
|
|
3695
3869
|
* User-defined tags for organization and searchability
|
|
@@ -3765,7 +3939,7 @@ export interface ListCreativesResponse {
|
|
|
3765
3939
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
3766
3940
|
* via the `patternProperty` "^[a-zA-Z0-9_-]+$".
|
|
3767
3941
|
*/
|
|
3768
|
-
[k: string]: number;
|
|
3942
|
+
[k: string]: number | undefined;
|
|
3769
3943
|
};
|
|
3770
3944
|
/**
|
|
3771
3945
|
* Breakdown of creatives by status
|
|
@@ -3826,6 +4000,10 @@ export type UpdateMediaBuyRequest = {
|
|
|
3826
4000
|
packages?: PackageUpdate[];
|
|
3827
4001
|
reporting_webhook?: ReportingWebhook;
|
|
3828
4002
|
push_notification_config?: PushNotificationConfig;
|
|
4003
|
+
/**
|
|
4004
|
+
* Client-generated idempotency key for safe retries. If an update fails without a response, resending with the same idempotency_key guarantees the update is applied at most once.
|
|
4005
|
+
*/
|
|
4006
|
+
idempotency_key?: string;
|
|
3829
4007
|
context?: ContextObject;
|
|
3830
4008
|
ext?: ExtensionObject;
|
|
3831
4009
|
} & {
|
|
@@ -3860,12 +4038,71 @@ export type PackageUpdate = {
|
|
|
3860
4038
|
* Pause/resume specific package (true = paused, false = active)
|
|
3861
4039
|
*/
|
|
3862
4040
|
paused?: boolean;
|
|
3863
|
-
|
|
4041
|
+
/**
|
|
4042
|
+
* Replace the catalogs this package promotes. Uses replacement semantics — the provided array replaces the current list. Omit to leave catalogs unchanged.
|
|
4043
|
+
*/
|
|
4044
|
+
catalogs?: Catalog[];
|
|
3864
4045
|
/**
|
|
3865
4046
|
* Replace all optimization goals for this package. Uses replacement semantics — omit to leave goals unchanged.
|
|
3866
4047
|
*/
|
|
3867
4048
|
optimization_goals?: OptimizationGoal[];
|
|
3868
4049
|
targeting_overlay?: TargetingOverlay;
|
|
4050
|
+
/**
|
|
4051
|
+
* Keyword targets to add or update on this package. Upserts by (keyword, match_type) identity: if the pair already exists, its bid_price is updated; if not, a new keyword target is added. Use targeting_overlay.keyword_targets in create_media_buy to set the initial list.
|
|
4052
|
+
*/
|
|
4053
|
+
keyword_targets_add?: {
|
|
4054
|
+
/**
|
|
4055
|
+
* The keyword to target
|
|
4056
|
+
*/
|
|
4057
|
+
keyword: string;
|
|
4058
|
+
/**
|
|
4059
|
+
* Match type for this keyword
|
|
4060
|
+
*/
|
|
4061
|
+
match_type: 'broad' | 'phrase' | 'exact';
|
|
4062
|
+
/**
|
|
4063
|
+
* Per-keyword bid price. Inherits currency and max_bid interpretation from the package's pricing option.
|
|
4064
|
+
*/
|
|
4065
|
+
bid_price?: number;
|
|
4066
|
+
}[];
|
|
4067
|
+
/**
|
|
4068
|
+
* Keyword targets to remove from this package. Removes matching (keyword, match_type) pairs. If a specified pair is not present, sellers SHOULD treat it as a no-op for that entry.
|
|
4069
|
+
*/
|
|
4070
|
+
keyword_targets_remove?: {
|
|
4071
|
+
/**
|
|
4072
|
+
* The keyword to stop targeting
|
|
4073
|
+
*/
|
|
4074
|
+
keyword: string;
|
|
4075
|
+
/**
|
|
4076
|
+
* Match type to remove
|
|
4077
|
+
*/
|
|
4078
|
+
match_type: 'broad' | 'phrase' | 'exact';
|
|
4079
|
+
}[];
|
|
4080
|
+
/**
|
|
4081
|
+
* Negative keywords to add to this package. Appends to the existing negative keyword list — does not replace it. If a keyword+match_type pair already exists, sellers SHOULD treat it as a no-op for that entry. Use targeting_overlay.negative_keywords in create_media_buy to set the initial list.
|
|
4082
|
+
*/
|
|
4083
|
+
negative_keywords_add?: {
|
|
4084
|
+
/**
|
|
4085
|
+
* The keyword to exclude
|
|
4086
|
+
*/
|
|
4087
|
+
keyword: string;
|
|
4088
|
+
/**
|
|
4089
|
+
* Match type for exclusion
|
|
4090
|
+
*/
|
|
4091
|
+
match_type: 'broad' | 'phrase' | 'exact';
|
|
4092
|
+
}[];
|
|
4093
|
+
/**
|
|
4094
|
+
* Negative keywords to remove from this package. Removes matching keyword+match_type pairs from the existing list. If a specified pair is not present, sellers SHOULD treat it as a no-op for that entry.
|
|
4095
|
+
*/
|
|
4096
|
+
negative_keywords_remove?: {
|
|
4097
|
+
/**
|
|
4098
|
+
* The keyword to stop excluding
|
|
4099
|
+
*/
|
|
4100
|
+
keyword: string;
|
|
4101
|
+
/**
|
|
4102
|
+
* Match type to remove
|
|
4103
|
+
*/
|
|
4104
|
+
match_type: 'broad' | 'phrase' | 'exact';
|
|
4105
|
+
}[];
|
|
3869
4106
|
/**
|
|
3870
4107
|
* Replace creative assignments for this package with optional weights and placement targeting. Uses replacement semantics - omit to leave assignments unchanged.
|
|
3871
4108
|
*/
|
|
@@ -3923,9 +4160,9 @@ export interface UpdateMediaBuyError {
|
|
|
3923
4160
|
ext?: ExtensionObject;
|
|
3924
4161
|
}
|
|
3925
4162
|
/**
|
|
3926
|
-
* Status of a media buy
|
|
4163
|
+
* Status of a media buy.
|
|
3927
4164
|
*/
|
|
3928
|
-
export type MediaBuyStatus = 'pending_activation' | 'active' | 'paused' | 'completed';
|
|
4165
|
+
export type MediaBuyStatus = 'pending_activation' | 'active' | 'paused' | 'completed' | 'rejected' | 'canceled';
|
|
3929
4166
|
/**
|
|
3930
4167
|
* Request parameters for retrieving media buy status, creative approval state, and optional delivery snapshots
|
|
3931
4168
|
*/
|
|
@@ -3985,6 +4222,14 @@ export interface GetMediaBuysResponse {
|
|
|
3985
4222
|
* Total budget amount across all packages, denominated in media_buy.currency
|
|
3986
4223
|
*/
|
|
3987
4224
|
total_budget: number;
|
|
4225
|
+
/**
|
|
4226
|
+
* ISO 8601 flight start time for this media buy (earliest package start_time). Avoids requiring buyers to compute min(packages[].start_time).
|
|
4227
|
+
*/
|
|
4228
|
+
start_time?: string;
|
|
4229
|
+
/**
|
|
4230
|
+
* ISO 8601 flight end time for this media buy (latest package end_time). Avoids requiring buyers to compute max(packages[].end_time).
|
|
4231
|
+
*/
|
|
4232
|
+
end_time?: string;
|
|
3988
4233
|
/**
|
|
3989
4234
|
* ISO 8601 timestamp for creative upload deadline
|
|
3990
4235
|
*/
|
|
@@ -4117,6 +4362,14 @@ export interface GetMediaBuysResponse {
|
|
|
4117
4362
|
context?: ContextObject;
|
|
4118
4363
|
ext?: ExtensionObject;
|
|
4119
4364
|
}
|
|
4365
|
+
/**
|
|
4366
|
+
* Attribution model to use. When omitted, the seller applies their default model.
|
|
4367
|
+
*/
|
|
4368
|
+
export type AttributionModel = 'last_touch' | 'first_touch' | 'linear' | 'time_decay' | 'data_driven';
|
|
4369
|
+
/**
|
|
4370
|
+
* Metric to sort breakdown rows by (descending). Falls back to 'spend' if the seller does not report the requested metric.
|
|
4371
|
+
*/
|
|
4372
|
+
export type SortMetric = 'impressions' | 'spend' | 'clicks' | 'ctr' | 'views' | 'completed_views' | 'completion_rate' | 'conversions' | 'conversion_value' | 'roas' | 'cost_per_acquisition' | 'new_to_brand_rate' | 'leads' | 'grps' | 'reach' | 'frequency' | 'engagements' | 'follows' | 'saves' | 'profile_visits' | 'engagement_rate' | 'cost_per_click';
|
|
4120
4373
|
/**
|
|
4121
4374
|
* Request parameters for retrieving comprehensive delivery metrics
|
|
4122
4375
|
*/
|
|
@@ -4139,20 +4392,98 @@ export interface GetMediaBuyDeliveryRequest {
|
|
|
4139
4392
|
*/
|
|
4140
4393
|
start_date?: string;
|
|
4141
4394
|
/**
|
|
4142
|
-
* 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'.
|
|
4395
|
+
* 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'.
|
|
4396
|
+
*/
|
|
4397
|
+
end_date?: string;
|
|
4398
|
+
/**
|
|
4399
|
+
* When true, include daily_breakdown arrays within each package in by_package. Useful for per-package pacing analysis and line-item monitoring. Omit or set false to reduce response size — package daily data can be large for multi-package buys over long flights.
|
|
4400
|
+
*/
|
|
4401
|
+
include_package_daily_breakdown?: boolean;
|
|
4402
|
+
/**
|
|
4403
|
+
* Attribution window to apply for conversion metrics. When provided, the seller returns conversion data using the requested lookback windows instead of their platform default. The seller echoes the applied window in the response. Sellers that do not support configurable windows ignore this field and return their default. Check get_adcp_capabilities conversion_tracking.attribution_windows for available options.
|
|
4404
|
+
*/
|
|
4405
|
+
attribution_window?: {
|
|
4406
|
+
/**
|
|
4407
|
+
* Post-click attribution window to apply.
|
|
4408
|
+
*/
|
|
4409
|
+
post_click?: Duration;
|
|
4410
|
+
/**
|
|
4411
|
+
* Post-view attribution window to apply.
|
|
4412
|
+
*/
|
|
4413
|
+
post_view?: Duration;
|
|
4414
|
+
model?: AttributionModel;
|
|
4415
|
+
};
|
|
4416
|
+
/**
|
|
4417
|
+
* Request dimensional breakdowns in delivery reporting. Each key enables a specific breakdown dimension within by_package — include as an empty object (e.g., "device_type": {}) to activate with defaults. Omit entirely for no breakdowns (backward compatible). Unsupported dimensions are silently omitted from the response. Note: keyword, catalog_item, and creative breakdowns are returned automatically when the seller supports them and are not controlled by this object.
|
|
4143
4418
|
*/
|
|
4144
|
-
|
|
4419
|
+
reporting_dimensions?: {
|
|
4420
|
+
/**
|
|
4421
|
+
* Request geographic breakdown. Check reporting_capabilities.supports_geo_breakdown for available levels and systems.
|
|
4422
|
+
*/
|
|
4423
|
+
geo?: {
|
|
4424
|
+
geo_level: GeographicTargetingLevel;
|
|
4425
|
+
/**
|
|
4426
|
+
* Classification system for metro or postal_area levels (e.g., 'nielsen_dma', 'us_zip'). Required when geo_level is 'metro' or 'postal_area'.
|
|
4427
|
+
*/
|
|
4428
|
+
system?: MetroAreaSystem | PostalCodeSystem;
|
|
4429
|
+
/**
|
|
4430
|
+
* Maximum number of geo entries to return. Defaults to 25. When truncated, by_geo_truncated is true in the response.
|
|
4431
|
+
*/
|
|
4432
|
+
limit?: number;
|
|
4433
|
+
sort_by?: SortMetric;
|
|
4434
|
+
};
|
|
4435
|
+
/**
|
|
4436
|
+
* Request device type breakdown.
|
|
4437
|
+
*/
|
|
4438
|
+
device_type?: {
|
|
4439
|
+
/**
|
|
4440
|
+
* Maximum number of entries to return. When omitted, all entries are returned (the enum is small and bounded).
|
|
4441
|
+
*/
|
|
4442
|
+
limit?: number;
|
|
4443
|
+
sort_by?: SortMetric;
|
|
4444
|
+
};
|
|
4445
|
+
/**
|
|
4446
|
+
* Request device platform breakdown.
|
|
4447
|
+
*/
|
|
4448
|
+
device_platform?: {
|
|
4449
|
+
/**
|
|
4450
|
+
* Maximum number of entries to return. When omitted, all entries are returned (the enum is small and bounded).
|
|
4451
|
+
*/
|
|
4452
|
+
limit?: number;
|
|
4453
|
+
sort_by?: SortMetric;
|
|
4454
|
+
};
|
|
4455
|
+
/**
|
|
4456
|
+
* Request audience segment breakdown.
|
|
4457
|
+
*/
|
|
4458
|
+
audience?: {
|
|
4459
|
+
/**
|
|
4460
|
+
* Maximum number of entries to return. Defaults to 25.
|
|
4461
|
+
*/
|
|
4462
|
+
limit?: number;
|
|
4463
|
+
sort_by?: SortMetric;
|
|
4464
|
+
};
|
|
4465
|
+
/**
|
|
4466
|
+
* Request placement breakdown.
|
|
4467
|
+
*/
|
|
4468
|
+
placement?: {
|
|
4469
|
+
/**
|
|
4470
|
+
* Maximum number of entries to return. Defaults to 25.
|
|
4471
|
+
*/
|
|
4472
|
+
limit?: number;
|
|
4473
|
+
sort_by?: SortMetric;
|
|
4474
|
+
};
|
|
4475
|
+
};
|
|
4145
4476
|
context?: ContextObject;
|
|
4146
4477
|
ext?: ExtensionObject;
|
|
4147
4478
|
}
|
|
4148
|
-
/**
|
|
4149
|
-
* Attribution model used to assign credit when multiple touchpoints exist
|
|
4150
|
-
*/
|
|
4151
|
-
export type AttributionModel = 'last_touch' | 'first_touch' | 'linear' | 'time_decay' | 'data_driven';
|
|
4152
4479
|
/**
|
|
4153
4480
|
* Pricing model used for this media buy
|
|
4154
4481
|
*/
|
|
4155
4482
|
export type PricingModel = 'cpm' | 'vcpm' | 'cpc' | 'cpcv' | 'cpv' | 'cpp' | 'cpa' | 'flat_rate' | 'time';
|
|
4483
|
+
/**
|
|
4484
|
+
* Origin of the audience segment (synced, platform, third_party, lookalike, retargeting, unknown)
|
|
4485
|
+
*/
|
|
4486
|
+
export type AudienceSource = 'synced' | 'platform' | 'third_party' | 'lookalike' | 'retargeting' | 'unknown';
|
|
4156
4487
|
/**
|
|
4157
4488
|
* Response payload for get_media_buy_delivery task
|
|
4158
4489
|
*/
|
|
@@ -4257,9 +4588,9 @@ export interface GetMediaBuyDeliveryResponse {
|
|
|
4257
4588
|
*/
|
|
4258
4589
|
buyer_campaign_ref?: string;
|
|
4259
4590
|
/**
|
|
4260
|
-
* Current media buy status. Lifecycle states use the same taxonomy as media-buy-status (`pending_activation`, `active`, `paused`, `completed`). In webhook context, reporting_delayed indicates data temporarily unavailable. `pending` is accepted as a legacy alias for pending_activation.
|
|
4591
|
+
* Current media buy status. Lifecycle states use the same taxonomy as media-buy-status (`pending_activation`, `active`, `paused`, `completed`, `rejected`, `canceled`). In webhook context, reporting_delayed indicates data temporarily unavailable. `pending` is accepted as a legacy alias for pending_activation.
|
|
4261
4592
|
*/
|
|
4262
|
-
status: 'pending_activation' | 'pending' | 'active' | 'paused' | 'completed' | 'failed' | 'reporting_delayed';
|
|
4593
|
+
status: 'pending_activation' | 'pending' | 'active' | 'paused' | 'completed' | 'rejected' | 'canceled' | 'failed' | 'reporting_delayed';
|
|
4263
4594
|
/**
|
|
4264
4595
|
* When delayed data is expected to be available (only present when status is reporting_delayed)
|
|
4265
4596
|
*/
|
|
@@ -4331,6 +4662,129 @@ export interface GetMediaBuyDeliveryResponse {
|
|
|
4331
4662
|
*/
|
|
4332
4663
|
weight?: number;
|
|
4333
4664
|
})[];
|
|
4665
|
+
/**
|
|
4666
|
+
* Metrics broken down by keyword within this package. One row per (keyword, match_type) pair — the same keyword with different match types appears as separate rows. Keyword-grain only: rows reflect aggregate performance of each targeted keyword, not individual search queries. Rows may not sum to package totals when a single impression is attributed to the triggering keyword only. Available for search and retail media packages when the seller supports keyword-level reporting.
|
|
4667
|
+
*/
|
|
4668
|
+
by_keyword?: (DeliveryMetrics & {
|
|
4669
|
+
/**
|
|
4670
|
+
* The targeted keyword
|
|
4671
|
+
*/
|
|
4672
|
+
keyword: string;
|
|
4673
|
+
/**
|
|
4674
|
+
* Match type for this keyword
|
|
4675
|
+
*/
|
|
4676
|
+
match_type: 'broad' | 'phrase' | 'exact';
|
|
4677
|
+
})[];
|
|
4678
|
+
/**
|
|
4679
|
+
* Delivery by geographic area within this package. Available when the buyer requests geo breakdown via reporting_dimensions and the seller supports it. Each dimension's rows are independent slices that should sum to the package total.
|
|
4680
|
+
*/
|
|
4681
|
+
by_geo?: (DeliveryMetrics & {
|
|
4682
|
+
geo_level: GeographicTargetingLevel;
|
|
4683
|
+
/**
|
|
4684
|
+
* Classification system for metro or postal_area levels (e.g., 'nielsen_dma', 'us_zip'). Present when geo_level is 'metro' or 'postal_area'.
|
|
4685
|
+
*/
|
|
4686
|
+
system?: string;
|
|
4687
|
+
/**
|
|
4688
|
+
* Geographic code within the level and system. Country: ISO 3166-1 alpha-2 ('US'). Region: ISO 3166-2 with country prefix ('US-CA'). Metro/postal: system-specific code ('501', '10001').
|
|
4689
|
+
*/
|
|
4690
|
+
geo_code: string;
|
|
4691
|
+
/**
|
|
4692
|
+
* Human-readable geographic name (e.g., 'United States', 'California', 'New York DMA')
|
|
4693
|
+
*/
|
|
4694
|
+
geo_name?: string;
|
|
4695
|
+
})[];
|
|
4696
|
+
/**
|
|
4697
|
+
* Whether by_geo was truncated due to the requested limit or a seller-imposed maximum. Sellers MUST return this flag whenever by_geo is present (false means the list is complete).
|
|
4698
|
+
*/
|
|
4699
|
+
by_geo_truncated?: boolean;
|
|
4700
|
+
/**
|
|
4701
|
+
* Delivery by device form factor within this package. Available when the buyer requests device_type breakdown via reporting_dimensions and the seller supports it.
|
|
4702
|
+
*/
|
|
4703
|
+
by_device_type?: (DeliveryMetrics & {
|
|
4704
|
+
device_type: DeviceType;
|
|
4705
|
+
})[];
|
|
4706
|
+
/**
|
|
4707
|
+
* Whether by_device_type was truncated. Sellers MUST return this flag whenever by_device_type is present (false means the list is complete).
|
|
4708
|
+
*/
|
|
4709
|
+
by_device_type_truncated?: boolean;
|
|
4710
|
+
/**
|
|
4711
|
+
* Delivery by operating system within this package. Available when the buyer requests device_platform breakdown via reporting_dimensions and the seller supports it. Useful for CTV campaigns where tvOS vs Roku OS vs Fire OS matters.
|
|
4712
|
+
*/
|
|
4713
|
+
by_device_platform?: (DeliveryMetrics & {
|
|
4714
|
+
device_platform: DevicePlatform;
|
|
4715
|
+
})[];
|
|
4716
|
+
/**
|
|
4717
|
+
* Whether by_device_platform was truncated. Sellers MUST return this flag whenever by_device_platform is present (false means the list is complete).
|
|
4718
|
+
*/
|
|
4719
|
+
by_device_platform_truncated?: boolean;
|
|
4720
|
+
/**
|
|
4721
|
+
* Delivery by audience segment within this package. Available when the buyer requests audience breakdown via reporting_dimensions and the seller supports it. Only 'synced' audiences are directly targetable via the targeting overlay; other sources are informational.
|
|
4722
|
+
*/
|
|
4723
|
+
by_audience?: (DeliveryMetrics & {
|
|
4724
|
+
/**
|
|
4725
|
+
* Audience segment identifier. For 'synced' source, matches audience_id from sync_audiences. For other sources, seller-defined.
|
|
4726
|
+
*/
|
|
4727
|
+
audience_id: string;
|
|
4728
|
+
audience_source: AudienceSource;
|
|
4729
|
+
/**
|
|
4730
|
+
* Human-readable audience segment name
|
|
4731
|
+
*/
|
|
4732
|
+
audience_name?: string;
|
|
4733
|
+
})[];
|
|
4734
|
+
/**
|
|
4735
|
+
* Whether by_audience was truncated. Sellers MUST return this flag whenever by_audience is present (false means the list is complete).
|
|
4736
|
+
*/
|
|
4737
|
+
by_audience_truncated?: boolean;
|
|
4738
|
+
/**
|
|
4739
|
+
* Delivery by placement within this package. Available when the buyer requests placement breakdown via reporting_dimensions and the seller supports it. Placement IDs reference the product's placements array.
|
|
4740
|
+
*/
|
|
4741
|
+
by_placement?: (DeliveryMetrics & {
|
|
4742
|
+
/**
|
|
4743
|
+
* Placement identifier from the product's placements array
|
|
4744
|
+
*/
|
|
4745
|
+
placement_id: string;
|
|
4746
|
+
/**
|
|
4747
|
+
* Human-readable placement name
|
|
4748
|
+
*/
|
|
4749
|
+
placement_name?: string;
|
|
4750
|
+
})[];
|
|
4751
|
+
/**
|
|
4752
|
+
* Whether by_placement was truncated. Sellers MUST return this flag whenever by_placement is present (false means the list is complete).
|
|
4753
|
+
*/
|
|
4754
|
+
by_placement_truncated?: boolean;
|
|
4755
|
+
/**
|
|
4756
|
+
* Day-by-day delivery for this package. Only present when include_package_daily_breakdown is true in the request. Enables per-package pacing analysis and line-item monitoring.
|
|
4757
|
+
*/
|
|
4758
|
+
daily_breakdown?: {
|
|
4759
|
+
/**
|
|
4760
|
+
* Date (YYYY-MM-DD)
|
|
4761
|
+
*/
|
|
4762
|
+
date: string;
|
|
4763
|
+
/**
|
|
4764
|
+
* Daily impressions for this package
|
|
4765
|
+
*/
|
|
4766
|
+
impressions: number;
|
|
4767
|
+
/**
|
|
4768
|
+
* Daily spend for this package
|
|
4769
|
+
*/
|
|
4770
|
+
spend: number;
|
|
4771
|
+
/**
|
|
4772
|
+
* Daily conversions for this package
|
|
4773
|
+
*/
|
|
4774
|
+
conversions?: number;
|
|
4775
|
+
/**
|
|
4776
|
+
* Daily conversion value for this package
|
|
4777
|
+
*/
|
|
4778
|
+
conversion_value?: number;
|
|
4779
|
+
/**
|
|
4780
|
+
* Daily return on ad spend (conversion_value / spend)
|
|
4781
|
+
*/
|
|
4782
|
+
roas?: number;
|
|
4783
|
+
/**
|
|
4784
|
+
* Daily fraction of conversions from first-time brand buyers (0 = none, 1 = all)
|
|
4785
|
+
*/
|
|
4786
|
+
new_to_brand_rate?: number;
|
|
4787
|
+
}[];
|
|
4334
4788
|
})[];
|
|
4335
4789
|
/**
|
|
4336
4790
|
* Day-by-day delivery
|
|
@@ -4382,13 +4836,13 @@ export interface GetMediaBuyDeliveryResponse {
|
|
|
4382
4836
|
*/
|
|
4383
4837
|
export interface AttributionWindow {
|
|
4384
4838
|
/**
|
|
4385
|
-
*
|
|
4839
|
+
* Post-click attribution window. Conversions occurring within this duration after a click are attributed to the ad.
|
|
4386
4840
|
*/
|
|
4387
|
-
|
|
4841
|
+
post_click?: Duration;
|
|
4388
4842
|
/**
|
|
4389
|
-
*
|
|
4843
|
+
* Post-view attribution window. Conversions occurring within this duration after an ad impression (without click) are attributed to the ad.
|
|
4390
4844
|
*/
|
|
4391
|
-
|
|
4845
|
+
post_view?: Duration;
|
|
4392
4846
|
model: AttributionModel;
|
|
4393
4847
|
}
|
|
4394
4848
|
/**
|
|
@@ -4628,19 +5082,7 @@ export type ProvidePerformanceFeedbackRequest = {
|
|
|
4628
5082
|
* Buyer's reference for the media buy
|
|
4629
5083
|
*/
|
|
4630
5084
|
buyer_ref?: string;
|
|
4631
|
-
|
|
4632
|
-
* Time period for performance measurement
|
|
4633
|
-
*/
|
|
4634
|
-
measurement_period?: {
|
|
4635
|
-
/**
|
|
4636
|
-
* ISO 8601 start timestamp for measurement period
|
|
4637
|
-
*/
|
|
4638
|
-
start: string;
|
|
4639
|
-
/**
|
|
4640
|
-
* ISO 8601 end timestamp for measurement period
|
|
4641
|
-
*/
|
|
4642
|
-
end: string;
|
|
4643
|
-
};
|
|
5085
|
+
measurement_period?: DatetimeRange;
|
|
4644
5086
|
/**
|
|
4645
5087
|
* Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expected)
|
|
4646
5088
|
*/
|
|
@@ -4668,6 +5110,19 @@ export type MetricType = 'overall_performance' | 'conversion_rate' | 'brand_lift
|
|
|
4668
5110
|
* Source of the performance data
|
|
4669
5111
|
*/
|
|
4670
5112
|
export type FeedbackSource = 'buyer_attribution' | 'third_party_measurement' | 'platform_analytics' | 'verification_partner';
|
|
5113
|
+
/**
|
|
5114
|
+
* Time period for performance measurement
|
|
5115
|
+
*/
|
|
5116
|
+
export interface DatetimeRange {
|
|
5117
|
+
/**
|
|
5118
|
+
* Start timestamp (inclusive), ISO 8601
|
|
5119
|
+
*/
|
|
5120
|
+
start: string;
|
|
5121
|
+
/**
|
|
5122
|
+
* End timestamp (inclusive), ISO 8601
|
|
5123
|
+
*/
|
|
5124
|
+
end: string;
|
|
5125
|
+
}
|
|
4671
5126
|
/**
|
|
4672
5127
|
* Response payload for provide_performance_feedback task. Returns either success confirmation OR error information, never both.
|
|
4673
5128
|
*/
|
|
@@ -4853,7 +5308,7 @@ export type UserMatch = {
|
|
|
4853
5308
|
/**
|
|
4854
5309
|
* Universal ID type
|
|
4855
5310
|
*/
|
|
4856
|
-
export type UIDType = 'rampid' | 'id5' | 'uid2' | 'euid' | 'pairid' | '
|
|
5311
|
+
export type UIDType = 'rampid' | 'id5' | 'uid2' | 'euid' | 'pairid' | 'maid' | 'other';
|
|
4857
5312
|
/**
|
|
4858
5313
|
* Request parameters for logging marketing events
|
|
4859
5314
|
*/
|
|
@@ -5024,11 +5479,15 @@ export interface LogEventError {
|
|
|
5024
5479
|
ext?: ExtensionObject;
|
|
5025
5480
|
}
|
|
5026
5481
|
/**
|
|
5027
|
-
*
|
|
5482
|
+
* A CRM audience member identified by a buyer-assigned external_id and at least one matchable identifier. All identifiers must be normalized before hashing: emails to lowercase+trim, phone numbers to E.164 format (e.g. +12065551234). Providing multiple identifiers for the same person improves match rates. Composite identifiers (e.g. hashed first name + last name + zip for Google Customer Match) are not yet standardized — use the ext field for platform-specific extensions.
|
|
5028
5483
|
*/
|
|
5029
5484
|
export type AudienceMember = {
|
|
5030
5485
|
[k: string]: unknown | undefined;
|
|
5031
5486
|
} & {
|
|
5487
|
+
/**
|
|
5488
|
+
* Buyer-assigned stable identifier for this audience member (e.g. CRM record ID, loyalty ID). Used for deduplication, removal, and cross-referencing with buyer systems. Adapters for CDPs that don't natively assign IDs can derive one (e.g. hash of the member's identifiers).
|
|
5489
|
+
*/
|
|
5490
|
+
external_id: string;
|
|
5032
5491
|
/**
|
|
5033
5492
|
* SHA-256 hash of lowercase, trimmed email address.
|
|
5034
5493
|
*/
|
|
@@ -5049,6 +5508,10 @@ export type AudienceMember = {
|
|
|
5049
5508
|
}[];
|
|
5050
5509
|
ext?: ExtensionObject;
|
|
5051
5510
|
};
|
|
5511
|
+
/**
|
|
5512
|
+
* GDPR lawful basis for processing this audience list. Informational — not validated by the protocol, but required by some sellers operating in regulated markets (e.g. EU). When omitted, the buyer asserts they have a lawful basis appropriate to their jurisdiction.
|
|
5513
|
+
*/
|
|
5514
|
+
export type ConsentBasis = 'consent' | 'legitimate_interest' | 'contract' | 'legal_obligation';
|
|
5052
5515
|
/**
|
|
5053
5516
|
* Request parameters for managing CRM-based audiences on an account with upsert semantics. Existing audiences matched by audience_id are updated, new ones are created. Members are specified as delta operations: add appends new members, remove drops existing ones. Recommend no more than 100,000 members per call; for larger lists, chunk and call incrementally using add/remove deltas. When delete_missing is true, buyer-managed audiences on the account not in this request are removed — do not combine with omitted audiences or all buyer-managed audiences will be deleted. When audiences is omitted, the call is discovery-only: it returns all audiences on the account without modification.
|
|
5054
5517
|
*/
|
|
@@ -5066,6 +5529,18 @@ export interface SyncAudiencesRequest {
|
|
|
5066
5529
|
* Human-readable name for this audience
|
|
5067
5530
|
*/
|
|
5068
5531
|
name?: string;
|
|
5532
|
+
/**
|
|
5533
|
+
* Human-readable description of this audience's composition or purpose (e.g., 'High-value customers who purchased in the last 90 days').
|
|
5534
|
+
*/
|
|
5535
|
+
description?: string;
|
|
5536
|
+
/**
|
|
5537
|
+
* Intended use for this audience. 'crm': target these users. 'suppression': exclude these users from delivery. 'lookalike_seed': use as a seed for the seller's lookalike modeling. Sellers may handle audiences differently based on type (e.g., suppression lists bypass minimum size requirements on some platforms).
|
|
5538
|
+
*/
|
|
5539
|
+
audience_type?: 'crm' | 'suppression' | 'lookalike_seed';
|
|
5540
|
+
/**
|
|
5541
|
+
* Buyer-defined tags for organizing and filtering audiences (e.g., 'holiday_2026', 'high_ltv'). Tags are stored by the seller and returned in discovery-only calls.
|
|
5542
|
+
*/
|
|
5543
|
+
tags?: string[];
|
|
5069
5544
|
/**
|
|
5070
5545
|
* Members to add to this audience. Hashed before sending — normalize emails to lowercase+trim, phones to E.164.
|
|
5071
5546
|
*/
|
|
@@ -5078,10 +5553,7 @@ export interface SyncAudiencesRequest {
|
|
|
5078
5553
|
* When true, delete this audience from the account entirely. All other fields on this audience object are ignored. Use this to delete a specific audience without affecting others.
|
|
5079
5554
|
*/
|
|
5080
5555
|
delete?: boolean;
|
|
5081
|
-
|
|
5082
|
-
* GDPR lawful basis for processing this audience list. Informational — not validated by the protocol, but required by some sellers operating in regulated markets (e.g. EU). When omitted, the buyer asserts they have a lawful basis appropriate to their jurisdiction.
|
|
5083
|
-
*/
|
|
5084
|
-
consent_basis?: 'consent' | 'legitimate_interest' | 'contract' | 'legal_obligation';
|
|
5556
|
+
consent_basis?: ConsentBasis;
|
|
5085
5557
|
}[];
|
|
5086
5558
|
/**
|
|
5087
5559
|
* When true, buyer-managed audiences on the account not included in this sync will be removed. Does not affect seller-managed audiences. Do not combine with an omitted audiences array or all buyer-managed audiences will be deleted.
|
|
@@ -5126,6 +5598,10 @@ export interface SyncAudiencesSuccess {
|
|
|
5126
5598
|
* Number of members submitted in this sync operation (delta, not cumulative). In discovery-only calls (no audiences array), this is 0.
|
|
5127
5599
|
*/
|
|
5128
5600
|
uploaded_count?: number;
|
|
5601
|
+
/**
|
|
5602
|
+
* Cumulative number of members uploaded across all syncs for this audience. Compare with matched_count to calculate match rate (matched_count / total_uploaded_count). Populated when the seller tracks cumulative upload counts.
|
|
5603
|
+
*/
|
|
5604
|
+
total_uploaded_count?: number;
|
|
5129
5605
|
/**
|
|
5130
5606
|
* Total members matched to platform users across all syncs (cumulative, not just this call). Populated when status is 'ready'.
|
|
5131
5607
|
*/
|
|
@@ -5293,163 +5769,39 @@ export interface SyncCatalogsError {
|
|
|
5293
5769
|
context?: ContextObject;
|
|
5294
5770
|
ext?: ExtensionObject;
|
|
5295
5771
|
}
|
|
5296
|
-
/**
|
|
5297
|
-
* HTTP method
|
|
5298
|
-
*/
|
|
5299
|
-
export type HTTPMethod = 'GET' | 'POST';
|
|
5300
|
-
/**
|
|
5301
|
-
* Expected content type of webhook response
|
|
5302
|
-
*/
|
|
5303
|
-
export type WebhookResponseType = 'html' | 'json' | 'xml' | 'javascript';
|
|
5304
|
-
/**
|
|
5305
|
-
* Authentication method
|
|
5306
|
-
*/
|
|
5307
|
-
export type WebhookSecurityMethod = 'hmac_sha256' | 'api_key' | 'none';
|
|
5308
|
-
/**
|
|
5309
|
-
* Campaign-level creative brief with objective, audience, messaging, and reference assets. Can be an inline brief object or a URL to a hosted brief. Supplements the natural language message with structured creative direction.
|
|
5310
|
-
*/
|
|
5311
|
-
export type CreativeBriefReference = CreativeBrief | string;
|
|
5312
5772
|
/**
|
|
5313
5773
|
* Request to transform or generate a creative manifest. Takes a source manifest (which may be minimal for pure generation) and produces a target manifest in the specified format.
|
|
5314
5774
|
*/
|
|
5315
5775
|
export interface BuildCreativeRequest {
|
|
5316
5776
|
/**
|
|
5317
|
-
* 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.
|
|
5777
|
+
* 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. For refinement, this describes the desired changes.
|
|
5318
5778
|
*/
|
|
5319
5779
|
message?: string;
|
|
5320
5780
|
creative_manifest?: CreativeManifest;
|
|
5321
5781
|
target_format_id: FormatID;
|
|
5322
5782
|
brand?: BrandReference;
|
|
5323
|
-
creative_brief?: CreativeBriefReference;
|
|
5324
5783
|
context?: ContextObject;
|
|
5325
5784
|
ext?: ExtensionObject;
|
|
5326
5785
|
}
|
|
5327
5786
|
/**
|
|
5328
5787
|
* Creative manifest to transform or generate from. For pure generation, this should include the target format_id and any required input assets. For transformation (e.g., resizing, reformatting), this is the complete creative to adapt.
|
|
5329
5788
|
*/
|
|
5330
|
-
export interface CreativeManifest {
|
|
5331
|
-
format_id: FormatID;
|
|
5332
|
-
/**
|
|
5333
|
-
* Catalogs this creative renders. Each entry satisfies one of the format's catalog_requirements, matched by type. Tells the creative what data to display — product listings for a carousel, job vacancies for a recruitment ad, store locations for a locator. This is a data reference, not a campaign expansion directive; campaign structure and budget allocation are handled by create_media_buy packages. Each catalog can be inline (with items), a reference to a synced catalog (by catalog_id), or a URL to an external feed.
|
|
5334
|
-
*/
|
|
5335
|
-
catalogs?: Catalog[];
|
|
5336
|
-
/**
|
|
5337
|
-
* 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.
|
|
5338
|
-
*
|
|
5339
|
-
* 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.
|
|
5340
|
-
*/
|
|
5341
|
-
assets: {
|
|
5342
|
-
/**
|
|
5343
|
-
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
5344
|
-
* via the `patternProperty` "^[a-z0-9_]+$".
|
|
5345
|
-
*/
|
|
5346
|
-
[k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset;
|
|
5347
|
-
};
|
|
5348
|
-
ext?: ExtensionObject;
|
|
5349
|
-
}
|
|
5350
|
-
/**
|
|
5351
|
-
* Webhook for server-side dynamic content rendering (DCO)
|
|
5352
|
-
*/
|
|
5353
|
-
export interface WebhookAsset {
|
|
5354
|
-
/**
|
|
5355
|
-
* Webhook URL to call for dynamic content
|
|
5356
|
-
*/
|
|
5357
|
-
url: string;
|
|
5358
|
-
method?: HTTPMethod;
|
|
5359
|
-
/**
|
|
5360
|
-
* Maximum time to wait for response in milliseconds
|
|
5361
|
-
*/
|
|
5362
|
-
timeout_ms?: number;
|
|
5363
|
-
/**
|
|
5364
|
-
* Universal macros that can be passed to webhook (e.g., DEVICE_TYPE, COUNTRY). See docs/creative/universal-macros.mdx for full list.
|
|
5365
|
-
*/
|
|
5366
|
-
supported_macros?: (UniversalMacro | string)[];
|
|
5367
|
-
/**
|
|
5368
|
-
* Universal macros that must be provided for webhook to function
|
|
5369
|
-
*/
|
|
5370
|
-
required_macros?: (UniversalMacro | string)[];
|
|
5371
|
-
response_type: WebhookResponseType;
|
|
5372
|
-
/**
|
|
5373
|
-
* Security configuration for webhook calls
|
|
5374
|
-
*/
|
|
5375
|
-
security: {
|
|
5376
|
-
method: WebhookSecurityMethod;
|
|
5377
|
-
/**
|
|
5378
|
-
* Header name for HMAC signature (e.g., 'X-Signature')
|
|
5379
|
-
*/
|
|
5380
|
-
hmac_header?: string;
|
|
5381
|
-
/**
|
|
5382
|
-
* Header name for API key (e.g., 'X-API-Key')
|
|
5383
|
-
*/
|
|
5384
|
-
api_key_header?: string;
|
|
5385
|
-
};
|
|
5386
|
-
}
|
|
5387
|
-
/**
|
|
5388
|
-
* Inline creative brief object
|
|
5389
|
-
*/
|
|
5390
|
-
export interface CreativeBrief {
|
|
5391
|
-
/**
|
|
5392
|
-
* Campaign or flight name for identification
|
|
5393
|
-
*/
|
|
5394
|
-
name: string;
|
|
5395
|
-
/**
|
|
5396
|
-
* Campaign objective that guides creative tone and call-to-action strategy
|
|
5397
|
-
*/
|
|
5398
|
-
objective?: 'awareness' | 'consideration' | 'conversion' | 'retention' | 'engagement';
|
|
5399
|
-
/**
|
|
5400
|
-
* Desired tone for this campaign, modulating the brand's base tone (e.g., 'playful and festive', 'premium and aspirational')
|
|
5401
|
-
*/
|
|
5402
|
-
tone?: string;
|
|
5403
|
-
/**
|
|
5404
|
-
* Target audience description for this campaign
|
|
5405
|
-
*/
|
|
5406
|
-
audience?: string;
|
|
5407
|
-
/**
|
|
5408
|
-
* Creative territory or positioning the campaign should occupy
|
|
5409
|
-
*/
|
|
5410
|
-
territory?: string;
|
|
5411
|
-
/**
|
|
5412
|
-
* Messaging framework for the campaign
|
|
5413
|
-
*/
|
|
5414
|
-
messaging?: {
|
|
5415
|
-
/**
|
|
5416
|
-
* Primary headline
|
|
5417
|
-
*/
|
|
5418
|
-
headline?: string;
|
|
5419
|
-
/**
|
|
5420
|
-
* Supporting tagline or sub-headline
|
|
5421
|
-
*/
|
|
5422
|
-
tagline?: string;
|
|
5423
|
-
/**
|
|
5424
|
-
* Call-to-action text
|
|
5425
|
-
*/
|
|
5426
|
-
cta?: string;
|
|
5427
|
-
/**
|
|
5428
|
-
* Key messages to communicate in priority order
|
|
5429
|
-
*/
|
|
5430
|
-
key_messages?: string[];
|
|
5431
|
-
};
|
|
5432
|
-
/**
|
|
5433
|
-
* Visual and strategic reference materials such as mood boards, product shots, example creatives, and strategy documents
|
|
5434
|
-
*/
|
|
5435
|
-
reference_assets?: ReferenceAsset[];
|
|
5436
|
-
}
|
|
5437
|
-
/**
|
|
5438
|
-
* A reference asset that provides creative context. Carries visual materials (mood boards, product shots, example creatives) with semantic roles that tell creative agents how to use them.
|
|
5439
|
-
*/
|
|
5440
|
-
export interface ReferenceAsset {
|
|
5441
|
-
/**
|
|
5442
|
-
* URL to the reference asset (image, video, or document)
|
|
5443
|
-
*/
|
|
5444
|
-
url: string;
|
|
5445
|
-
/**
|
|
5446
|
-
* How the creative agent should use this asset. style_reference: match the visual style; product_shot: include this product; mood_board: overall look and feel; example_creative: example of a similar execution; logo: logo to use; strategy_doc: strategy or planning document for context
|
|
5447
|
-
*/
|
|
5448
|
-
role: 'style_reference' | 'product_shot' | 'mood_board' | 'example_creative' | 'logo' | 'strategy_doc';
|
|
5789
|
+
export interface CreativeManifest {
|
|
5790
|
+
format_id: FormatID;
|
|
5449
5791
|
/**
|
|
5450
|
-
*
|
|
5792
|
+
* 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.
|
|
5793
|
+
*
|
|
5794
|
+
* 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.
|
|
5451
5795
|
*/
|
|
5452
|
-
|
|
5796
|
+
assets: {
|
|
5797
|
+
/**
|
|
5798
|
+
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
5799
|
+
* via the `patternProperty` "^[a-z0-9_]+$".
|
|
5800
|
+
*/
|
|
5801
|
+
[k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset | MarkdownAsset | BriefAsset | CatalogAsset;
|
|
5802
|
+
};
|
|
5803
|
+
provenance?: Provenance;
|
|
5804
|
+
ext?: ExtensionObject;
|
|
5453
5805
|
}
|
|
5454
5806
|
/**
|
|
5455
5807
|
* 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.
|
|
@@ -5577,14 +5929,10 @@ export type PreviewCreativeRequest = {
|
|
|
5577
5929
|
*/
|
|
5578
5930
|
export type PreviewOutputFormat = 'url' | 'html';
|
|
5579
5931
|
/**
|
|
5580
|
-
* Complete creative manifest with all required assets
|
|
5932
|
+
* Complete creative manifest with all required assets.
|
|
5581
5933
|
*/
|
|
5582
5934
|
export interface CreativeManifest1 {
|
|
5583
5935
|
format_id: FormatID;
|
|
5584
|
-
/**
|
|
5585
|
-
* Catalogs this creative renders. Each entry satisfies one of the format's catalog_requirements, matched by type. Tells the creative what data to display — product listings for a carousel, job vacancies for a recruitment ad, store locations for a locator. This is a data reference, not a campaign expansion directive; campaign structure and budget allocation are handled by create_media_buy packages. Each catalog can be inline (with items), a reference to a synced catalog (by catalog_id), or a URL to an external feed.
|
|
5586
|
-
*/
|
|
5587
|
-
catalogs?: Catalog[];
|
|
5588
5936
|
/**
|
|
5589
5937
|
* 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.
|
|
5590
5938
|
*
|
|
@@ -5595,8 +5943,9 @@ export interface CreativeManifest1 {
|
|
|
5595
5943
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
5596
5944
|
* via the `patternProperty` "^[a-z0-9_]+$".
|
|
5597
5945
|
*/
|
|
5598
|
-
[k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset;
|
|
5946
|
+
[k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset | MarkdownAsset | BriefAsset | CatalogAsset;
|
|
5599
5947
|
};
|
|
5948
|
+
provenance?: Provenance;
|
|
5600
5949
|
ext?: ExtensionObject;
|
|
5601
5950
|
}
|
|
5602
5951
|
/**
|
|
@@ -5813,9 +6162,15 @@ export interface PreviewCreativeBatchResponse {
|
|
|
5813
6162
|
ext?: ExtensionObject;
|
|
5814
6163
|
}
|
|
5815
6164
|
export interface PreviewBatchResultSuccess {
|
|
6165
|
+
/**
|
|
6166
|
+
* Indicates this preview request succeeded
|
|
6167
|
+
*/
|
|
5816
6168
|
success?: true;
|
|
5817
6169
|
}
|
|
5818
6170
|
export interface PreviewBatchResultError {
|
|
6171
|
+
/**
|
|
6172
|
+
* Indicates this preview request failed
|
|
6173
|
+
*/
|
|
5819
6174
|
success?: false;
|
|
5820
6175
|
}
|
|
5821
6176
|
/**
|
|
@@ -5886,19 +6241,7 @@ export type GetCreativeDeliveryRequest = {
|
|
|
5886
6241
|
* 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.
|
|
5887
6242
|
*/
|
|
5888
6243
|
max_variants?: number;
|
|
5889
|
-
|
|
5890
|
-
* Pagination parameters for the creatives array in the response. When omitted, the agent returns all matching creatives.
|
|
5891
|
-
*/
|
|
5892
|
-
pagination?: {
|
|
5893
|
-
/**
|
|
5894
|
-
* Maximum number of creatives to return
|
|
5895
|
-
*/
|
|
5896
|
-
limit?: number;
|
|
5897
|
-
/**
|
|
5898
|
-
* Number of creatives to skip
|
|
5899
|
-
*/
|
|
5900
|
-
offset?: number;
|
|
5901
|
-
};
|
|
6244
|
+
pagination?: PaginationRequest;
|
|
5902
6245
|
context?: ContextObject;
|
|
5903
6246
|
ext?: ExtensionObject;
|
|
5904
6247
|
};
|
|
@@ -6035,32 +6378,32 @@ export interface Identifier {
|
|
|
6035
6378
|
value: string;
|
|
6036
6379
|
}
|
|
6037
6380
|
/**
|
|
6038
|
-
* Request parameters for discovering signals. Use signal_spec for natural language discovery, signal_ids for exact lookups, or both (signal_ids
|
|
6381
|
+
* Request parameters for discovering and refining signals. Use signal_spec for natural language discovery, signal_ids for exact lookups, or both to refine previous results (signal_ids anchor the starting set, signal_spec guides adjustments).
|
|
6039
6382
|
*/
|
|
6040
6383
|
export type GetSignalsRequest = {
|
|
6041
6384
|
[k: string]: unknown | undefined;
|
|
6042
6385
|
} & {
|
|
6386
|
+
account?: AccountReference;
|
|
6387
|
+
/**
|
|
6388
|
+
* The buyer's campaign reference. Used to correlate signal discovery with subsequent report_usage calls.
|
|
6389
|
+
*/
|
|
6390
|
+
buyer_campaign_ref?: string;
|
|
6043
6391
|
/**
|
|
6044
6392
|
* 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.
|
|
6045
6393
|
*/
|
|
6046
6394
|
signal_spec?: string;
|
|
6047
6395
|
/**
|
|
6048
|
-
* Specific signals to look up by data provider and ID. Returns exact matches from the data provider's catalog.
|
|
6396
|
+
* Specific signals to look up by data provider and ID. Returns exact matches from the data provider's catalog. When combined with signal_spec, these signals anchor the starting set and signal_spec guides adjustments.
|
|
6049
6397
|
*/
|
|
6050
6398
|
signal_ids?: SignalID[];
|
|
6051
6399
|
/**
|
|
6052
|
-
*
|
|
6400
|
+
* Filter signals to those activatable on specific agents/platforms. When omitted, returns all signals available on the current agent. If the authenticated caller matches one of these destinations, activation keys will be included in the response.
|
|
6053
6401
|
*/
|
|
6054
|
-
|
|
6055
|
-
|
|
6056
|
-
|
|
6057
|
-
|
|
6058
|
-
|
|
6059
|
-
/**
|
|
6060
|
-
* Countries where signals will be used (ISO codes)
|
|
6061
|
-
*/
|
|
6062
|
-
countries: string[];
|
|
6063
|
-
};
|
|
6402
|
+
destinations?: Destination[];
|
|
6403
|
+
/**
|
|
6404
|
+
* Countries where signals will be used (ISO 3166-1 alpha-2 codes). When omitted, no geographic filter is applied.
|
|
6405
|
+
*/
|
|
6406
|
+
countries?: string[];
|
|
6064
6407
|
filters?: SignalFilters;
|
|
6065
6408
|
/**
|
|
6066
6409
|
* Maximum number of results to return
|
|
@@ -6117,9 +6460,13 @@ export interface SignalFilters {
|
|
|
6117
6460
|
*/
|
|
6118
6461
|
data_providers?: string[];
|
|
6119
6462
|
/**
|
|
6120
|
-
* Maximum CPM
|
|
6463
|
+
* Maximum CPM filter. Applies only to signals with model='cpm'.
|
|
6121
6464
|
*/
|
|
6122
6465
|
max_cpm?: number;
|
|
6466
|
+
/**
|
|
6467
|
+
* Maximum percent-of-media rate filter. Signals where all percent_of_media pricing options exceed this value are excluded. Does not account for max_cpm caps.
|
|
6468
|
+
*/
|
|
6469
|
+
max_percent?: number;
|
|
6123
6470
|
/**
|
|
6124
6471
|
* Minimum coverage requirement
|
|
6125
6472
|
*/
|
|
@@ -6211,6 +6558,19 @@ export type ActivationKey = {
|
|
|
6211
6558
|
*/
|
|
6212
6559
|
value: string;
|
|
6213
6560
|
};
|
|
6561
|
+
/**
|
|
6562
|
+
* A pricing option offered by a signals agent. Combines pricing_option_id with the signal pricing model fields at the same level — pass pricing_option_id in report_usage for billing verification.
|
|
6563
|
+
*/
|
|
6564
|
+
export type SignalPricingOption = {
|
|
6565
|
+
/**
|
|
6566
|
+
* Opaque identifier for this pricing option, unique within the signals agent. Pass this in report_usage to identify which pricing option was applied.
|
|
6567
|
+
*/
|
|
6568
|
+
pricing_option_id: string;
|
|
6569
|
+
} & SignalPricing;
|
|
6570
|
+
/**
|
|
6571
|
+
* Pricing model for a signal. Discriminated by model: 'cpm' (fixed CPM), 'percent_of_media' (percentage of spend with optional CPM cap), or 'flat_fee' (fixed charge per reporting period, e.g. monthly licensed segments).
|
|
6572
|
+
*/
|
|
6573
|
+
export type SignalPricing = CpmPricing | PercentOfMediaPricing | FlatFeePricing;
|
|
6214
6574
|
/**
|
|
6215
6575
|
* Response payload for get_signals task
|
|
6216
6576
|
*/
|
|
@@ -6233,6 +6593,23 @@ export interface GetSignalsResponse {
|
|
|
6233
6593
|
*/
|
|
6234
6594
|
description: string;
|
|
6235
6595
|
value_type?: SignalValueType;
|
|
6596
|
+
/**
|
|
6597
|
+
* Valid values for categorical signals. Present when value_type is 'categorical'. Buyers must use one of these values in SignalTargeting.values.
|
|
6598
|
+
*/
|
|
6599
|
+
categories?: string[];
|
|
6600
|
+
/**
|
|
6601
|
+
* Valid range for numeric signals. Present when value_type is 'numeric'.
|
|
6602
|
+
*/
|
|
6603
|
+
range?: {
|
|
6604
|
+
/**
|
|
6605
|
+
* Minimum value (inclusive)
|
|
6606
|
+
*/
|
|
6607
|
+
min: number;
|
|
6608
|
+
/**
|
|
6609
|
+
* Maximum value (inclusive)
|
|
6610
|
+
*/
|
|
6611
|
+
max: number;
|
|
6612
|
+
};
|
|
6236
6613
|
signal_type: SignalCatalogType;
|
|
6237
6614
|
/**
|
|
6238
6615
|
* Human-readable name of the data provider
|
|
@@ -6249,7 +6626,7 @@ export interface GetSignalsResponse {
|
|
|
6249
6626
|
/**
|
|
6250
6627
|
* Pricing options available for this signal. The buyer selects one and passes its pricing_option_id in report_usage for billing verification.
|
|
6251
6628
|
*/
|
|
6252
|
-
pricing_options:
|
|
6629
|
+
pricing_options: SignalPricingOption[];
|
|
6253
6630
|
}[];
|
|
6254
6631
|
/**
|
|
6255
6632
|
* Task-specific errors and warnings (e.g., signal discovery or pricing issues)
|
|
@@ -6264,21 +6641,83 @@ export interface GetSignalsResponse {
|
|
|
6264
6641
|
ext?: ExtensionObject;
|
|
6265
6642
|
}
|
|
6266
6643
|
/**
|
|
6267
|
-
*
|
|
6644
|
+
* Fixed cost per thousand impressions
|
|
6645
|
+
*/
|
|
6646
|
+
export interface CpmPricing {
|
|
6647
|
+
model: 'cpm';
|
|
6648
|
+
/**
|
|
6649
|
+
* Cost per thousand impressions
|
|
6650
|
+
*/
|
|
6651
|
+
cpm: number;
|
|
6652
|
+
/**
|
|
6653
|
+
* ISO 4217 currency code
|
|
6654
|
+
*/
|
|
6655
|
+
currency: string;
|
|
6656
|
+
ext?: ExtensionObject;
|
|
6657
|
+
}
|
|
6658
|
+
/**
|
|
6659
|
+
* Percentage of media spend charged for this signal. When max_cpm is set, the effective rate is capped at that CPM — useful for platforms like The Trade Desk that use percent-of-media pricing with a CPM ceiling.
|
|
6660
|
+
*/
|
|
6661
|
+
export interface PercentOfMediaPricing {
|
|
6662
|
+
model: 'percent_of_media';
|
|
6663
|
+
/**
|
|
6664
|
+
* Percentage of media spend, e.g. 15 = 15%
|
|
6665
|
+
*/
|
|
6666
|
+
percent: number;
|
|
6667
|
+
/**
|
|
6668
|
+
* Optional CPM cap. When set, the effective charge is min(percent × media_spend_per_mille, max_cpm).
|
|
6669
|
+
*/
|
|
6670
|
+
max_cpm?: number;
|
|
6671
|
+
/**
|
|
6672
|
+
* ISO 4217 currency code for the resulting charge
|
|
6673
|
+
*/
|
|
6674
|
+
currency: string;
|
|
6675
|
+
ext?: ExtensionObject;
|
|
6676
|
+
}
|
|
6677
|
+
/**
|
|
6678
|
+
* Fixed charge per billing period, regardless of impressions or spend. Used for licensed data bundles and audience subscriptions.
|
|
6679
|
+
*/
|
|
6680
|
+
export interface FlatFeePricing {
|
|
6681
|
+
model: 'flat_fee';
|
|
6682
|
+
/**
|
|
6683
|
+
* Fixed charge for the billing period
|
|
6684
|
+
*/
|
|
6685
|
+
amount: number;
|
|
6686
|
+
/**
|
|
6687
|
+
* Billing period for the flat fee.
|
|
6688
|
+
*/
|
|
6689
|
+
period: 'monthly' | 'quarterly' | 'annual' | 'campaign';
|
|
6690
|
+
/**
|
|
6691
|
+
* ISO 4217 currency code
|
|
6692
|
+
*/
|
|
6693
|
+
currency: string;
|
|
6694
|
+
ext?: ExtensionObject;
|
|
6695
|
+
}
|
|
6696
|
+
/**
|
|
6697
|
+
* Request parameters for activating or deactivating a signal on deployment targets
|
|
6268
6698
|
*/
|
|
6269
6699
|
export interface ActivateSignalRequest {
|
|
6700
|
+
/**
|
|
6701
|
+
* Whether to activate or deactivate the signal. Deactivating removes the segment from downstream platforms, required when campaigns end to comply with data governance policies (GDPR, CCPA). Defaults to 'activate' when omitted.
|
|
6702
|
+
*/
|
|
6703
|
+
action?: 'activate' | 'deactivate';
|
|
6270
6704
|
/**
|
|
6271
6705
|
* The universal identifier for the signal to activate
|
|
6272
6706
|
*/
|
|
6273
6707
|
signal_agent_segment_id: string;
|
|
6274
6708
|
/**
|
|
6275
|
-
* Target
|
|
6709
|
+
* Target destination(s) for activation. If the authenticated caller matches one of these destinations, activation keys will be included in the response.
|
|
6276
6710
|
*/
|
|
6277
|
-
|
|
6711
|
+
destinations: Destination[];
|
|
6278
6712
|
/**
|
|
6279
|
-
* The pricing option selected from the signal's pricing_options in the get_signals response. Required when the signal has pricing options. Records the buyer's pricing commitment at activation time
|
|
6713
|
+
* The pricing option selected from the signal's pricing_options in the get_signals response. Required when the signal has pricing options. Records the buyer's pricing commitment at activation time; pass this same value in report_usage for billing verification.
|
|
6280
6714
|
*/
|
|
6281
6715
|
pricing_option_id?: string;
|
|
6716
|
+
account?: AccountReference;
|
|
6717
|
+
/**
|
|
6718
|
+
* The buyer's campaign reference for this activation. Enables the signals agent to correlate activations with subsequent report_usage calls.
|
|
6719
|
+
*/
|
|
6720
|
+
buyer_campaign_ref?: string;
|
|
6282
6721
|
context?: ContextObject;
|
|
6283
6722
|
ext?: ExtensionObject;
|
|
6284
6723
|
}
|
|
@@ -6393,13 +6832,13 @@ export interface DirectIdentifiersSource {
|
|
|
6393
6832
|
*/
|
|
6394
6833
|
export interface PropertyListFilters {
|
|
6395
6834
|
/**
|
|
6396
|
-
* Property must have feature data for ALL listed countries (ISO codes).
|
|
6835
|
+
* Property must have feature data for ALL listed countries (ISO codes). When omitted, no country restriction is applied.
|
|
6397
6836
|
*/
|
|
6398
|
-
countries_all
|
|
6837
|
+
countries_all?: string[];
|
|
6399
6838
|
/**
|
|
6400
|
-
* Property must support ANY of the listed channels.
|
|
6839
|
+
* Property must support ANY of the listed channels. When omitted, no channel restriction is applied.
|
|
6401
6840
|
*/
|
|
6402
|
-
channels_any
|
|
6841
|
+
channels_any?: MediaChannel[];
|
|
6403
6842
|
/**
|
|
6404
6843
|
* Filter to these property types
|
|
6405
6844
|
*/
|
|
@@ -6666,23 +7105,11 @@ export type ListContentStandardsResponse = {
|
|
|
6666
7105
|
* Array of content standards configurations matching the filter criteria
|
|
6667
7106
|
*/
|
|
6668
7107
|
standards: ContentStandards[];
|
|
6669
|
-
/**
|
|
6670
|
-
* Field must not be present in success response
|
|
6671
|
-
*/
|
|
6672
|
-
errors?: {
|
|
6673
|
-
[k: string]: unknown | undefined;
|
|
6674
|
-
};
|
|
6675
7108
|
pagination?: PaginationResponse;
|
|
6676
7109
|
context?: ContextObject;
|
|
6677
7110
|
ext?: ExtensionObject;
|
|
6678
7111
|
} | {
|
|
6679
7112
|
errors: Error[];
|
|
6680
|
-
/**
|
|
6681
|
-
* Field must not be present in error response
|
|
6682
|
-
*/
|
|
6683
|
-
standards?: {
|
|
6684
|
-
[k: string]: unknown | undefined;
|
|
6685
|
-
};
|
|
6686
7113
|
context?: ContextObject;
|
|
6687
7114
|
ext?: ExtensionObject;
|
|
6688
7115
|
};
|
|
@@ -6802,6 +7229,7 @@ export interface Artifact {
|
|
|
6802
7229
|
* Heading level (1-6), only for role=heading
|
|
6803
7230
|
*/
|
|
6804
7231
|
heading_level?: number;
|
|
7232
|
+
provenance?: Provenance;
|
|
6805
7233
|
} | {
|
|
6806
7234
|
type: 'image';
|
|
6807
7235
|
/**
|
|
@@ -6825,6 +7253,7 @@ export interface Artifact {
|
|
|
6825
7253
|
* Image height in pixels
|
|
6826
7254
|
*/
|
|
6827
7255
|
height?: number;
|
|
7256
|
+
provenance?: Provenance;
|
|
6828
7257
|
} | {
|
|
6829
7258
|
type: 'video';
|
|
6830
7259
|
/**
|
|
@@ -6848,6 +7277,7 @@ export interface Artifact {
|
|
|
6848
7277
|
* Video thumbnail URL
|
|
6849
7278
|
*/
|
|
6850
7279
|
thumbnail_url?: string;
|
|
7280
|
+
provenance?: Provenance;
|
|
6851
7281
|
} | {
|
|
6852
7282
|
type: 'audio';
|
|
6853
7283
|
/**
|
|
@@ -6867,6 +7297,7 @@ export interface Artifact {
|
|
|
6867
7297
|
* How the transcript was generated
|
|
6868
7298
|
*/
|
|
6869
7299
|
transcript_source?: 'original_script' | 'closed_captions' | 'generated';
|
|
7300
|
+
provenance?: Provenance;
|
|
6870
7301
|
})[];
|
|
6871
7302
|
/**
|
|
6872
7303
|
* Rich metadata extracted from the artifact
|
|
@@ -6897,6 +7328,7 @@ export interface Artifact {
|
|
|
6897
7328
|
*/
|
|
6898
7329
|
json_ld?: {}[];
|
|
6899
7330
|
};
|
|
7331
|
+
provenance?: Provenance;
|
|
6900
7332
|
/**
|
|
6901
7333
|
* Platform-specific identifiers for this artifact
|
|
6902
7334
|
*/
|
|
@@ -6939,12 +7371,6 @@ export interface GetContentStandardsRequest {
|
|
|
6939
7371
|
*/
|
|
6940
7372
|
export type GetContentStandardsResponse = ContentStandards | {
|
|
6941
7373
|
errors: Error[];
|
|
6942
|
-
/**
|
|
6943
|
-
* Field must not be present in error response
|
|
6944
|
-
*/
|
|
6945
|
-
standards_id?: {
|
|
6946
|
-
[k: string]: unknown | undefined;
|
|
6947
|
-
};
|
|
6948
7374
|
context?: ContextObject;
|
|
6949
7375
|
ext?: ExtensionObject;
|
|
6950
7376
|
};
|
|
@@ -7027,12 +7453,6 @@ export type CreateContentStandardsResponse = {
|
|
|
7027
7453
|
* Unique identifier for the created standards configuration
|
|
7028
7454
|
*/
|
|
7029
7455
|
standards_id: string;
|
|
7030
|
-
/**
|
|
7031
|
-
* Field must not be present in success response
|
|
7032
|
-
*/
|
|
7033
|
-
errors?: {
|
|
7034
|
-
[k: string]: unknown | undefined;
|
|
7035
|
-
};
|
|
7036
7456
|
context?: ContextObject;
|
|
7037
7457
|
ext?: ExtensionObject;
|
|
7038
7458
|
} | {
|
|
@@ -7041,12 +7461,6 @@ export type CreateContentStandardsResponse = {
|
|
|
7041
7461
|
* If the error is a scope conflict, the ID of the existing standards that conflict
|
|
7042
7462
|
*/
|
|
7043
7463
|
conflicting_standards_id?: string;
|
|
7044
|
-
/**
|
|
7045
|
-
* Field must not be present in error response
|
|
7046
|
-
*/
|
|
7047
|
-
standards_id?: {
|
|
7048
|
-
[k: string]: unknown | undefined;
|
|
7049
|
-
};
|
|
7050
7464
|
context?: ContextObject;
|
|
7051
7465
|
ext?: ExtensionObject;
|
|
7052
7466
|
};
|
|
@@ -7128,15 +7542,28 @@ export interface UpdateContentStandardsRequest {
|
|
|
7128
7542
|
/**
|
|
7129
7543
|
* Response from updating a content standards configuration
|
|
7130
7544
|
*/
|
|
7131
|
-
export
|
|
7545
|
+
export type UpdateContentStandardsResponse = UpdateContentStandardsSuccess | UpdateContentStandardsError;
|
|
7546
|
+
export interface UpdateContentStandardsSuccess {
|
|
7547
|
+
/**
|
|
7548
|
+
* Indicates the update was applied successfully
|
|
7549
|
+
*/
|
|
7550
|
+
success: true;
|
|
7132
7551
|
/**
|
|
7133
7552
|
* ID of the updated standards configuration
|
|
7134
7553
|
*/
|
|
7135
|
-
standards_id
|
|
7554
|
+
standards_id: string;
|
|
7555
|
+
context?: ContextObject;
|
|
7556
|
+
ext?: ExtensionObject;
|
|
7557
|
+
}
|
|
7558
|
+
export interface UpdateContentStandardsError {
|
|
7559
|
+
/**
|
|
7560
|
+
* Indicates the update failed
|
|
7561
|
+
*/
|
|
7562
|
+
success: false;
|
|
7136
7563
|
/**
|
|
7137
7564
|
* Errors that occurred during the update
|
|
7138
7565
|
*/
|
|
7139
|
-
errors
|
|
7566
|
+
errors: Error[];
|
|
7140
7567
|
/**
|
|
7141
7568
|
* If scope change conflicts with another configuration, the ID of the conflicting standards
|
|
7142
7569
|
*/
|
|
@@ -7187,20 +7614,12 @@ export type CalibrateContentResponse = {
|
|
|
7187
7614
|
*/
|
|
7188
7615
|
explanation?: string;
|
|
7189
7616
|
}[];
|
|
7190
|
-
|
|
7191
|
-
|
|
7192
|
-
*/
|
|
7193
|
-
errors?: {
|
|
7194
|
-
[k: string]: unknown | undefined;
|
|
7195
|
-
};
|
|
7617
|
+
context?: ContextObject;
|
|
7618
|
+
ext?: ExtensionObject;
|
|
7196
7619
|
} | {
|
|
7197
7620
|
errors: Error[];
|
|
7198
|
-
|
|
7199
|
-
|
|
7200
|
-
*/
|
|
7201
|
-
verdict?: {
|
|
7202
|
-
[k: string]: unknown | undefined;
|
|
7203
|
-
};
|
|
7621
|
+
context?: ContextObject;
|
|
7622
|
+
ext?: ExtensionObject;
|
|
7204
7623
|
};
|
|
7205
7624
|
/**
|
|
7206
7625
|
* Request parameters for batch validating delivery records against content safety policies
|
|
@@ -7300,22 +7719,10 @@ export type ValidateContentDeliveryResponse = {
|
|
|
7300
7719
|
rule_id?: string;
|
|
7301
7720
|
}[];
|
|
7302
7721
|
}[];
|
|
7303
|
-
/**
|
|
7304
|
-
* Field must not be present in success response
|
|
7305
|
-
*/
|
|
7306
|
-
errors?: {
|
|
7307
|
-
[k: string]: unknown | undefined;
|
|
7308
|
-
};
|
|
7309
7722
|
context?: ContextObject;
|
|
7310
7723
|
ext?: ExtensionObject;
|
|
7311
7724
|
} | {
|
|
7312
7725
|
errors: Error[];
|
|
7313
|
-
/**
|
|
7314
|
-
* Field must not be present in error response
|
|
7315
|
-
*/
|
|
7316
|
-
summary?: {
|
|
7317
|
-
[k: string]: unknown | undefined;
|
|
7318
|
-
};
|
|
7319
7726
|
context?: ContextObject;
|
|
7320
7727
|
ext?: ExtensionObject;
|
|
7321
7728
|
};
|
|
@@ -7447,27 +7854,15 @@ export type GetMediaBuyArtifactsResponse = {
|
|
|
7447
7854
|
method?: 'random' | 'stratified' | 'recent' | 'failures_only';
|
|
7448
7855
|
};
|
|
7449
7856
|
pagination?: PaginationResponse;
|
|
7450
|
-
/**
|
|
7451
|
-
* Field must not be present in success response
|
|
7452
|
-
*/
|
|
7453
|
-
errors?: {
|
|
7454
|
-
[k: string]: unknown | undefined;
|
|
7455
|
-
};
|
|
7456
7857
|
context?: ContextObject;
|
|
7457
7858
|
ext?: ExtensionObject;
|
|
7458
7859
|
} | {
|
|
7459
7860
|
errors: Error[];
|
|
7460
|
-
/**
|
|
7461
|
-
* Field must not be present in error response
|
|
7462
|
-
*/
|
|
7463
|
-
media_buy_id?: {
|
|
7464
|
-
[k: string]: unknown | undefined;
|
|
7465
|
-
};
|
|
7466
7861
|
context?: ContextObject;
|
|
7467
7862
|
ext?: ExtensionObject;
|
|
7468
7863
|
};
|
|
7469
7864
|
/**
|
|
7470
|
-
* Request payload for get_creative_features task.
|
|
7865
|
+
* Request payload for the get_creative_features task. Submits a creative manifest for evaluation by a governance agent, which analyzes the creative and returns scored feature values (brand safety, content categorization, quality metrics, etc.).
|
|
7471
7866
|
*/
|
|
7472
7867
|
export interface GetCreativeFeaturesRequest {
|
|
7473
7868
|
creative_manifest: CreativeManifest;
|
|
@@ -7475,11 +7870,12 @@ export interface GetCreativeFeaturesRequest {
|
|
|
7475
7870
|
* Optional filter to specific features. If omitted, returns all available features.
|
|
7476
7871
|
*/
|
|
7477
7872
|
feature_ids?: string[];
|
|
7873
|
+
account?: AccountReference;
|
|
7478
7874
|
context?: ContextObject;
|
|
7479
7875
|
ext?: ExtensionObject;
|
|
7480
7876
|
}
|
|
7481
7877
|
/**
|
|
7482
|
-
* Response payload for get_creative_features task. Returns feature values
|
|
7878
|
+
* Response payload for the get_creative_features task. Returns scored feature values from the governance agent's evaluation of the submitted creative manifest.
|
|
7483
7879
|
*/
|
|
7484
7880
|
export type GetCreativeFeaturesResponse = {
|
|
7485
7881
|
/**
|
|
@@ -7490,22 +7886,10 @@ export type GetCreativeFeaturesResponse = {
|
|
|
7490
7886
|
* URL to the vendor's full assessment report. The vendor controls what information is disclosed and access control.
|
|
7491
7887
|
*/
|
|
7492
7888
|
detail_url?: string;
|
|
7493
|
-
/**
|
|
7494
|
-
* Field must not be present in success response
|
|
7495
|
-
*/
|
|
7496
|
-
errors?: {
|
|
7497
|
-
[k: string]: unknown | undefined;
|
|
7498
|
-
};
|
|
7499
7889
|
context?: ContextObject;
|
|
7500
7890
|
ext?: ExtensionObject;
|
|
7501
7891
|
} | {
|
|
7502
7892
|
errors: Error[];
|
|
7503
|
-
/**
|
|
7504
|
-
* Field must not be present in error response
|
|
7505
|
-
*/
|
|
7506
|
-
results?: {
|
|
7507
|
-
[k: string]: unknown | undefined;
|
|
7508
|
-
};
|
|
7509
7893
|
context?: ContextObject;
|
|
7510
7894
|
ext?: ExtensionObject;
|
|
7511
7895
|
};
|
|
@@ -8147,6 +8531,10 @@ export interface GetAdCPCapabilitiesRequest {
|
|
|
8147
8531
|
context?: ContextObject;
|
|
8148
8532
|
ext?: ExtensionObject;
|
|
8149
8533
|
}
|
|
8534
|
+
/**
|
|
8535
|
+
* Transportation modes for isochrone-based catchment area calculations. Determines how travel time translates to geographic reach.
|
|
8536
|
+
*/
|
|
8537
|
+
export type TransportMode = 'walking' | 'cycling' | 'driving' | 'public_transport';
|
|
8150
8538
|
/**
|
|
8151
8539
|
* Response payload for get_adcp_capabilities task. Protocol-level capability discovery across all AdCP protocols. Each domain protocol has its own capability section.
|
|
8152
8540
|
*/
|
|
@@ -8156,7 +8544,7 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
8156
8544
|
*/
|
|
8157
8545
|
adcp: {
|
|
8158
8546
|
/**
|
|
8159
|
-
* AdCP major versions supported by this seller. Major versions indicate breaking changes.
|
|
8547
|
+
* AdCP major versions supported by this seller. Major versions indicate breaking changes. When multiple versions are listed, the buyer declares its version during the capabilities handshake or via the adcp_version field on requests.
|
|
8160
8548
|
*/
|
|
8161
8549
|
major_versions: number[];
|
|
8162
8550
|
};
|
|
@@ -8197,6 +8585,31 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
8197
8585
|
* Media-buy protocol capabilities. Only present if media_buy is in supported_protocols.
|
|
8198
8586
|
*/
|
|
8199
8587
|
media_buy?: {
|
|
8588
|
+
/**
|
|
8589
|
+
* Pricing models this seller supports across its product portfolio. Buyers can use this for pre-flight filtering before querying individual products. Individual products may support a subset of these models.
|
|
8590
|
+
*/
|
|
8591
|
+
supported_pricing_models?: PricingModel[];
|
|
8592
|
+
/**
|
|
8593
|
+
* Seller-level reporting capabilities. Summarizes what reporting features are available across the seller's product portfolio. Individual products may vary — check product-level reporting_capabilities for specifics.
|
|
8594
|
+
*/
|
|
8595
|
+
reporting?: {
|
|
8596
|
+
/**
|
|
8597
|
+
* Whether any products support date range filtering (date_range_support: 'date_range'). When false, all products return lifetime-only data.
|
|
8598
|
+
*/
|
|
8599
|
+
supports_date_range?: boolean;
|
|
8600
|
+
/**
|
|
8601
|
+
* Whether delivery reporting includes daily_breakdown at the media buy and/or package level.
|
|
8602
|
+
*/
|
|
8603
|
+
supports_daily_breakdown?: boolean;
|
|
8604
|
+
/**
|
|
8605
|
+
* Whether any products support webhook-based reporting notifications.
|
|
8606
|
+
*/
|
|
8607
|
+
supports_webhooks?: boolean;
|
|
8608
|
+
/**
|
|
8609
|
+
* Reporting dimensions available across the seller's portfolio. Individual products may support a subset. Dimensions geo, device_type, device_platform, audience, and placement are opt-in via reporting_dimensions on the delivery request. Dimensions creative, keyword, and catalog_item are included automatically when the seller supports them (not controlled by reporting_dimensions).
|
|
8610
|
+
*/
|
|
8611
|
+
available_dimensions?: ('geo' | 'device_type' | 'device_platform' | 'audience' | 'placement' | 'creative' | 'keyword' | 'catalog_item')[];
|
|
8612
|
+
};
|
|
8200
8613
|
features?: MediaBuyFeatures;
|
|
8201
8614
|
/**
|
|
8202
8615
|
* Technical execution capabilities for media buying
|
|
@@ -8326,6 +8739,10 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
8326
8739
|
* Whether seller supports device platform targeting (Sec-CH-UA-Platform values)
|
|
8327
8740
|
*/
|
|
8328
8741
|
device_platform?: boolean;
|
|
8742
|
+
/**
|
|
8743
|
+
* Whether seller supports device type targeting (form factor: desktop, mobile, tablet, ctv, dooh, unknown). When true, seller supports both device_type (include) and device_type_exclude (exclude) in targeting overlays.
|
|
8744
|
+
*/
|
|
8745
|
+
device_type?: boolean;
|
|
8329
8746
|
/**
|
|
8330
8747
|
* Whether seller supports language targeting (ISO 639-1 codes)
|
|
8331
8748
|
*/
|
|
@@ -8338,6 +8755,45 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
8338
8755
|
* Whether seller supports audience_exclude in targeting overlays (requires features.audience_targeting)
|
|
8339
8756
|
*/
|
|
8340
8757
|
audience_exclude?: boolean;
|
|
8758
|
+
/**
|
|
8759
|
+
* Keyword targeting capabilities. Presence indicates support for targeting_overlay.keyword_targets and keyword_targets_add/remove in update_media_buy.
|
|
8760
|
+
*/
|
|
8761
|
+
keyword_targets?: {
|
|
8762
|
+
/**
|
|
8763
|
+
* Match types this seller supports for keyword targets. Sellers must reject goals with unsupported match types.
|
|
8764
|
+
*/
|
|
8765
|
+
supported_match_types: ('broad' | 'phrase' | 'exact')[];
|
|
8766
|
+
};
|
|
8767
|
+
/**
|
|
8768
|
+
* Negative keyword capabilities. Presence indicates support for targeting_overlay.negative_keywords and negative_keywords_add/remove in update_media_buy.
|
|
8769
|
+
*/
|
|
8770
|
+
negative_keywords?: {
|
|
8771
|
+
/**
|
|
8772
|
+
* Match types this seller supports for negative keywords. Sellers must reject goals with unsupported match types.
|
|
8773
|
+
*/
|
|
8774
|
+
supported_match_types: ('broad' | 'phrase' | 'exact')[];
|
|
8775
|
+
};
|
|
8776
|
+
/**
|
|
8777
|
+
* Proximity targeting capabilities from arbitrary coordinates via targeting_overlay.geo_proximity.
|
|
8778
|
+
*/
|
|
8779
|
+
geo_proximity?: {
|
|
8780
|
+
/**
|
|
8781
|
+
* Whether seller supports simple radius targeting (distance circle from a point)
|
|
8782
|
+
*/
|
|
8783
|
+
radius?: boolean;
|
|
8784
|
+
/**
|
|
8785
|
+
* Whether seller supports travel time isochrone targeting (requires a routing engine)
|
|
8786
|
+
*/
|
|
8787
|
+
travel_time?: boolean;
|
|
8788
|
+
/**
|
|
8789
|
+
* Whether seller supports pre-computed GeoJSON geometry (buyer provides the polygon)
|
|
8790
|
+
*/
|
|
8791
|
+
geometry?: boolean;
|
|
8792
|
+
/**
|
|
8793
|
+
* Transport modes supported for travel_time isochrones. Only relevant when travel_time is true.
|
|
8794
|
+
*/
|
|
8795
|
+
transport_modes?: TransportMode[];
|
|
8796
|
+
};
|
|
8341
8797
|
};
|
|
8342
8798
|
};
|
|
8343
8799
|
/**
|
|
@@ -8345,9 +8801,13 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
8345
8801
|
*/
|
|
8346
8802
|
audience_targeting?: {
|
|
8347
8803
|
/**
|
|
8348
|
-
*
|
|
8804
|
+
* PII-derived identifier types accepted for audience matching. Buyers should only send identifiers the seller supports.
|
|
8349
8805
|
*/
|
|
8350
8806
|
supported_identifier_types: ('hashed_email' | 'hashed_phone')[];
|
|
8807
|
+
/**
|
|
8808
|
+
* Whether the seller accepts the buyer's CRM/loyalty ID as a matchable identifier. Only applicable when the seller operates a closed ecosystem with a shared ID namespace (e.g., a retailer matching against their loyalty program). When true, buyers can include platform_customer_id values in AudienceMember.identifiers for matching against the seller's identity graph. Reporting on matched platform_customer_ids typically requires a clean room or the seller's own reporting surface.
|
|
8809
|
+
*/
|
|
8810
|
+
supports_platform_customer_id?: boolean;
|
|
8351
8811
|
/**
|
|
8352
8812
|
* Universal ID types accepted for audience matching (MAIDs, RampID, UID2, etc.). MAID support varies significantly by platform — check this field before sending uids with type: maid.
|
|
8353
8813
|
*/
|
|
@@ -8394,13 +8854,13 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
8394
8854
|
attribution_windows?: {
|
|
8395
8855
|
event_type?: EventType;
|
|
8396
8856
|
/**
|
|
8397
|
-
* Available click
|
|
8857
|
+
* Available post-click attribution windows (e.g. [{"interval": 7, "unit": "days"}])
|
|
8398
8858
|
*/
|
|
8399
|
-
|
|
8859
|
+
post_click: Duration[];
|
|
8400
8860
|
/**
|
|
8401
|
-
* Available view
|
|
8861
|
+
* Available post-view attribution windows (e.g. [{"interval": 1, "unit": "days"}])
|
|
8402
8862
|
*/
|
|
8403
|
-
|
|
8863
|
+
post_view?: Duration[];
|
|
8404
8864
|
}[];
|
|
8405
8865
|
};
|
|
8406
8866
|
/**
|
|
@@ -8566,9 +9026,9 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
8566
9026
|
*/
|
|
8567
9027
|
creative?: {
|
|
8568
9028
|
/**
|
|
8569
|
-
*
|
|
9029
|
+
* When true, this creative agent can process briefs with compliance requirements (required_disclosures, prohibited_claims) and will validate that disclosures can be satisfied by the target format.
|
|
8570
9030
|
*/
|
|
8571
|
-
|
|
9031
|
+
supports_compliance?: boolean;
|
|
8572
9032
|
};
|
|
8573
9033
|
/**
|
|
8574
9034
|
* Extension namespaces this agent supports. Buyers can expect meaningful data in ext.{namespace} fields on responses from this agent. Extension schemas are published in the AdCP extension registry.
|
|
@@ -8758,19 +9218,7 @@ export interface ReportUsageRequest {
|
|
|
8758
9218
|
* Client-generated unique key for this request. If a request with the same key has already been accepted, the server returns the original response without re-processing. Use a UUID or other unique identifier. Prevents duplicate billing on retries.
|
|
8759
9219
|
*/
|
|
8760
9220
|
idempotency_key?: string;
|
|
8761
|
-
|
|
8762
|
-
* The time range covered by this usage report. Applies to all records in the request.
|
|
8763
|
-
*/
|
|
8764
|
-
reporting_period: {
|
|
8765
|
-
/**
|
|
8766
|
-
* Start of the reporting period (inclusive), in UTC.
|
|
8767
|
-
*/
|
|
8768
|
-
start: string;
|
|
8769
|
-
/**
|
|
8770
|
-
* End of the reporting period (inclusive), in UTC.
|
|
8771
|
-
*/
|
|
8772
|
-
end: string;
|
|
8773
|
-
};
|
|
9221
|
+
reporting_period: DatetimeRange;
|
|
8774
9222
|
/**
|
|
8775
9223
|
* One or more usage records. Each record is self-contained: it carries its own account and buyer_campaign_ref, allowing a single request to span multiple accounts and campaigns.
|
|
8776
9224
|
*/
|
|
@@ -8836,22 +9284,23 @@ export interface ReportUsageResponse {
|
|
|
8836
9284
|
*/
|
|
8837
9285
|
export interface GetAccountFinancialsRequest {
|
|
8838
9286
|
account: AccountReference;
|
|
8839
|
-
|
|
8840
|
-
* Date range for the spend summary. Defaults to the current billing cycle if omitted.
|
|
8841
|
-
*/
|
|
8842
|
-
period?: {
|
|
8843
|
-
/**
|
|
8844
|
-
* Period start (ISO 8601 date)
|
|
8845
|
-
*/
|
|
8846
|
-
start: string;
|
|
8847
|
-
/**
|
|
8848
|
-
* Period end (ISO 8601 date)
|
|
8849
|
-
*/
|
|
8850
|
-
end: string;
|
|
8851
|
-
};
|
|
9287
|
+
period?: DateRange;
|
|
8852
9288
|
context?: ContextObject;
|
|
8853
9289
|
ext?: ExtensionObject;
|
|
8854
9290
|
}
|
|
9291
|
+
/**
|
|
9292
|
+
* Date range for the spend summary. Defaults to the current billing cycle if omitted.
|
|
9293
|
+
*/
|
|
9294
|
+
export interface DateRange {
|
|
9295
|
+
/**
|
|
9296
|
+
* Start date (inclusive), ISO 8601
|
|
9297
|
+
*/
|
|
9298
|
+
start: string;
|
|
9299
|
+
/**
|
|
9300
|
+
* End date (inclusive), ISO 8601
|
|
9301
|
+
*/
|
|
9302
|
+
end: string;
|
|
9303
|
+
}
|
|
8855
9304
|
/**
|
|
8856
9305
|
* Financial status for an operator-billed account. Returns spend summary, credit/balance status, payment status, and invoice history. The level of detail varies by seller — only account, currency, and period are guaranteed on success.
|
|
8857
9306
|
*/
|
|
@@ -8865,19 +9314,11 @@ export interface GetAccountFinancialsSuccess {
|
|
|
8865
9314
|
* ISO 4217 currency code for all monetary amounts in this response
|
|
8866
9315
|
*/
|
|
8867
9316
|
currency: string;
|
|
9317
|
+
period: DateRange;
|
|
8868
9318
|
/**
|
|
8869
|
-
*
|
|
9319
|
+
* IANA timezone of the seller's billing day boundaries (e.g., 'America/New_York'). All dates in this response — period, invoice periods, due dates — are calendar dates in this timezone. Buyers in a different timezone should expect spend boundaries to differ from their own calendar day.
|
|
8870
9320
|
*/
|
|
8871
|
-
|
|
8872
|
-
/**
|
|
8873
|
-
* Period start (ISO 8601 date)
|
|
8874
|
-
*/
|
|
8875
|
-
start: string;
|
|
8876
|
-
/**
|
|
8877
|
-
* Period end (ISO 8601 date)
|
|
8878
|
-
*/
|
|
8879
|
-
end: string;
|
|
8880
|
-
};
|
|
9321
|
+
timezone: string;
|
|
8881
9322
|
/**
|
|
8882
9323
|
* Spend summary for the period
|
|
8883
9324
|
*/
|
|
@@ -8946,13 +9387,7 @@ export interface GetAccountFinancialsSuccess {
|
|
|
8946
9387
|
* Seller-assigned invoice identifier
|
|
8947
9388
|
*/
|
|
8948
9389
|
invoice_id: string;
|
|
8949
|
-
|
|
8950
|
-
* Billing period covered by this invoice
|
|
8951
|
-
*/
|
|
8952
|
-
period?: {
|
|
8953
|
-
start: string;
|
|
8954
|
-
end: string;
|
|
8955
|
-
};
|
|
9390
|
+
period?: DateRange;
|
|
8956
9391
|
/**
|
|
8957
9392
|
* Invoice total in currency
|
|
8958
9393
|
*/
|