@adcp/client 4.0.2 → 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 -7
- package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
- package/dist/lib/core/SingleAgentClient.js +3 -45
- 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 +616 -233
- 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 +26250 -12235
- package/dist/lib/types/schemas.generated.d.ts.map +1 -1
- package/dist/lib/types/schemas.generated.js +459 -418
- package/dist/lib/types/schemas.generated.js.map +1 -1
- package/dist/lib/types/tools.generated.d.ts +993 -1012
- 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/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/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
|
*/
|
|
@@ -1230,9 +1307,22 @@ export interface ForecastPoint {
|
|
|
1230
1307
|
*/
|
|
1231
1308
|
budget: number;
|
|
1232
1309
|
/**
|
|
1233
|
-
* 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.).
|
|
1234
1311
|
*/
|
|
1235
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;
|
|
1236
1326
|
[k: string]: ForecastRange | undefined;
|
|
1237
1327
|
};
|
|
1238
1328
|
}
|
|
@@ -1254,9 +1344,9 @@ export interface ForecastRange {
|
|
|
1254
1344
|
high?: number;
|
|
1255
1345
|
}
|
|
1256
1346
|
/**
|
|
1257
|
-
*
|
|
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.
|
|
1258
1348
|
*/
|
|
1259
|
-
export interface
|
|
1349
|
+
export interface OutcomeMeasurement {
|
|
1260
1350
|
/**
|
|
1261
1351
|
* Type of measurement
|
|
1262
1352
|
*/
|
|
@@ -1266,14 +1356,27 @@ export interface Measurement {
|
|
|
1266
1356
|
*/
|
|
1267
1357
|
attribution: string;
|
|
1268
1358
|
/**
|
|
1269
|
-
* Attribution window
|
|
1359
|
+
* Attribution window as a structured duration (e.g., {"interval": 30, "unit": "days"}).
|
|
1270
1360
|
*/
|
|
1271
|
-
window?:
|
|
1361
|
+
window?: Duration;
|
|
1272
1362
|
/**
|
|
1273
1363
|
* Reporting frequency and format
|
|
1274
1364
|
*/
|
|
1275
1365
|
reporting: string;
|
|
1276
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
|
+
}
|
|
1277
1380
|
/**
|
|
1278
1381
|
* Reporting capabilities available for a product
|
|
1279
1382
|
*/
|
|
@@ -1363,6 +1466,10 @@ export interface CreativePolicy {
|
|
|
1363
1466
|
* Whether creative templates are provided
|
|
1364
1467
|
*/
|
|
1365
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;
|
|
1366
1473
|
}
|
|
1367
1474
|
/**
|
|
1368
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.
|
|
@@ -1477,7 +1584,7 @@ export interface DaypartTarget {
|
|
|
1477
1584
|
*/
|
|
1478
1585
|
export interface Error {
|
|
1479
1586
|
/**
|
|
1480
|
-
* 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.
|
|
1481
1588
|
*/
|
|
1482
1589
|
code: string;
|
|
1483
1590
|
/**
|
|
@@ -1500,6 +1607,10 @@ export interface Error {
|
|
|
1500
1607
|
* Additional task-specific error details
|
|
1501
1608
|
*/
|
|
1502
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';
|
|
1503
1614
|
}
|
|
1504
1615
|
/**
|
|
1505
1616
|
* Standard cursor-based pagination metadata for list responses
|
|
@@ -1521,11 +1632,15 @@ export interface PaginationResponse {
|
|
|
1521
1632
|
/**
|
|
1522
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.
|
|
1523
1634
|
*/
|
|
1524
|
-
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';
|
|
1525
1636
|
/**
|
|
1526
1637
|
* Filter to formats that meet at least this WCAG conformance level (A < AA < AAA)
|
|
1527
1638
|
*/
|
|
1528
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';
|
|
1529
1644
|
/**
|
|
1530
1645
|
* Request parameters for discovering supported creative formats
|
|
1531
1646
|
*/
|
|
@@ -1564,6 +1679,10 @@ export interface ListCreativeFormatsRequest {
|
|
|
1564
1679
|
*/
|
|
1565
1680
|
name_search?: string;
|
|
1566
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[];
|
|
1567
1686
|
/**
|
|
1568
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.
|
|
1569
1688
|
*/
|
|
@@ -1584,29 +1703,6 @@ export type FormatIDParameter = 'dimensions' | 'duration';
|
|
|
1584
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.
|
|
1585
1704
|
*/
|
|
1586
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';
|
|
1587
|
-
/**
|
|
1588
|
-
* 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.
|
|
1589
|
-
*/
|
|
1590
|
-
export type AssetRequirements = ImageAssetRequirements | VideoAssetRequirements | AudioAssetRequirements | TextAssetRequirements | MarkdownAssetRequirements | HTMLAssetRequirements | CSSAssetRequirements | JavaScriptAssetRequirements | VASTAssetRequirements | DAASTAssetRequirements | URLAssetRequirements | WebhookAssetRequirements;
|
|
1591
|
-
/**
|
|
1592
|
-
* 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.
|
|
1593
|
-
*/
|
|
1594
|
-
export type CatalogFieldBinding = ScalarBinding | AssetPoolBinding | {
|
|
1595
|
-
kind: 'catalog_group';
|
|
1596
|
-
/**
|
|
1597
|
-
* The asset_group_id of a repeatable_group in the format's assets array.
|
|
1598
|
-
*/
|
|
1599
|
-
format_group_id: string;
|
|
1600
|
-
/**
|
|
1601
|
-
* Each repetition of the format's repeatable_group maps to one item from the catalog.
|
|
1602
|
-
*/
|
|
1603
|
-
catalog_item: true;
|
|
1604
|
-
/**
|
|
1605
|
-
* Scalar and asset pool bindings that apply within each repetition of the group. Nested catalog_group bindings are not permitted.
|
|
1606
|
-
*/
|
|
1607
|
-
per_item_bindings?: (ScalarBinding | AssetPoolBinding)[];
|
|
1608
|
-
ext?: ExtensionObject;
|
|
1609
|
-
};
|
|
1610
1706
|
/**
|
|
1611
1707
|
* Capabilities supported by creative agents for format handling
|
|
1612
1708
|
*/
|
|
@@ -1747,6 +1843,10 @@ export interface Format {
|
|
|
1747
1843
|
*/
|
|
1748
1844
|
requires_accessible_assets?: boolean;
|
|
1749
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[];
|
|
1750
1850
|
/**
|
|
1751
1851
|
* Optional detailed card with carousel and full specifications. Provides rich format documentation similar to ad spec pages.
|
|
1752
1852
|
*/
|
|
@@ -1757,10 +1857,6 @@ export interface Format {
|
|
|
1757
1857
|
*/
|
|
1758
1858
|
manifest: {};
|
|
1759
1859
|
};
|
|
1760
|
-
/**
|
|
1761
|
-
* 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.
|
|
1762
|
-
*/
|
|
1763
|
-
catalog_requirements?: CatalogRequirements[];
|
|
1764
1860
|
/**
|
|
1765
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.
|
|
1766
1862
|
*/
|
|
@@ -1776,7 +1872,7 @@ export interface BaseIndividualAsset {
|
|
|
1776
1872
|
*/
|
|
1777
1873
|
asset_id: string;
|
|
1778
1874
|
/**
|
|
1779
|
-
*
|
|
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.
|
|
1780
1876
|
*/
|
|
1781
1877
|
asset_role?: string;
|
|
1782
1878
|
/**
|
|
@@ -1849,7 +1945,7 @@ export interface BaseGroupAsset {
|
|
|
1849
1945
|
*/
|
|
1850
1946
|
asset_id: string;
|
|
1851
1947
|
/**
|
|
1852
|
-
*
|
|
1948
|
+
* Descriptive label for this asset's purpose. For documentation and UI display only — manifests key assets by asset_id, not asset_role.
|
|
1853
1949
|
*/
|
|
1854
1950
|
asset_role?: string;
|
|
1855
1951
|
/**
|
|
@@ -1862,599 +1958,253 @@ export interface BaseGroupAsset {
|
|
|
1862
1958
|
overlays?: Overlay[];
|
|
1863
1959
|
}
|
|
1864
1960
|
/**
|
|
1865
|
-
*
|
|
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.
|
|
1866
1966
|
*/
|
|
1867
|
-
export
|
|
1868
|
-
|
|
1967
|
+
export type OptimizationGoal = {
|
|
1968
|
+
kind: 'metric';
|
|
1869
1969
|
/**
|
|
1870
|
-
*
|
|
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').
|
|
1871
1971
|
*/
|
|
1872
|
-
|
|
1972
|
+
metric: 'clicks' | 'views' | 'completed_views' | 'viewed_seconds' | 'attention_seconds' | 'attention_score' | 'engagements' | 'follows' | 'saves' | 'profile_visits' | 'reach';
|
|
1873
1973
|
/**
|
|
1874
|
-
*
|
|
1974
|
+
* Unit for reach measurement. Required when metric is 'reach'. Must be a value declared in the product's metric_optimization.supported_reach_units.
|
|
1875
1975
|
*/
|
|
1876
|
-
|
|
1976
|
+
reach_unit?: ReachUnit;
|
|
1877
1977
|
/**
|
|
1878
|
-
*
|
|
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.
|
|
1879
1979
|
*/
|
|
1880
|
-
|
|
1980
|
+
target_frequency?: {
|
|
1981
|
+
[k: string]: unknown | undefined;
|
|
1982
|
+
};
|
|
1881
1983
|
/**
|
|
1882
|
-
*
|
|
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.
|
|
1883
1985
|
*/
|
|
1884
|
-
|
|
1986
|
+
view_duration_seconds?: number;
|
|
1885
1987
|
/**
|
|
1886
|
-
*
|
|
1988
|
+
* Target for this metric. When omitted, the seller optimizes for maximum metric volume within budget.
|
|
1887
1989
|
*/
|
|
1888
|
-
|
|
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
|
+
};
|
|
1889
2003
|
/**
|
|
1890
|
-
*
|
|
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.
|
|
1891
2005
|
*/
|
|
1892
|
-
|
|
1893
|
-
}
|
|
1894
|
-
|
|
1895
|
-
* 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.
|
|
1896
|
-
*/
|
|
1897
|
-
export interface OfferingAssetConstraint {
|
|
2006
|
+
priority?: number;
|
|
2007
|
+
} | {
|
|
2008
|
+
kind: 'event';
|
|
1898
2009
|
/**
|
|
1899
|
-
*
|
|
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.
|
|
1900
2011
|
*/
|
|
1901
|
-
|
|
1902
|
-
|
|
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
|
+
}[];
|
|
1903
2031
|
/**
|
|
1904
|
-
*
|
|
2032
|
+
* Target cost or return for this event goal. When omitted, the seller optimizes for maximum conversions within budget.
|
|
1905
2033
|
*/
|
|
1906
|
-
|
|
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
|
+
};
|
|
1907
2049
|
/**
|
|
1908
|
-
*
|
|
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.
|
|
1909
2051
|
*/
|
|
1910
|
-
|
|
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
|
+
};
|
|
1911
2062
|
/**
|
|
1912
|
-
*
|
|
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.
|
|
1913
2064
|
*/
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
ext?: ExtensionObject;
|
|
1917
|
-
}
|
|
2065
|
+
priority?: number;
|
|
2066
|
+
};
|
|
1918
2067
|
/**
|
|
1919
|
-
*
|
|
2068
|
+
* Postal code system (e.g., 'us_zip', 'gb_outward'). System name encodes country and precision.
|
|
1920
2069
|
*/
|
|
1921
|
-
export
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
*/
|
|
1929
|
-
max_width?: number;
|
|
1930
|
-
/**
|
|
1931
|
-
* Minimum height in pixels. For exact dimensions, set min_height = max_height.
|
|
1932
|
-
*/
|
|
1933
|
-
min_height?: number;
|
|
1934
|
-
/**
|
|
1935
|
-
* Maximum height in pixels. For exact dimensions, set min_height = max_height.
|
|
1936
|
-
*/
|
|
1937
|
-
max_height?: number;
|
|
1938
|
-
/**
|
|
1939
|
-
* Required aspect ratio (e.g., '16:9', '1:1', '1.91:1')
|
|
1940
|
-
*/
|
|
1941
|
-
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
|
+
} & {
|
|
1942
2077
|
/**
|
|
1943
|
-
*
|
|
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.
|
|
1944
2079
|
*/
|
|
1945
|
-
|
|
2080
|
+
suppress?: Duration;
|
|
1946
2081
|
/**
|
|
1947
|
-
*
|
|
2082
|
+
* Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).
|
|
1948
2083
|
*/
|
|
1949
|
-
|
|
2084
|
+
suppress_minutes?: number;
|
|
1950
2085
|
/**
|
|
1951
|
-
*
|
|
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.
|
|
1952
2087
|
*/
|
|
1953
|
-
|
|
2088
|
+
max_impressions?: number;
|
|
1954
2089
|
/**
|
|
1955
|
-
*
|
|
2090
|
+
* Entity granularity for impression counting. Required when max_impressions is set.
|
|
1956
2091
|
*/
|
|
1957
|
-
|
|
2092
|
+
per?: ReachUnit;
|
|
1958
2093
|
/**
|
|
1959
|
-
*
|
|
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.
|
|
1960
2095
|
*/
|
|
1961
|
-
|
|
1962
|
-
}
|
|
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';
|
|
2110
|
+
/**
|
|
2111
|
+
* IPTC-aligned classification of AI involvement in producing this content
|
|
2112
|
+
*/
|
|
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';
|
|
1963
2114
|
/**
|
|
1964
|
-
*
|
|
2115
|
+
* VAST (Video Ad Serving Template) tag for third-party video ad serving
|
|
1965
2116
|
*/
|
|
1966
|
-
export
|
|
2117
|
+
export type VASTAsset = {
|
|
1967
2118
|
/**
|
|
1968
|
-
*
|
|
2119
|
+
* Discriminator indicating VAST is delivered via URL endpoint
|
|
1969
2120
|
*/
|
|
1970
|
-
|
|
2121
|
+
delivery_type: 'url';
|
|
1971
2122
|
/**
|
|
1972
|
-
*
|
|
2123
|
+
* URL endpoint that returns VAST XML
|
|
1973
2124
|
*/
|
|
1974
|
-
|
|
2125
|
+
url: string;
|
|
2126
|
+
vast_version?: VASTVersion;
|
|
1975
2127
|
/**
|
|
1976
|
-
*
|
|
2128
|
+
* Whether VPAID (Video Player-Ad Interface Definition) is supported
|
|
1977
2129
|
*/
|
|
1978
|
-
|
|
2130
|
+
vpaid_enabled?: boolean;
|
|
1979
2131
|
/**
|
|
1980
|
-
*
|
|
2132
|
+
* Expected video duration in milliseconds (if known)
|
|
1981
2133
|
*/
|
|
1982
|
-
|
|
2134
|
+
duration_ms?: number;
|
|
1983
2135
|
/**
|
|
1984
|
-
*
|
|
2136
|
+
* Tracking events supported by this VAST tag
|
|
1985
2137
|
*/
|
|
1986
|
-
|
|
2138
|
+
tracking_events?: VASTTrackingEvent[];
|
|
1987
2139
|
/**
|
|
1988
|
-
*
|
|
2140
|
+
* URL to captions file (WebVTT, SRT, etc.)
|
|
1989
2141
|
*/
|
|
1990
|
-
|
|
2142
|
+
captions_url?: string;
|
|
1991
2143
|
/**
|
|
1992
|
-
*
|
|
2144
|
+
* URL to audio description track for visually impaired users
|
|
1993
2145
|
*/
|
|
1994
|
-
|
|
2146
|
+
audio_description_url?: string;
|
|
2147
|
+
provenance?: Provenance;
|
|
2148
|
+
} | {
|
|
1995
2149
|
/**
|
|
1996
|
-
*
|
|
2150
|
+
* Discriminator indicating VAST is delivered as inline XML content
|
|
1997
2151
|
*/
|
|
1998
|
-
|
|
2152
|
+
delivery_type: 'inline';
|
|
1999
2153
|
/**
|
|
2000
|
-
*
|
|
2154
|
+
* Inline VAST XML content
|
|
2001
2155
|
*/
|
|
2002
|
-
|
|
2156
|
+
content: string;
|
|
2157
|
+
vast_version?: VASTVersion;
|
|
2003
2158
|
/**
|
|
2004
|
-
*
|
|
2159
|
+
* Whether VPAID (Video Player-Ad Interface Definition) is supported
|
|
2005
2160
|
*/
|
|
2006
|
-
|
|
2161
|
+
vpaid_enabled?: boolean;
|
|
2007
2162
|
/**
|
|
2008
|
-
*
|
|
2163
|
+
* Expected video duration in milliseconds (if known)
|
|
2009
2164
|
*/
|
|
2010
|
-
|
|
2165
|
+
duration_ms?: number;
|
|
2011
2166
|
/**
|
|
2012
|
-
*
|
|
2167
|
+
* Tracking events supported by this VAST tag
|
|
2013
2168
|
*/
|
|
2014
|
-
|
|
2169
|
+
tracking_events?: VASTTrackingEvent[];
|
|
2015
2170
|
/**
|
|
2016
|
-
*
|
|
2171
|
+
* URL to captions file (WebVTT, SRT, etc.)
|
|
2017
2172
|
*/
|
|
2018
|
-
|
|
2173
|
+
captions_url?: string;
|
|
2019
2174
|
/**
|
|
2020
|
-
*
|
|
2175
|
+
* URL to audio description track for visually impaired users
|
|
2021
2176
|
*/
|
|
2022
|
-
|
|
2023
|
-
|
|
2177
|
+
audio_description_url?: string;
|
|
2178
|
+
provenance?: Provenance;
|
|
2179
|
+
};
|
|
2024
2180
|
/**
|
|
2025
|
-
*
|
|
2181
|
+
* VAST specification version
|
|
2026
2182
|
*/
|
|
2027
|
-
export
|
|
2028
|
-
/**
|
|
2029
|
-
* Minimum duration in milliseconds
|
|
2030
|
-
*/
|
|
2031
|
-
min_duration_ms?: number;
|
|
2032
|
-
/**
|
|
2033
|
-
* Maximum duration in milliseconds
|
|
2034
|
-
*/
|
|
2035
|
-
max_duration_ms?: number;
|
|
2036
|
-
/**
|
|
2037
|
-
* Accepted audio file formats
|
|
2038
|
-
*/
|
|
2039
|
-
formats?: ('mp3' | 'aac' | 'wav' | 'ogg' | 'flac')[];
|
|
2040
|
-
/**
|
|
2041
|
-
* Maximum file size in kilobytes
|
|
2042
|
-
*/
|
|
2043
|
-
max_file_size_kb?: number;
|
|
2044
|
-
/**
|
|
2045
|
-
* Accepted sample rates in Hz (e.g., [44100, 48000])
|
|
2046
|
-
*/
|
|
2047
|
-
sample_rates?: number[];
|
|
2048
|
-
/**
|
|
2049
|
-
* Accepted audio channel configurations
|
|
2050
|
-
*/
|
|
2051
|
-
channels?: ('mono' | 'stereo')[];
|
|
2052
|
-
/**
|
|
2053
|
-
* Minimum audio bitrate in kilobits per second
|
|
2054
|
-
*/
|
|
2055
|
-
min_bitrate_kbps?: number;
|
|
2056
|
-
/**
|
|
2057
|
-
* Maximum audio bitrate in kilobits per second
|
|
2058
|
-
*/
|
|
2059
|
-
max_bitrate_kbps?: number;
|
|
2060
|
-
}
|
|
2061
|
-
/**
|
|
2062
|
-
* Requirements for text creative assets such as headlines, body copy, and CTAs.
|
|
2063
|
-
*/
|
|
2064
|
-
export interface TextAssetRequirements {
|
|
2065
|
-
/**
|
|
2066
|
-
* Minimum character length
|
|
2067
|
-
*/
|
|
2068
|
-
min_length?: number;
|
|
2069
|
-
/**
|
|
2070
|
-
* Maximum character length
|
|
2071
|
-
*/
|
|
2072
|
-
max_length?: number;
|
|
2073
|
-
/**
|
|
2074
|
-
* Minimum number of lines
|
|
2075
|
-
*/
|
|
2076
|
-
min_lines?: number;
|
|
2077
|
-
/**
|
|
2078
|
-
* Maximum number of lines
|
|
2079
|
-
*/
|
|
2080
|
-
max_lines?: number;
|
|
2081
|
-
/**
|
|
2082
|
-
* Regex pattern defining allowed characters (e.g., '^[a-zA-Z0-9 .,!?-]+$')
|
|
2083
|
-
*/
|
|
2084
|
-
character_pattern?: string;
|
|
2085
|
-
/**
|
|
2086
|
-
* List of prohibited words or phrases
|
|
2087
|
-
*/
|
|
2088
|
-
prohibited_terms?: string[];
|
|
2089
|
-
}
|
|
2090
|
-
/**
|
|
2091
|
-
* Requirements for markdown creative assets.
|
|
2092
|
-
*/
|
|
2093
|
-
export interface MarkdownAssetRequirements {
|
|
2094
|
-
/**
|
|
2095
|
-
* Maximum character length
|
|
2096
|
-
*/
|
|
2097
|
-
max_length?: number;
|
|
2098
|
-
}
|
|
2099
|
-
/**
|
|
2100
|
-
* Requirements for HTML creative assets. These define the execution environment constraints that the HTML must be compatible with.
|
|
2101
|
-
*/
|
|
2102
|
-
export interface HTMLAssetRequirements {
|
|
2103
|
-
/**
|
|
2104
|
-
* Maximum file size in kilobytes for the HTML asset
|
|
2105
|
-
*/
|
|
2106
|
-
max_file_size_kb?: number;
|
|
2107
|
-
/**
|
|
2108
|
-
* 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
|
|
2109
|
-
*/
|
|
2110
|
-
sandbox?: 'none' | 'iframe' | 'safeframe' | 'fencedframe';
|
|
2111
|
-
/**
|
|
2112
|
-
* Whether the HTML creative can load external resources (scripts, images, fonts, etc.). When false, all resources must be inlined or bundled.
|
|
2113
|
-
*/
|
|
2114
|
-
external_resources_allowed?: boolean;
|
|
2115
|
-
/**
|
|
2116
|
-
* List of domains the HTML creative may reference for external resources. Only applicable when external_resources_allowed is true.
|
|
2117
|
-
*/
|
|
2118
|
-
allowed_external_domains?: string[];
|
|
2119
|
-
}
|
|
2120
|
-
/**
|
|
2121
|
-
* Requirements for CSS creative assets.
|
|
2122
|
-
*/
|
|
2123
|
-
export interface CSSAssetRequirements {
|
|
2124
|
-
/**
|
|
2125
|
-
* Maximum file size in kilobytes
|
|
2126
|
-
*/
|
|
2127
|
-
max_file_size_kb?: number;
|
|
2128
|
-
}
|
|
2129
|
-
/**
|
|
2130
|
-
* Requirements for JavaScript creative assets. These define the execution environment constraints that the JavaScript must be compatible with.
|
|
2131
|
-
*/
|
|
2132
|
-
export interface JavaScriptAssetRequirements {
|
|
2133
|
-
/**
|
|
2134
|
-
* Maximum file size in kilobytes for the JavaScript asset
|
|
2135
|
-
*/
|
|
2136
|
-
max_file_size_kb?: number;
|
|
2137
|
-
/**
|
|
2138
|
-
* Required JavaScript module format. 'script' = classic script, 'module' = ES modules, 'iife' = immediately invoked function expression
|
|
2139
|
-
*/
|
|
2140
|
-
module_type?: 'script' | 'module' | 'iife';
|
|
2141
|
-
/**
|
|
2142
|
-
* Whether the JavaScript must use strict mode
|
|
2143
|
-
*/
|
|
2144
|
-
strict_mode_required?: boolean;
|
|
2145
|
-
/**
|
|
2146
|
-
* Whether the JavaScript can load external resources dynamically
|
|
2147
|
-
*/
|
|
2148
|
-
external_resources_allowed?: boolean;
|
|
2149
|
-
/**
|
|
2150
|
-
* List of domains the JavaScript may reference for external resources. Only applicable when external_resources_allowed is true.
|
|
2151
|
-
*/
|
|
2152
|
-
allowed_external_domains?: string[];
|
|
2153
|
-
}
|
|
2154
|
-
/**
|
|
2155
|
-
* Requirements for VAST (Video Ad Serving Template) creative assets.
|
|
2156
|
-
*/
|
|
2157
|
-
export interface VASTAssetRequirements {
|
|
2158
|
-
/**
|
|
2159
|
-
* Required VAST version
|
|
2160
|
-
*/
|
|
2161
|
-
vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2';
|
|
2162
|
-
}
|
|
2163
|
-
/**
|
|
2164
|
-
* Requirements for DAAST (Digital Audio Ad Serving Template) creative assets.
|
|
2165
|
-
*/
|
|
2166
|
-
export interface DAASTAssetRequirements {
|
|
2167
|
-
/**
|
|
2168
|
-
* Required DAAST version. DAAST 1.0 is the current IAB standard.
|
|
2169
|
-
*/
|
|
2170
|
-
daast_version?: '1.0';
|
|
2171
|
-
}
|
|
2172
|
-
/**
|
|
2173
|
-
* Requirements for URL assets such as click-through URLs, tracking pixels, and landing pages.
|
|
2174
|
-
*/
|
|
2175
|
-
export interface URLAssetRequirements {
|
|
2176
|
-
/**
|
|
2177
|
-
* 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.
|
|
2178
|
-
*/
|
|
2179
|
-
role?: 'clickthrough' | 'landing_page' | 'impression_tracker' | 'click_tracker' | 'viewability_tracker' | 'third_party_tracker';
|
|
2180
|
-
/**
|
|
2181
|
-
* Allowed URL protocols. HTTPS is recommended for all ad URLs.
|
|
2182
|
-
*/
|
|
2183
|
-
protocols?: ('https' | 'http')[];
|
|
2184
|
-
/**
|
|
2185
|
-
* List of allowed domains for the URL
|
|
2186
|
-
*/
|
|
2187
|
-
allowed_domains?: string[];
|
|
2188
|
-
/**
|
|
2189
|
-
* Maximum URL length in characters
|
|
2190
|
-
*/
|
|
2191
|
-
max_length?: number;
|
|
2192
|
-
/**
|
|
2193
|
-
* Whether the URL supports macro substitution (e.g., ${CACHEBUSTER})
|
|
2194
|
-
*/
|
|
2195
|
-
macro_support?: boolean;
|
|
2196
|
-
}
|
|
2197
|
-
/**
|
|
2198
|
-
* Requirements for webhook creative assets.
|
|
2199
|
-
*/
|
|
2200
|
-
export interface WebhookAssetRequirements {
|
|
2201
|
-
/**
|
|
2202
|
-
* Allowed HTTP methods
|
|
2203
|
-
*/
|
|
2204
|
-
methods?: ('GET' | 'POST')[];
|
|
2205
|
-
}
|
|
2206
|
-
/**
|
|
2207
|
-
* Maps an individual format asset to a catalog item field via dot-notation path.
|
|
2208
|
-
*/
|
|
2209
|
-
export interface ScalarBinding {
|
|
2210
|
-
kind: 'scalar';
|
|
2211
|
-
/**
|
|
2212
|
-
* The asset_id from the format's assets array. Identifies which individual template slot this binding applies to.
|
|
2213
|
-
*/
|
|
2214
|
-
asset_id: string;
|
|
2215
|
-
/**
|
|
2216
|
-
* Dot-notation path to the field on the catalog item (e.g., 'name', 'price.amount', 'location.city').
|
|
2217
|
-
*/
|
|
2218
|
-
catalog_field: string;
|
|
2219
|
-
ext?: ExtensionObject;
|
|
2220
|
-
}
|
|
2221
|
-
/**
|
|
2222
|
-
* 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.
|
|
2223
|
-
*/
|
|
2224
|
-
export interface AssetPoolBinding {
|
|
2225
|
-
kind: 'asset_pool';
|
|
2226
|
-
/**
|
|
2227
|
-
* The asset_id from the format's assets array. Identifies which individual template slot this binding applies to.
|
|
2228
|
-
*/
|
|
2229
|
-
asset_id: string;
|
|
2230
|
-
/**
|
|
2231
|
-
* The asset_group_id on the catalog item's assets array to pull from (e.g., 'images_landscape', 'images_vertical', 'logo').
|
|
2232
|
-
*/
|
|
2233
|
-
asset_group_id: string;
|
|
2234
|
-
ext?: ExtensionObject;
|
|
2235
|
-
}
|
|
2236
|
-
/**
|
|
2237
|
-
* Budget pacing strategy
|
|
2238
|
-
*/
|
|
2239
|
-
export type Pacing = 'even' | 'asap' | 'front_loaded';
|
|
2240
|
-
/**
|
|
2241
|
-
* 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.
|
|
2242
|
-
*/
|
|
2243
|
-
export type OptimizationGoal = {
|
|
2244
|
-
kind: 'metric';
|
|
2245
|
-
/**
|
|
2246
|
-
* 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').
|
|
2247
|
-
*/
|
|
2248
|
-
metric: 'clicks' | 'views' | 'completed_views' | 'viewed_seconds' | 'attention_seconds' | 'attention_score' | 'engagements' | 'follows' | 'saves' | 'profile_visits' | 'reach';
|
|
2249
|
-
/**
|
|
2250
|
-
* Unit for reach measurement. Required when metric is 'reach'. Must be a value declared in the product's metric_optimization.supported_reach_units.
|
|
2251
|
-
*/
|
|
2252
|
-
reach_unit?: ReachUnit;
|
|
2253
|
-
/**
|
|
2254
|
-
* 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.
|
|
2255
|
-
*/
|
|
2256
|
-
target_frequency?: {
|
|
2257
|
-
[k: string]: unknown | undefined;
|
|
2258
|
-
};
|
|
2259
|
-
/**
|
|
2260
|
-
* 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.
|
|
2261
|
-
*/
|
|
2262
|
-
view_duration_seconds?: number;
|
|
2263
|
-
/**
|
|
2264
|
-
* Target for this metric. When omitted, the seller optimizes for maximum metric volume within budget.
|
|
2265
|
-
*/
|
|
2266
|
-
target?: {
|
|
2267
|
-
kind: 'cost_per';
|
|
2268
|
-
/**
|
|
2269
|
-
* Target cost per metric unit in the buy currency
|
|
2270
|
-
*/
|
|
2271
|
-
value: number;
|
|
2272
|
-
} | {
|
|
2273
|
-
kind: 'threshold_rate';
|
|
2274
|
-
/**
|
|
2275
|
-
* Minimum per-impression value. Units depend on the metric: proportion (clicks, views, completed_views), seconds (viewed_seconds, attention_seconds), or score (attention_score).
|
|
2276
|
-
*/
|
|
2277
|
-
value: number;
|
|
2278
|
-
};
|
|
2279
|
-
/**
|
|
2280
|
-
* 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.
|
|
2281
|
-
*/
|
|
2282
|
-
priority?: number;
|
|
2283
|
-
} | {
|
|
2284
|
-
kind: 'event';
|
|
2285
|
-
/**
|
|
2286
|
-
* 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.
|
|
2287
|
-
*/
|
|
2288
|
-
event_sources: {
|
|
2289
|
-
/**
|
|
2290
|
-
* Event source to include (must be configured on this account via sync_event_sources)
|
|
2291
|
-
*/
|
|
2292
|
-
event_source_id: string;
|
|
2293
|
-
event_type: EventType;
|
|
2294
|
-
/**
|
|
2295
|
-
* Required when event_type is 'custom'. Platform-specific name for the custom event.
|
|
2296
|
-
*/
|
|
2297
|
-
custom_event_name?: string;
|
|
2298
|
-
/**
|
|
2299
|
-
* 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.
|
|
2300
|
-
*/
|
|
2301
|
-
value_field?: string;
|
|
2302
|
-
/**
|
|
2303
|
-
* 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.
|
|
2304
|
-
*/
|
|
2305
|
-
value_factor?: number;
|
|
2306
|
-
}[];
|
|
2307
|
-
/**
|
|
2308
|
-
* Target cost or return for this event goal. When omitted, the seller optimizes for maximum conversions within budget.
|
|
2309
|
-
*/
|
|
2310
|
-
target?: {
|
|
2311
|
-
kind: 'cost_per';
|
|
2312
|
-
/**
|
|
2313
|
-
* Target cost per event in the buy currency
|
|
2314
|
-
*/
|
|
2315
|
-
value: number;
|
|
2316
|
-
} | {
|
|
2317
|
-
kind: 'per_ad_spend';
|
|
2318
|
-
/**
|
|
2319
|
-
* Target return ratio (e.g., 4.0 means $4 of value per $1 spent)
|
|
2320
|
-
*/
|
|
2321
|
-
value: number;
|
|
2322
|
-
} | {
|
|
2323
|
-
kind: 'maximize_value';
|
|
2324
|
-
};
|
|
2325
|
-
/**
|
|
2326
|
-
* 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.
|
|
2327
|
-
*/
|
|
2328
|
-
attribution_window?: {
|
|
2329
|
-
/**
|
|
2330
|
-
* Click-through attribution window (e.g. '7d', '28d', '30d')
|
|
2331
|
-
*/
|
|
2332
|
-
click_through: string;
|
|
2333
|
-
/**
|
|
2334
|
-
* View-through attribution window (e.g. '1d', '7d')
|
|
2335
|
-
*/
|
|
2336
|
-
view_through?: string;
|
|
2337
|
-
};
|
|
2338
|
-
/**
|
|
2339
|
-
* 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.
|
|
2340
|
-
*/
|
|
2341
|
-
priority?: number;
|
|
2342
|
-
};
|
|
2343
|
-
/**
|
|
2344
|
-
* Postal code system (e.g., 'us_zip', 'gb_outward'). System name encodes country and precision.
|
|
2345
|
-
*/
|
|
2346
|
-
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';
|
|
2347
|
-
/**
|
|
2348
|
-
* Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress_minutes enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. At least one of suppress_minutes or max_impressions must be set.
|
|
2349
|
-
*/
|
|
2350
|
-
export type FrequencyCap = {
|
|
2351
|
-
[k: string]: unknown | undefined;
|
|
2352
|
-
} & {
|
|
2353
|
-
/**
|
|
2354
|
-
* Cooldown period in minutes between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g., 60 = at least 1 hour between impressions).
|
|
2355
|
-
*/
|
|
2356
|
-
suppress_minutes?: number;
|
|
2357
|
-
/**
|
|
2358
|
-
* Maximum number of impressions per entity per window. For duration windows (e.g., '1d', '7d'), implementations typically use a rolling window; 'campaign' applies a fixed cap across the full flight.
|
|
2359
|
-
*/
|
|
2360
|
-
max_impressions?: number;
|
|
2361
|
-
/**
|
|
2362
|
-
* Entity granularity for impression counting. Required when max_impressions is set.
|
|
2363
|
-
*/
|
|
2364
|
-
per?: ReachUnit;
|
|
2365
|
-
/**
|
|
2366
|
-
* Time window for the max_impressions cap. Duration string (e.g., '1h', '6h', '1d', '7d', '30d', 'campaign'). 'campaign' applies the cap across the full campaign flight. Required when max_impressions is set.
|
|
2367
|
-
*/
|
|
2368
|
-
window?: string;
|
|
2369
|
-
};
|
|
2370
|
-
/**
|
|
2371
|
-
* Methods for verifying user age for compliance. Does not include 'inferred' as it is not accepted for regulatory compliance.
|
|
2372
|
-
*/
|
|
2373
|
-
export type AgeVerificationMethod = 'facial_age_estimation' | 'id_document' | 'digital_id' | 'credit_card' | 'world_id';
|
|
2183
|
+
export type VASTVersion = '2.0' | '3.0' | '4.0' | '4.1' | '4.2';
|
|
2374
2184
|
/**
|
|
2375
|
-
*
|
|
2185
|
+
* Standard VAST tracking events for video ad playback and interaction
|
|
2376
2186
|
*/
|
|
2377
|
-
export type
|
|
2187
|
+
export type VASTTrackingEvent = 'start' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'complete' | 'impression' | 'click' | 'pause' | 'resume' | 'skip' | 'mute' | 'unmute' | 'fullscreen' | 'exitFullscreen' | 'playerExpand' | 'playerCollapse';
|
|
2378
2188
|
/**
|
|
2379
|
-
*
|
|
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)
|
|
2380
2190
|
*/
|
|
2381
|
-
export type
|
|
2191
|
+
export type URLAssetType = 'clickthrough' | 'tracker_pixel' | 'tracker_script';
|
|
2382
2192
|
/**
|
|
2383
2193
|
* JavaScript module type
|
|
2384
2194
|
*/
|
|
2385
2195
|
export type JavaScriptModuleType = 'esm' | 'commonjs' | 'script';
|
|
2386
2196
|
/**
|
|
2387
|
-
*
|
|
2197
|
+
* HTTP method
|
|
2388
2198
|
*/
|
|
2389
|
-
export type
|
|
2390
|
-
/**
|
|
2391
|
-
* Discriminator indicating VAST is delivered via URL endpoint
|
|
2392
|
-
*/
|
|
2393
|
-
delivery_type: 'url';
|
|
2394
|
-
/**
|
|
2395
|
-
* URL endpoint that returns VAST XML
|
|
2396
|
-
*/
|
|
2397
|
-
url: string;
|
|
2398
|
-
vast_version?: VASTVersion;
|
|
2399
|
-
/**
|
|
2400
|
-
* Whether VPAID (Video Player-Ad Interface Definition) is supported
|
|
2401
|
-
*/
|
|
2402
|
-
vpaid_enabled?: boolean;
|
|
2403
|
-
/**
|
|
2404
|
-
* Expected video duration in milliseconds (if known)
|
|
2405
|
-
*/
|
|
2406
|
-
duration_ms?: number;
|
|
2407
|
-
/**
|
|
2408
|
-
* Tracking events supported by this VAST tag
|
|
2409
|
-
*/
|
|
2410
|
-
tracking_events?: VASTTrackingEvent[];
|
|
2411
|
-
/**
|
|
2412
|
-
* URL to captions file (WebVTT, SRT, etc.)
|
|
2413
|
-
*/
|
|
2414
|
-
captions_url?: string;
|
|
2415
|
-
/**
|
|
2416
|
-
* URL to audio description track for visually impaired users
|
|
2417
|
-
*/
|
|
2418
|
-
audio_description_url?: string;
|
|
2419
|
-
} | {
|
|
2420
|
-
/**
|
|
2421
|
-
* Discriminator indicating VAST is delivered as inline XML content
|
|
2422
|
-
*/
|
|
2423
|
-
delivery_type: 'inline';
|
|
2424
|
-
/**
|
|
2425
|
-
* Inline VAST XML content
|
|
2426
|
-
*/
|
|
2427
|
-
content: string;
|
|
2428
|
-
vast_version?: VASTVersion;
|
|
2429
|
-
/**
|
|
2430
|
-
* Whether VPAID (Video Player-Ad Interface Definition) is supported
|
|
2431
|
-
*/
|
|
2432
|
-
vpaid_enabled?: boolean;
|
|
2433
|
-
/**
|
|
2434
|
-
* Expected video duration in milliseconds (if known)
|
|
2435
|
-
*/
|
|
2436
|
-
duration_ms?: number;
|
|
2437
|
-
/**
|
|
2438
|
-
* Tracking events supported by this VAST tag
|
|
2439
|
-
*/
|
|
2440
|
-
tracking_events?: VASTTrackingEvent[];
|
|
2441
|
-
/**
|
|
2442
|
-
* URL to captions file (WebVTT, SRT, etc.)
|
|
2443
|
-
*/
|
|
2444
|
-
captions_url?: string;
|
|
2445
|
-
/**
|
|
2446
|
-
* URL to audio description track for visually impaired users
|
|
2447
|
-
*/
|
|
2448
|
-
audio_description_url?: string;
|
|
2449
|
-
};
|
|
2199
|
+
export type HTTPMethod = 'GET' | 'POST';
|
|
2450
2200
|
/**
|
|
2451
|
-
*
|
|
2201
|
+
* Expected content type of webhook response
|
|
2452
2202
|
*/
|
|
2453
|
-
export type
|
|
2203
|
+
export type WebhookResponseType = 'html' | 'json' | 'xml' | 'javascript';
|
|
2454
2204
|
/**
|
|
2455
|
-
*
|
|
2205
|
+
* Authentication method
|
|
2456
2206
|
*/
|
|
2457
|
-
export type
|
|
2207
|
+
export type WebhookSecurityMethod = 'hmac_sha256' | 'api_key' | 'none';
|
|
2458
2208
|
/**
|
|
2459
2209
|
* DAAST (Digital Audio Ad Serving Template) tag for third-party audio ad serving
|
|
2460
2210
|
*/
|
|
@@ -2484,6 +2234,7 @@ export type DAASTAsset = {
|
|
|
2484
2234
|
* URL to text transcript of the audio content
|
|
2485
2235
|
*/
|
|
2486
2236
|
transcript_url?: string;
|
|
2237
|
+
provenance?: Provenance;
|
|
2487
2238
|
} | {
|
|
2488
2239
|
/**
|
|
2489
2240
|
* Discriminator indicating DAAST is delivered as inline XML content
|
|
@@ -2510,6 +2261,7 @@ export type DAASTAsset = {
|
|
|
2510
2261
|
* URL to text transcript of the audio content
|
|
2511
2262
|
*/
|
|
2512
2263
|
transcript_url?: string;
|
|
2264
|
+
provenance?: Provenance;
|
|
2513
2265
|
};
|
|
2514
2266
|
/**
|
|
2515
2267
|
* DAAST specification version
|
|
@@ -2520,9 +2272,17 @@ export type DAASTVersion = '1.0' | '1.1';
|
|
|
2520
2272
|
*/
|
|
2521
2273
|
export type DAASTTrackingEvent = 'start' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'complete' | 'impression' | 'pause' | 'resume' | 'skip' | 'mute' | 'unmute';
|
|
2522
2274
|
/**
|
|
2523
|
-
*
|
|
2275
|
+
* Markdown flavor used. CommonMark for strict compatibility, GFM for tables/task lists/strikethrough.
|
|
2524
2276
|
*/
|
|
2525
|
-
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;
|
|
2526
2286
|
/**
|
|
2527
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).
|
|
2528
2288
|
*/
|
|
@@ -2540,7 +2300,7 @@ export type AuthenticationScheme = 'Bearer' | 'HMAC-SHA256';
|
|
|
2540
2300
|
*/
|
|
2541
2301
|
export interface CreateMediaBuyRequest {
|
|
2542
2302
|
/**
|
|
2543
|
-
* 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.
|
|
2544
2304
|
*/
|
|
2545
2305
|
buyer_ref: string;
|
|
2546
2306
|
/**
|
|
@@ -2629,7 +2389,7 @@ export interface CreateMediaBuyRequest {
|
|
|
2629
2389
|
*/
|
|
2630
2390
|
export interface PackageRequest {
|
|
2631
2391
|
/**
|
|
2632
|
-
* 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.
|
|
2633
2393
|
*/
|
|
2634
2394
|
buyer_ref: string;
|
|
2635
2395
|
/**
|
|
@@ -2660,8 +2420,11 @@ export interface PackageRequest {
|
|
|
2660
2420
|
/**
|
|
2661
2421
|
* Whether this package should be created in a paused state. Paused packages do not deliver impressions. Defaults to false.
|
|
2662
2422
|
*/
|
|
2663
|
-
paused?: boolean;
|
|
2664
|
-
|
|
2423
|
+
paused?: boolean;
|
|
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[];
|
|
2665
2428
|
/**
|
|
2666
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+.
|
|
2667
2430
|
*/
|
|
@@ -2857,7 +2620,7 @@ export interface CreativeAssignment {
|
|
|
2857
2620
|
*/
|
|
2858
2621
|
creative_id: string;
|
|
2859
2622
|
/**
|
|
2860
|
-
*
|
|
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).
|
|
2861
2624
|
*/
|
|
2862
2625
|
weight?: number;
|
|
2863
2626
|
/**
|
|
@@ -2879,18 +2642,14 @@ export interface CreativeAsset {
|
|
|
2879
2642
|
name: string;
|
|
2880
2643
|
format_id: FormatID;
|
|
2881
2644
|
/**
|
|
2882
|
-
*
|
|
2883
|
-
*/
|
|
2884
|
-
catalogs?: Catalog[];
|
|
2885
|
-
/**
|
|
2886
|
-
* Assets required by the format, keyed by asset_role
|
|
2645
|
+
* Assets required by the format, keyed by asset_id
|
|
2887
2646
|
*/
|
|
2888
2647
|
assets: {
|
|
2889
2648
|
/**
|
|
2890
2649
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
2891
|
-
* via the `patternProperty` "^[a-
|
|
2650
|
+
* via the `patternProperty` "^[a-z0-9_]+$".
|
|
2892
2651
|
*/
|
|
2893
|
-
[k: string]: ImageAsset | VideoAsset | AudioAsset | TextAsset |
|
|
2652
|
+
[k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset | MarkdownAsset | BriefAsset | CatalogAsset;
|
|
2894
2653
|
};
|
|
2895
2654
|
/**
|
|
2896
2655
|
* Preview contexts for generative formats - defines what scenarios to generate previews for
|
|
@@ -2924,6 +2683,7 @@ export interface CreativeAsset {
|
|
|
2924
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.
|
|
2925
2684
|
*/
|
|
2926
2685
|
placement_ids?: string[];
|
|
2686
|
+
provenance?: Provenance;
|
|
2927
2687
|
}
|
|
2928
2688
|
/**
|
|
2929
2689
|
* Image asset with URL and dimensions
|
|
@@ -2949,6 +2709,116 @@ export interface ImageAsset {
|
|
|
2949
2709
|
* Alternative text for accessibility
|
|
2950
2710
|
*/
|
|
2951
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;
|
|
2952
2822
|
}
|
|
2953
2823
|
/**
|
|
2954
2824
|
* Video asset with URL and technical specifications including audio track properties
|
|
@@ -3070,6 +2940,7 @@ export interface VideoAsset {
|
|
|
3070
2940
|
* URL to audio description track for visually impaired users
|
|
3071
2941
|
*/
|
|
3072
2942
|
audio_description_url?: string;
|
|
2943
|
+
provenance?: Provenance;
|
|
3073
2944
|
}
|
|
3074
2945
|
/**
|
|
3075
2946
|
* Audio asset with URL and technical specifications
|
|
@@ -3123,6 +2994,7 @@ export interface AudioAsset {
|
|
|
3123
2994
|
* URL to text transcript of the audio content
|
|
3124
2995
|
*/
|
|
3125
2996
|
transcript_url?: string;
|
|
2997
|
+
provenance?: Provenance;
|
|
3126
2998
|
}
|
|
3127
2999
|
/**
|
|
3128
3000
|
* Text content asset
|
|
@@ -3136,6 +3008,22 @@ export interface TextAsset {
|
|
|
3136
3008
|
* Language code (e.g., 'en', 'es', 'fr')
|
|
3137
3009
|
*/
|
|
3138
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;
|
|
3139
3027
|
}
|
|
3140
3028
|
/**
|
|
3141
3029
|
* HTML content asset
|
|
@@ -3170,19 +3058,7 @@ export interface HTMLAsset {
|
|
|
3170
3058
|
*/
|
|
3171
3059
|
screen_reader_tested?: boolean;
|
|
3172
3060
|
};
|
|
3173
|
-
|
|
3174
|
-
/**
|
|
3175
|
-
* CSS stylesheet asset
|
|
3176
|
-
*/
|
|
3177
|
-
export interface CSSAsset {
|
|
3178
|
-
/**
|
|
3179
|
-
* CSS content
|
|
3180
|
-
*/
|
|
3181
|
-
content: string;
|
|
3182
|
-
/**
|
|
3183
|
-
* CSS media query context (e.g., 'screen', 'print')
|
|
3184
|
-
*/
|
|
3185
|
-
media?: string;
|
|
3061
|
+
provenance?: Provenance;
|
|
3186
3062
|
}
|
|
3187
3063
|
/**
|
|
3188
3064
|
* JavaScript code asset
|
|
@@ -3214,18 +3090,177 @@ export interface JavaScriptAsset {
|
|
|
3214
3090
|
*/
|
|
3215
3091
|
screen_reader_tested?: boolean;
|
|
3216
3092
|
};
|
|
3093
|
+
provenance?: Provenance;
|
|
3217
3094
|
}
|
|
3218
3095
|
/**
|
|
3219
|
-
*
|
|
3096
|
+
* Webhook for server-side dynamic content rendering (DCO)
|
|
3220
3097
|
*/
|
|
3221
|
-
export interface
|
|
3098
|
+
export interface WebhookAsset {
|
|
3222
3099
|
/**
|
|
3223
|
-
* URL
|
|
3100
|
+
* Webhook URL to call for dynamic content
|
|
3224
3101
|
*/
|
|
3225
3102
|
url: string;
|
|
3226
|
-
|
|
3103
|
+
method?: HTTPMethod;
|
|
3227
3104
|
/**
|
|
3228
|
-
*
|
|
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
|
|
3229
3264
|
*/
|
|
3230
3265
|
description?: string;
|
|
3231
3266
|
}
|
|
@@ -3413,7 +3448,7 @@ export interface Package {
|
|
|
3413
3448
|
*/
|
|
3414
3449
|
package_id: string;
|
|
3415
3450
|
/**
|
|
3416
|
-
* 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.
|
|
3417
3452
|
*/
|
|
3418
3453
|
buyer_ref?: string;
|
|
3419
3454
|
/**
|
|
@@ -3437,6 +3472,14 @@ export interface Package {
|
|
|
3437
3472
|
* Impression goal for this package
|
|
3438
3473
|
*/
|
|
3439
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[];
|
|
3440
3483
|
targeting_overlay?: TargetingOverlay;
|
|
3441
3484
|
/**
|
|
3442
3485
|
* Creative assets assigned to this package
|
|
@@ -3489,17 +3532,30 @@ export interface SyncCreativesRequest {
|
|
|
3489
3532
|
*/
|
|
3490
3533
|
creative_ids?: string[];
|
|
3491
3534
|
/**
|
|
3492
|
-
* 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.
|
|
3493
3536
|
*/
|
|
3494
3537
|
assignments?: {
|
|
3495
3538
|
/**
|
|
3496
|
-
*
|
|
3497
|
-
*
|
|
3498
|
-
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
3499
|
-
* via the `patternProperty` "^[a-zA-Z0-9_-]+$".
|
|
3539
|
+
* ID of the creative to assign
|
|
3500
3540
|
*/
|
|
3501
|
-
|
|
3502
|
-
|
|
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;
|
|
3503
3559
|
/**
|
|
3504
3560
|
* When true, creatives not included in this sync will be archived. Use with caution for full library replacement.
|
|
3505
3561
|
*/
|
|
@@ -3577,7 +3633,7 @@ export interface SyncCreativesSuccess {
|
|
|
3577
3633
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
3578
3634
|
* via the `patternProperty` "^[a-zA-Z0-9_-]+$".
|
|
3579
3635
|
*/
|
|
3580
|
-
[k: string]: string;
|
|
3636
|
+
[k: string]: string | undefined;
|
|
3581
3637
|
};
|
|
3582
3638
|
}[];
|
|
3583
3639
|
/**
|
|
@@ -3800,18 +3856,14 @@ export interface ListCreativesResponse {
|
|
|
3800
3856
|
*/
|
|
3801
3857
|
updated_date: string;
|
|
3802
3858
|
/**
|
|
3803
|
-
*
|
|
3804
|
-
*/
|
|
3805
|
-
catalogs?: Catalog[];
|
|
3806
|
-
/**
|
|
3807
|
-
* Assets for this creative, keyed by asset_role
|
|
3859
|
+
* Assets for this creative, keyed by asset_id
|
|
3808
3860
|
*/
|
|
3809
3861
|
assets?: {
|
|
3810
3862
|
/**
|
|
3811
3863
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
3812
|
-
* via the `patternProperty` "^[a-
|
|
3864
|
+
* via the `patternProperty` "^[a-z0-9_]+$".
|
|
3813
3865
|
*/
|
|
3814
|
-
[k: string]: ImageAsset | VideoAsset | AudioAsset | TextAsset |
|
|
3866
|
+
[k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset | MarkdownAsset | BriefAsset | CatalogAsset;
|
|
3815
3867
|
};
|
|
3816
3868
|
/**
|
|
3817
3869
|
* User-defined tags for organization and searchability
|
|
@@ -3887,7 +3939,7 @@ export interface ListCreativesResponse {
|
|
|
3887
3939
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
3888
3940
|
* via the `patternProperty` "^[a-zA-Z0-9_-]+$".
|
|
3889
3941
|
*/
|
|
3890
|
-
[k: string]: number;
|
|
3942
|
+
[k: string]: number | undefined;
|
|
3891
3943
|
};
|
|
3892
3944
|
/**
|
|
3893
3945
|
* Breakdown of creatives by status
|
|
@@ -3948,6 +4000,10 @@ export type UpdateMediaBuyRequest = {
|
|
|
3948
4000
|
packages?: PackageUpdate[];
|
|
3949
4001
|
reporting_webhook?: ReportingWebhook;
|
|
3950
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;
|
|
3951
4007
|
context?: ContextObject;
|
|
3952
4008
|
ext?: ExtensionObject;
|
|
3953
4009
|
} & {
|
|
@@ -3982,7 +4038,10 @@ export type PackageUpdate = {
|
|
|
3982
4038
|
* Pause/resume specific package (true = paused, false = active)
|
|
3983
4039
|
*/
|
|
3984
4040
|
paused?: boolean;
|
|
3985
|
-
|
|
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[];
|
|
3986
4045
|
/**
|
|
3987
4046
|
* Replace all optimization goals for this package. Uses replacement semantics — omit to leave goals unchanged.
|
|
3988
4047
|
*/
|
|
@@ -4101,9 +4160,9 @@ export interface UpdateMediaBuyError {
|
|
|
4101
4160
|
ext?: ExtensionObject;
|
|
4102
4161
|
}
|
|
4103
4162
|
/**
|
|
4104
|
-
* Status of a media buy
|
|
4163
|
+
* Status of a media buy.
|
|
4105
4164
|
*/
|
|
4106
|
-
export type MediaBuyStatus = 'pending_activation' | 'active' | 'paused' | 'completed';
|
|
4165
|
+
export type MediaBuyStatus = 'pending_activation' | 'active' | 'paused' | 'completed' | 'rejected' | 'canceled';
|
|
4107
4166
|
/**
|
|
4108
4167
|
* Request parameters for retrieving media buy status, creative approval state, and optional delivery snapshots
|
|
4109
4168
|
*/
|
|
@@ -4163,6 +4222,14 @@ export interface GetMediaBuysResponse {
|
|
|
4163
4222
|
* Total budget amount across all packages, denominated in media_buy.currency
|
|
4164
4223
|
*/
|
|
4165
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;
|
|
4166
4233
|
/**
|
|
4167
4234
|
* ISO 8601 timestamp for creative upload deadline
|
|
4168
4235
|
*/
|
|
@@ -4295,6 +4362,10 @@ export interface GetMediaBuysResponse {
|
|
|
4295
4362
|
context?: ContextObject;
|
|
4296
4363
|
ext?: ExtensionObject;
|
|
4297
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';
|
|
4298
4369
|
/**
|
|
4299
4370
|
* Metric to sort breakdown rows by (descending). Falls back to 'spend' if the seller does not report the requested metric.
|
|
4300
4371
|
*/
|
|
@@ -4325,7 +4396,25 @@ export interface GetMediaBuyDeliveryRequest {
|
|
|
4325
4396
|
*/
|
|
4326
4397
|
end_date?: string;
|
|
4327
4398
|
/**
|
|
4328
|
-
*
|
|
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.
|
|
4329
4418
|
*/
|
|
4330
4419
|
reporting_dimensions?: {
|
|
4331
4420
|
/**
|
|
@@ -4387,10 +4476,6 @@ export interface GetMediaBuyDeliveryRequest {
|
|
|
4387
4476
|
context?: ContextObject;
|
|
4388
4477
|
ext?: ExtensionObject;
|
|
4389
4478
|
}
|
|
4390
|
-
/**
|
|
4391
|
-
* Attribution model used to assign credit when multiple touchpoints exist
|
|
4392
|
-
*/
|
|
4393
|
-
export type AttributionModel = 'last_touch' | 'first_touch' | 'linear' | 'time_decay' | 'data_driven';
|
|
4394
4479
|
/**
|
|
4395
4480
|
* Pricing model used for this media buy
|
|
4396
4481
|
*/
|
|
@@ -4503,9 +4588,9 @@ export interface GetMediaBuyDeliveryResponse {
|
|
|
4503
4588
|
*/
|
|
4504
4589
|
buyer_campaign_ref?: string;
|
|
4505
4590
|
/**
|
|
4506
|
-
* 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.
|
|
4507
4592
|
*/
|
|
4508
|
-
status: 'pending_activation' | 'pending' | 'active' | 'paused' | 'completed' | 'failed' | 'reporting_delayed';
|
|
4593
|
+
status: 'pending_activation' | 'pending' | 'active' | 'paused' | 'completed' | 'rejected' | 'canceled' | 'failed' | 'reporting_delayed';
|
|
4509
4594
|
/**
|
|
4510
4595
|
* When delayed data is expected to be available (only present when status is reporting_delayed)
|
|
4511
4596
|
*/
|
|
@@ -4667,6 +4752,39 @@ export interface GetMediaBuyDeliveryResponse {
|
|
|
4667
4752
|
* Whether by_placement was truncated. Sellers MUST return this flag whenever by_placement is present (false means the list is complete).
|
|
4668
4753
|
*/
|
|
4669
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
|
+
}[];
|
|
4670
4788
|
})[];
|
|
4671
4789
|
/**
|
|
4672
4790
|
* Day-by-day delivery
|
|
@@ -4718,13 +4836,13 @@ export interface GetMediaBuyDeliveryResponse {
|
|
|
4718
4836
|
*/
|
|
4719
4837
|
export interface AttributionWindow {
|
|
4720
4838
|
/**
|
|
4721
|
-
*
|
|
4839
|
+
* Post-click attribution window. Conversions occurring within this duration after a click are attributed to the ad.
|
|
4722
4840
|
*/
|
|
4723
|
-
|
|
4841
|
+
post_click?: Duration;
|
|
4724
4842
|
/**
|
|
4725
|
-
*
|
|
4843
|
+
* Post-view attribution window. Conversions occurring within this duration after an ad impression (without click) are attributed to the ad.
|
|
4726
4844
|
*/
|
|
4727
|
-
|
|
4845
|
+
post_view?: Duration;
|
|
4728
4846
|
model: AttributionModel;
|
|
4729
4847
|
}
|
|
4730
4848
|
/**
|
|
@@ -4964,19 +5082,7 @@ export type ProvidePerformanceFeedbackRequest = {
|
|
|
4964
5082
|
* Buyer's reference for the media buy
|
|
4965
5083
|
*/
|
|
4966
5084
|
buyer_ref?: string;
|
|
4967
|
-
|
|
4968
|
-
* Time period for performance measurement
|
|
4969
|
-
*/
|
|
4970
|
-
measurement_period?: {
|
|
4971
|
-
/**
|
|
4972
|
-
* ISO 8601 start timestamp for measurement period
|
|
4973
|
-
*/
|
|
4974
|
-
start: string;
|
|
4975
|
-
/**
|
|
4976
|
-
* ISO 8601 end timestamp for measurement period
|
|
4977
|
-
*/
|
|
4978
|
-
end: string;
|
|
4979
|
-
};
|
|
5085
|
+
measurement_period?: DatetimeRange;
|
|
4980
5086
|
/**
|
|
4981
5087
|
* Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expected)
|
|
4982
5088
|
*/
|
|
@@ -5004,6 +5110,19 @@ export type MetricType = 'overall_performance' | 'conversion_rate' | 'brand_lift
|
|
|
5004
5110
|
* Source of the performance data
|
|
5005
5111
|
*/
|
|
5006
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
|
+
}
|
|
5007
5126
|
/**
|
|
5008
5127
|
* Response payload for provide_performance_feedback task. Returns either success confirmation OR error information, never both.
|
|
5009
5128
|
*/
|
|
@@ -5389,6 +5508,10 @@ export type AudienceMember = {
|
|
|
5389
5508
|
}[];
|
|
5390
5509
|
ext?: ExtensionObject;
|
|
5391
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';
|
|
5392
5515
|
/**
|
|
5393
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.
|
|
5394
5517
|
*/
|
|
@@ -5406,6 +5529,18 @@ export interface SyncAudiencesRequest {
|
|
|
5406
5529
|
* Human-readable name for this audience
|
|
5407
5530
|
*/
|
|
5408
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[];
|
|
5409
5544
|
/**
|
|
5410
5545
|
* Members to add to this audience. Hashed before sending — normalize emails to lowercase+trim, phones to E.164.
|
|
5411
5546
|
*/
|
|
@@ -5418,10 +5553,7 @@ export interface SyncAudiencesRequest {
|
|
|
5418
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.
|
|
5419
5554
|
*/
|
|
5420
5555
|
delete?: boolean;
|
|
5421
|
-
|
|
5422
|
-
* 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.
|
|
5423
|
-
*/
|
|
5424
|
-
consent_basis?: 'consent' | 'legitimate_interest' | 'contract' | 'legal_obligation';
|
|
5556
|
+
consent_basis?: ConsentBasis;
|
|
5425
5557
|
}[];
|
|
5426
5558
|
/**
|
|
5427
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.
|
|
@@ -5466,6 +5598,10 @@ export interface SyncAudiencesSuccess {
|
|
|
5466
5598
|
* Number of members submitted in this sync operation (delta, not cumulative). In discovery-only calls (no audiences array), this is 0.
|
|
5467
5599
|
*/
|
|
5468
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;
|
|
5469
5605
|
/**
|
|
5470
5606
|
* Total members matched to platform users across all syncs (cumulative, not just this call). Populated when status is 'ready'.
|
|
5471
5607
|
*/
|
|
@@ -5573,223 +5709,99 @@ export interface SyncCatalogsSuccess {
|
|
|
5573
5709
|
*/
|
|
5574
5710
|
items_approved?: number;
|
|
5575
5711
|
/**
|
|
5576
|
-
* Number of items pending platform review. Common for product catalogs where items must pass content policy checks.
|
|
5577
|
-
*/
|
|
5578
|
-
items_pending?: number;
|
|
5579
|
-
/**
|
|
5580
|
-
* Number of items rejected by the platform. Check item_issues for rejection reasons.
|
|
5581
|
-
*/
|
|
5582
|
-
items_rejected?: number;
|
|
5583
|
-
/**
|
|
5584
|
-
* Per-item issues reported by the platform (rejections, warnings). Only present when the platform performs item-level review.
|
|
5585
|
-
*/
|
|
5586
|
-
item_issues?: {
|
|
5587
|
-
/**
|
|
5588
|
-
* ID of the catalog item with an issue
|
|
5589
|
-
*/
|
|
5590
|
-
item_id: string;
|
|
5591
|
-
status: CatalogItemStatus;
|
|
5592
|
-
/**
|
|
5593
|
-
* Reasons for rejection or warning
|
|
5594
|
-
*/
|
|
5595
|
-
reasons?: string[];
|
|
5596
|
-
}[];
|
|
5597
|
-
/**
|
|
5598
|
-
* ISO 8601 timestamp of when the most recent sync was accepted by the platform
|
|
5599
|
-
*/
|
|
5600
|
-
last_synced_at?: string;
|
|
5601
|
-
/**
|
|
5602
|
-
* ISO 8601 timestamp of when the platform will next fetch the feed URL. Only present for URL-based catalogs with update_frequency.
|
|
5603
|
-
*/
|
|
5604
|
-
next_fetch_at?: string;
|
|
5605
|
-
/**
|
|
5606
|
-
* Field names that were modified (only present when action='updated')
|
|
5607
|
-
*/
|
|
5608
|
-
changes?: string[];
|
|
5609
|
-
/**
|
|
5610
|
-
* Validation or processing errors (only present when action='failed')
|
|
5611
|
-
*/
|
|
5612
|
-
errors?: string[];
|
|
5613
|
-
/**
|
|
5614
|
-
* Non-fatal warnings about this catalog
|
|
5615
|
-
*/
|
|
5616
|
-
warnings?: string[];
|
|
5617
|
-
}[];
|
|
5618
|
-
/**
|
|
5619
|
-
* When true, this response contains simulated data from sandbox mode.
|
|
5620
|
-
*/
|
|
5621
|
-
sandbox?: boolean;
|
|
5622
|
-
context?: ContextObject;
|
|
5623
|
-
ext?: ExtensionObject;
|
|
5624
|
-
}
|
|
5625
|
-
/**
|
|
5626
|
-
* Error response - operation failed completely, no catalogs were processed
|
|
5627
|
-
*/
|
|
5628
|
-
export interface SyncCatalogsError {
|
|
5629
|
-
/**
|
|
5630
|
-
* Operation-level errors that prevented processing any catalogs (e.g., authentication failure, service unavailable, invalid request format)
|
|
5631
|
-
*/
|
|
5632
|
-
errors: Error[];
|
|
5633
|
-
context?: ContextObject;
|
|
5634
|
-
ext?: ExtensionObject;
|
|
5635
|
-
}
|
|
5636
|
-
/**
|
|
5637
|
-
* HTTP method
|
|
5638
|
-
*/
|
|
5639
|
-
export type HTTPMethod = 'GET' | 'POST';
|
|
5640
|
-
/**
|
|
5641
|
-
* Expected content type of webhook response
|
|
5642
|
-
*/
|
|
5643
|
-
export type WebhookResponseType = 'html' | 'json' | 'xml' | 'javascript';
|
|
5644
|
-
/**
|
|
5645
|
-
* Authentication method
|
|
5646
|
-
*/
|
|
5647
|
-
export type WebhookSecurityMethod = 'hmac_sha256' | 'api_key' | 'none';
|
|
5648
|
-
/**
|
|
5649
|
-
* 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.
|
|
5650
|
-
*/
|
|
5651
|
-
export type CreativeBriefReference = CreativeBrief | string;
|
|
5652
|
-
/**
|
|
5653
|
-
* 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.
|
|
5654
|
-
*/
|
|
5655
|
-
export interface BuildCreativeRequest {
|
|
5656
|
-
/**
|
|
5657
|
-
* 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.
|
|
5658
|
-
*/
|
|
5659
|
-
message?: string;
|
|
5660
|
-
creative_manifest?: CreativeManifest;
|
|
5661
|
-
target_format_id: FormatID;
|
|
5662
|
-
brand?: BrandReference;
|
|
5663
|
-
creative_brief?: CreativeBriefReference;
|
|
5664
|
-
context?: ContextObject;
|
|
5665
|
-
ext?: ExtensionObject;
|
|
5666
|
-
}
|
|
5667
|
-
/**
|
|
5668
|
-
* 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.
|
|
5669
|
-
*/
|
|
5670
|
-
export interface CreativeManifest {
|
|
5671
|
-
format_id: FormatID;
|
|
5672
|
-
/**
|
|
5673
|
-
* 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.
|
|
5674
|
-
*/
|
|
5675
|
-
catalogs?: Catalog[];
|
|
5676
|
-
/**
|
|
5677
|
-
* 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.
|
|
5678
|
-
*
|
|
5679
|
-
* 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.
|
|
5680
|
-
*/
|
|
5681
|
-
assets: {
|
|
5682
|
-
/**
|
|
5683
|
-
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
5684
|
-
* via the `patternProperty` "^[a-z0-9_]+$".
|
|
5685
|
-
*/
|
|
5686
|
-
[k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset;
|
|
5687
|
-
};
|
|
5688
|
-
ext?: ExtensionObject;
|
|
5689
|
-
}
|
|
5690
|
-
/**
|
|
5691
|
-
* Webhook for server-side dynamic content rendering (DCO)
|
|
5692
|
-
*/
|
|
5693
|
-
export interface WebhookAsset {
|
|
5694
|
-
/**
|
|
5695
|
-
* Webhook URL to call for dynamic content
|
|
5696
|
-
*/
|
|
5697
|
-
url: string;
|
|
5698
|
-
method?: HTTPMethod;
|
|
5699
|
-
/**
|
|
5700
|
-
* Maximum time to wait for response in milliseconds
|
|
5701
|
-
*/
|
|
5702
|
-
timeout_ms?: number;
|
|
5703
|
-
/**
|
|
5704
|
-
* Universal macros that can be passed to webhook (e.g., DEVICE_TYPE, COUNTRY). See docs/creative/universal-macros.mdx for full list.
|
|
5705
|
-
*/
|
|
5706
|
-
supported_macros?: (UniversalMacro | string)[];
|
|
5707
|
-
/**
|
|
5708
|
-
* Universal macros that must be provided for webhook to function
|
|
5709
|
-
*/
|
|
5710
|
-
required_macros?: (UniversalMacro | string)[];
|
|
5711
|
-
response_type: WebhookResponseType;
|
|
5712
|
-
/**
|
|
5713
|
-
* Security configuration for webhook calls
|
|
5714
|
-
*/
|
|
5715
|
-
security: {
|
|
5716
|
-
method: WebhookSecurityMethod;
|
|
5717
|
-
/**
|
|
5718
|
-
* Header name for HMAC signature (e.g., 'X-Signature')
|
|
5719
|
-
*/
|
|
5720
|
-
hmac_header?: string;
|
|
5721
|
-
/**
|
|
5722
|
-
* Header name for API key (e.g., 'X-API-Key')
|
|
5723
|
-
*/
|
|
5724
|
-
api_key_header?: string;
|
|
5725
|
-
};
|
|
5726
|
-
}
|
|
5727
|
-
/**
|
|
5728
|
-
* Inline creative brief object
|
|
5729
|
-
*/
|
|
5730
|
-
export interface CreativeBrief {
|
|
5731
|
-
/**
|
|
5732
|
-
* Campaign or flight name for identification
|
|
5733
|
-
*/
|
|
5734
|
-
name: string;
|
|
5735
|
-
/**
|
|
5736
|
-
* Campaign objective that guides creative tone and call-to-action strategy
|
|
5737
|
-
*/
|
|
5738
|
-
objective?: 'awareness' | 'consideration' | 'conversion' | 'retention' | 'engagement';
|
|
5739
|
-
/**
|
|
5740
|
-
* Desired tone for this campaign, modulating the brand's base tone (e.g., 'playful and festive', 'premium and aspirational')
|
|
5741
|
-
*/
|
|
5742
|
-
tone?: string;
|
|
5743
|
-
/**
|
|
5744
|
-
* Target audience description for this campaign
|
|
5745
|
-
*/
|
|
5746
|
-
audience?: string;
|
|
5747
|
-
/**
|
|
5748
|
-
* Creative territory or positioning the campaign should occupy
|
|
5749
|
-
*/
|
|
5750
|
-
territory?: string;
|
|
5751
|
-
/**
|
|
5752
|
-
* Messaging framework for the campaign
|
|
5753
|
-
*/
|
|
5754
|
-
messaging?: {
|
|
5755
|
-
/**
|
|
5756
|
-
* Primary headline
|
|
5712
|
+
* Number of items pending platform review. Common for product catalogs where items must pass content policy checks.
|
|
5757
5713
|
*/
|
|
5758
|
-
|
|
5714
|
+
items_pending?: number;
|
|
5759
5715
|
/**
|
|
5760
|
-
*
|
|
5716
|
+
* Number of items rejected by the platform. Check item_issues for rejection reasons.
|
|
5761
5717
|
*/
|
|
5762
|
-
|
|
5718
|
+
items_rejected?: number;
|
|
5763
5719
|
/**
|
|
5764
|
-
*
|
|
5720
|
+
* Per-item issues reported by the platform (rejections, warnings). Only present when the platform performs item-level review.
|
|
5765
5721
|
*/
|
|
5766
|
-
|
|
5722
|
+
item_issues?: {
|
|
5723
|
+
/**
|
|
5724
|
+
* ID of the catalog item with an issue
|
|
5725
|
+
*/
|
|
5726
|
+
item_id: string;
|
|
5727
|
+
status: CatalogItemStatus;
|
|
5728
|
+
/**
|
|
5729
|
+
* Reasons for rejection or warning
|
|
5730
|
+
*/
|
|
5731
|
+
reasons?: string[];
|
|
5732
|
+
}[];
|
|
5767
5733
|
/**
|
|
5768
|
-
*
|
|
5734
|
+
* ISO 8601 timestamp of when the most recent sync was accepted by the platform
|
|
5769
5735
|
*/
|
|
5770
|
-
|
|
5771
|
-
|
|
5736
|
+
last_synced_at?: string;
|
|
5737
|
+
/**
|
|
5738
|
+
* ISO 8601 timestamp of when the platform will next fetch the feed URL. Only present for URL-based catalogs with update_frequency.
|
|
5739
|
+
*/
|
|
5740
|
+
next_fetch_at?: string;
|
|
5741
|
+
/**
|
|
5742
|
+
* Field names that were modified (only present when action='updated')
|
|
5743
|
+
*/
|
|
5744
|
+
changes?: string[];
|
|
5745
|
+
/**
|
|
5746
|
+
* Validation or processing errors (only present when action='failed')
|
|
5747
|
+
*/
|
|
5748
|
+
errors?: string[];
|
|
5749
|
+
/**
|
|
5750
|
+
* Non-fatal warnings about this catalog
|
|
5751
|
+
*/
|
|
5752
|
+
warnings?: string[];
|
|
5753
|
+
}[];
|
|
5772
5754
|
/**
|
|
5773
|
-
*
|
|
5755
|
+
* When true, this response contains simulated data from sandbox mode.
|
|
5774
5756
|
*/
|
|
5775
|
-
|
|
5757
|
+
sandbox?: boolean;
|
|
5758
|
+
context?: ContextObject;
|
|
5759
|
+
ext?: ExtensionObject;
|
|
5776
5760
|
}
|
|
5777
5761
|
/**
|
|
5778
|
-
*
|
|
5762
|
+
* Error response - operation failed completely, no catalogs were processed
|
|
5779
5763
|
*/
|
|
5780
|
-
export interface
|
|
5764
|
+
export interface SyncCatalogsError {
|
|
5781
5765
|
/**
|
|
5782
|
-
*
|
|
5766
|
+
* Operation-level errors that prevented processing any catalogs (e.g., authentication failure, service unavailable, invalid request format)
|
|
5783
5767
|
*/
|
|
5784
|
-
|
|
5768
|
+
errors: Error[];
|
|
5769
|
+
context?: ContextObject;
|
|
5770
|
+
ext?: ExtensionObject;
|
|
5771
|
+
}
|
|
5772
|
+
/**
|
|
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.
|
|
5774
|
+
*/
|
|
5775
|
+
export interface BuildCreativeRequest {
|
|
5785
5776
|
/**
|
|
5786
|
-
*
|
|
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.
|
|
5787
5778
|
*/
|
|
5788
|
-
|
|
5779
|
+
message?: string;
|
|
5780
|
+
creative_manifest?: CreativeManifest;
|
|
5781
|
+
target_format_id: FormatID;
|
|
5782
|
+
brand?: BrandReference;
|
|
5783
|
+
context?: ContextObject;
|
|
5784
|
+
ext?: ExtensionObject;
|
|
5785
|
+
}
|
|
5786
|
+
/**
|
|
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.
|
|
5788
|
+
*/
|
|
5789
|
+
export interface CreativeManifest {
|
|
5790
|
+
format_id: FormatID;
|
|
5789
5791
|
/**
|
|
5790
|
-
*
|
|
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.
|
|
5791
5795
|
*/
|
|
5792
|
-
|
|
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;
|
|
5793
5805
|
}
|
|
5794
5806
|
/**
|
|
5795
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.
|
|
@@ -5917,14 +5929,10 @@ export type PreviewCreativeRequest = {
|
|
|
5917
5929
|
*/
|
|
5918
5930
|
export type PreviewOutputFormat = 'url' | 'html';
|
|
5919
5931
|
/**
|
|
5920
|
-
* Complete creative manifest with all required assets
|
|
5932
|
+
* Complete creative manifest with all required assets.
|
|
5921
5933
|
*/
|
|
5922
5934
|
export interface CreativeManifest1 {
|
|
5923
5935
|
format_id: FormatID;
|
|
5924
|
-
/**
|
|
5925
|
-
* 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.
|
|
5926
|
-
*/
|
|
5927
|
-
catalogs?: Catalog[];
|
|
5928
5936
|
/**
|
|
5929
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.
|
|
5930
5938
|
*
|
|
@@ -5935,8 +5943,9 @@ export interface CreativeManifest1 {
|
|
|
5935
5943
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
5936
5944
|
* via the `patternProperty` "^[a-z0-9_]+$".
|
|
5937
5945
|
*/
|
|
5938
|
-
[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;
|
|
5939
5947
|
};
|
|
5948
|
+
provenance?: Provenance;
|
|
5940
5949
|
ext?: ExtensionObject;
|
|
5941
5950
|
}
|
|
5942
5951
|
/**
|
|
@@ -6153,9 +6162,15 @@ export interface PreviewCreativeBatchResponse {
|
|
|
6153
6162
|
ext?: ExtensionObject;
|
|
6154
6163
|
}
|
|
6155
6164
|
export interface PreviewBatchResultSuccess {
|
|
6165
|
+
/**
|
|
6166
|
+
* Indicates this preview request succeeded
|
|
6167
|
+
*/
|
|
6156
6168
|
success?: true;
|
|
6157
6169
|
}
|
|
6158
6170
|
export interface PreviewBatchResultError {
|
|
6171
|
+
/**
|
|
6172
|
+
* Indicates this preview request failed
|
|
6173
|
+
*/
|
|
6159
6174
|
success?: false;
|
|
6160
6175
|
}
|
|
6161
6176
|
/**
|
|
@@ -6226,19 +6241,7 @@ export type GetCreativeDeliveryRequest = {
|
|
|
6226
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.
|
|
6227
6242
|
*/
|
|
6228
6243
|
max_variants?: number;
|
|
6229
|
-
|
|
6230
|
-
* Pagination parameters for the creatives array in the response. When omitted, the agent returns all matching creatives.
|
|
6231
|
-
*/
|
|
6232
|
-
pagination?: {
|
|
6233
|
-
/**
|
|
6234
|
-
* Maximum number of creatives to return
|
|
6235
|
-
*/
|
|
6236
|
-
limit?: number;
|
|
6237
|
-
/**
|
|
6238
|
-
* Number of creatives to skip
|
|
6239
|
-
*/
|
|
6240
|
-
offset?: number;
|
|
6241
|
-
};
|
|
6244
|
+
pagination?: PaginationRequest;
|
|
6242
6245
|
context?: ContextObject;
|
|
6243
6246
|
ext?: ExtensionObject;
|
|
6244
6247
|
};
|
|
@@ -6375,15 +6378,12 @@ export interface Identifier {
|
|
|
6375
6378
|
value: string;
|
|
6376
6379
|
}
|
|
6377
6380
|
/**
|
|
6378
|
-
* 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).
|
|
6379
6382
|
*/
|
|
6380
6383
|
export type GetSignalsRequest = {
|
|
6381
6384
|
[k: string]: unknown | undefined;
|
|
6382
6385
|
} & {
|
|
6383
|
-
|
|
6384
|
-
* The caller's account with this signals agent. When provided, the signals agent returns per-account pricing options if configured.
|
|
6385
|
-
*/
|
|
6386
|
-
account_id?: string;
|
|
6386
|
+
account?: AccountReference;
|
|
6387
6387
|
/**
|
|
6388
6388
|
* The buyer's campaign reference. Used to correlate signal discovery with subsequent report_usage calls.
|
|
6389
6389
|
*/
|
|
@@ -6393,7 +6393,7 @@ export type GetSignalsRequest = {
|
|
|
6393
6393
|
*/
|
|
6394
6394
|
signal_spec?: string;
|
|
6395
6395
|
/**
|
|
6396
|
-
* 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.
|
|
6397
6397
|
*/
|
|
6398
6398
|
signal_ids?: SignalID[];
|
|
6399
6399
|
/**
|
|
@@ -6593,6 +6593,23 @@ export interface GetSignalsResponse {
|
|
|
6593
6593
|
*/
|
|
6594
6594
|
description: string;
|
|
6595
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
|
+
};
|
|
6596
6613
|
signal_type: SignalCatalogType;
|
|
6597
6614
|
/**
|
|
6598
6615
|
* Human-readable name of the data provider
|
|
@@ -6658,14 +6675,18 @@ export interface PercentOfMediaPricing {
|
|
|
6658
6675
|
ext?: ExtensionObject;
|
|
6659
6676
|
}
|
|
6660
6677
|
/**
|
|
6661
|
-
* Fixed charge per
|
|
6678
|
+
* Fixed charge per billing period, regardless of impressions or spend. Used for licensed data bundles and audience subscriptions.
|
|
6662
6679
|
*/
|
|
6663
6680
|
export interface FlatFeePricing {
|
|
6664
6681
|
model: 'flat_fee';
|
|
6665
6682
|
/**
|
|
6666
|
-
* Fixed charge for the
|
|
6683
|
+
* Fixed charge for the billing period
|
|
6667
6684
|
*/
|
|
6668
6685
|
amount: number;
|
|
6686
|
+
/**
|
|
6687
|
+
* Billing period for the flat fee.
|
|
6688
|
+
*/
|
|
6689
|
+
period: 'monthly' | 'quarterly' | 'annual' | 'campaign';
|
|
6669
6690
|
/**
|
|
6670
6691
|
* ISO 4217 currency code
|
|
6671
6692
|
*/
|
|
@@ -6673,25 +6694,26 @@ export interface FlatFeePricing {
|
|
|
6673
6694
|
ext?: ExtensionObject;
|
|
6674
6695
|
}
|
|
6675
6696
|
/**
|
|
6676
|
-
* Request parameters for activating a signal on
|
|
6697
|
+
* Request parameters for activating or deactivating a signal on deployment targets
|
|
6677
6698
|
*/
|
|
6678
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';
|
|
6679
6704
|
/**
|
|
6680
6705
|
* The universal identifier for the signal to activate
|
|
6681
6706
|
*/
|
|
6682
6707
|
signal_agent_segment_id: string;
|
|
6683
6708
|
/**
|
|
6684
|
-
* Target
|
|
6709
|
+
* Target destination(s) for activation. If the authenticated caller matches one of these destinations, activation keys will be included in the response.
|
|
6685
6710
|
*/
|
|
6686
|
-
|
|
6711
|
+
destinations: Destination[];
|
|
6687
6712
|
/**
|
|
6688
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.
|
|
6689
6714
|
*/
|
|
6690
6715
|
pricing_option_id?: string;
|
|
6691
|
-
|
|
6692
|
-
* The caller's account with the signals agent. Associates this activation with a commercial relationship established via sync_accounts.
|
|
6693
|
-
*/
|
|
6694
|
-
account_id?: string;
|
|
6716
|
+
account?: AccountReference;
|
|
6695
6717
|
/**
|
|
6696
6718
|
* The buyer's campaign reference for this activation. Enables the signals agent to correlate activations with subsequent report_usage calls.
|
|
6697
6719
|
*/
|
|
@@ -6810,13 +6832,13 @@ export interface DirectIdentifiersSource {
|
|
|
6810
6832
|
*/
|
|
6811
6833
|
export interface PropertyListFilters {
|
|
6812
6834
|
/**
|
|
6813
|
-
* 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.
|
|
6814
6836
|
*/
|
|
6815
|
-
countries_all
|
|
6837
|
+
countries_all?: string[];
|
|
6816
6838
|
/**
|
|
6817
|
-
* Property must support ANY of the listed channels.
|
|
6839
|
+
* Property must support ANY of the listed channels. When omitted, no channel restriction is applied.
|
|
6818
6840
|
*/
|
|
6819
|
-
channels_any
|
|
6841
|
+
channels_any?: MediaChannel[];
|
|
6820
6842
|
/**
|
|
6821
6843
|
* Filter to these property types
|
|
6822
6844
|
*/
|
|
@@ -7083,23 +7105,11 @@ export type ListContentStandardsResponse = {
|
|
|
7083
7105
|
* Array of content standards configurations matching the filter criteria
|
|
7084
7106
|
*/
|
|
7085
7107
|
standards: ContentStandards[];
|
|
7086
|
-
/**
|
|
7087
|
-
* Field must not be present in success response
|
|
7088
|
-
*/
|
|
7089
|
-
errors?: {
|
|
7090
|
-
[k: string]: unknown | undefined;
|
|
7091
|
-
};
|
|
7092
7108
|
pagination?: PaginationResponse;
|
|
7093
7109
|
context?: ContextObject;
|
|
7094
7110
|
ext?: ExtensionObject;
|
|
7095
7111
|
} | {
|
|
7096
7112
|
errors: Error[];
|
|
7097
|
-
/**
|
|
7098
|
-
* Field must not be present in error response
|
|
7099
|
-
*/
|
|
7100
|
-
standards?: {
|
|
7101
|
-
[k: string]: unknown | undefined;
|
|
7102
|
-
};
|
|
7103
7113
|
context?: ContextObject;
|
|
7104
7114
|
ext?: ExtensionObject;
|
|
7105
7115
|
};
|
|
@@ -7219,6 +7229,7 @@ export interface Artifact {
|
|
|
7219
7229
|
* Heading level (1-6), only for role=heading
|
|
7220
7230
|
*/
|
|
7221
7231
|
heading_level?: number;
|
|
7232
|
+
provenance?: Provenance;
|
|
7222
7233
|
} | {
|
|
7223
7234
|
type: 'image';
|
|
7224
7235
|
/**
|
|
@@ -7242,6 +7253,7 @@ export interface Artifact {
|
|
|
7242
7253
|
* Image height in pixels
|
|
7243
7254
|
*/
|
|
7244
7255
|
height?: number;
|
|
7256
|
+
provenance?: Provenance;
|
|
7245
7257
|
} | {
|
|
7246
7258
|
type: 'video';
|
|
7247
7259
|
/**
|
|
@@ -7265,6 +7277,7 @@ export interface Artifact {
|
|
|
7265
7277
|
* Video thumbnail URL
|
|
7266
7278
|
*/
|
|
7267
7279
|
thumbnail_url?: string;
|
|
7280
|
+
provenance?: Provenance;
|
|
7268
7281
|
} | {
|
|
7269
7282
|
type: 'audio';
|
|
7270
7283
|
/**
|
|
@@ -7284,6 +7297,7 @@ export interface Artifact {
|
|
|
7284
7297
|
* How the transcript was generated
|
|
7285
7298
|
*/
|
|
7286
7299
|
transcript_source?: 'original_script' | 'closed_captions' | 'generated';
|
|
7300
|
+
provenance?: Provenance;
|
|
7287
7301
|
})[];
|
|
7288
7302
|
/**
|
|
7289
7303
|
* Rich metadata extracted from the artifact
|
|
@@ -7314,6 +7328,7 @@ export interface Artifact {
|
|
|
7314
7328
|
*/
|
|
7315
7329
|
json_ld?: {}[];
|
|
7316
7330
|
};
|
|
7331
|
+
provenance?: Provenance;
|
|
7317
7332
|
/**
|
|
7318
7333
|
* Platform-specific identifiers for this artifact
|
|
7319
7334
|
*/
|
|
@@ -7356,12 +7371,6 @@ export interface GetContentStandardsRequest {
|
|
|
7356
7371
|
*/
|
|
7357
7372
|
export type GetContentStandardsResponse = ContentStandards | {
|
|
7358
7373
|
errors: Error[];
|
|
7359
|
-
/**
|
|
7360
|
-
* Field must not be present in error response
|
|
7361
|
-
*/
|
|
7362
|
-
standards_id?: {
|
|
7363
|
-
[k: string]: unknown | undefined;
|
|
7364
|
-
};
|
|
7365
7374
|
context?: ContextObject;
|
|
7366
7375
|
ext?: ExtensionObject;
|
|
7367
7376
|
};
|
|
@@ -7444,12 +7453,6 @@ export type CreateContentStandardsResponse = {
|
|
|
7444
7453
|
* Unique identifier for the created standards configuration
|
|
7445
7454
|
*/
|
|
7446
7455
|
standards_id: string;
|
|
7447
|
-
/**
|
|
7448
|
-
* Field must not be present in success response
|
|
7449
|
-
*/
|
|
7450
|
-
errors?: {
|
|
7451
|
-
[k: string]: unknown | undefined;
|
|
7452
|
-
};
|
|
7453
7456
|
context?: ContextObject;
|
|
7454
7457
|
ext?: ExtensionObject;
|
|
7455
7458
|
} | {
|
|
@@ -7458,12 +7461,6 @@ export type CreateContentStandardsResponse = {
|
|
|
7458
7461
|
* If the error is a scope conflict, the ID of the existing standards that conflict
|
|
7459
7462
|
*/
|
|
7460
7463
|
conflicting_standards_id?: string;
|
|
7461
|
-
/**
|
|
7462
|
-
* Field must not be present in error response
|
|
7463
|
-
*/
|
|
7464
|
-
standards_id?: {
|
|
7465
|
-
[k: string]: unknown | undefined;
|
|
7466
|
-
};
|
|
7467
7464
|
context?: ContextObject;
|
|
7468
7465
|
ext?: ExtensionObject;
|
|
7469
7466
|
};
|
|
@@ -7545,15 +7542,28 @@ export interface UpdateContentStandardsRequest {
|
|
|
7545
7542
|
/**
|
|
7546
7543
|
* Response from updating a content standards configuration
|
|
7547
7544
|
*/
|
|
7548
|
-
export
|
|
7545
|
+
export type UpdateContentStandardsResponse = UpdateContentStandardsSuccess | UpdateContentStandardsError;
|
|
7546
|
+
export interface UpdateContentStandardsSuccess {
|
|
7547
|
+
/**
|
|
7548
|
+
* Indicates the update was applied successfully
|
|
7549
|
+
*/
|
|
7550
|
+
success: true;
|
|
7549
7551
|
/**
|
|
7550
7552
|
* ID of the updated standards configuration
|
|
7551
7553
|
*/
|
|
7552
|
-
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;
|
|
7553
7563
|
/**
|
|
7554
7564
|
* Errors that occurred during the update
|
|
7555
7565
|
*/
|
|
7556
|
-
errors
|
|
7566
|
+
errors: Error[];
|
|
7557
7567
|
/**
|
|
7558
7568
|
* If scope change conflicts with another configuration, the ID of the conflicting standards
|
|
7559
7569
|
*/
|
|
@@ -7604,20 +7614,12 @@ export type CalibrateContentResponse = {
|
|
|
7604
7614
|
*/
|
|
7605
7615
|
explanation?: string;
|
|
7606
7616
|
}[];
|
|
7607
|
-
|
|
7608
|
-
|
|
7609
|
-
*/
|
|
7610
|
-
errors?: {
|
|
7611
|
-
[k: string]: unknown | undefined;
|
|
7612
|
-
};
|
|
7617
|
+
context?: ContextObject;
|
|
7618
|
+
ext?: ExtensionObject;
|
|
7613
7619
|
} | {
|
|
7614
7620
|
errors: Error[];
|
|
7615
|
-
|
|
7616
|
-
|
|
7617
|
-
*/
|
|
7618
|
-
verdict?: {
|
|
7619
|
-
[k: string]: unknown | undefined;
|
|
7620
|
-
};
|
|
7621
|
+
context?: ContextObject;
|
|
7622
|
+
ext?: ExtensionObject;
|
|
7621
7623
|
};
|
|
7622
7624
|
/**
|
|
7623
7625
|
* Request parameters for batch validating delivery records against content safety policies
|
|
@@ -7717,22 +7719,10 @@ export type ValidateContentDeliveryResponse = {
|
|
|
7717
7719
|
rule_id?: string;
|
|
7718
7720
|
}[];
|
|
7719
7721
|
}[];
|
|
7720
|
-
/**
|
|
7721
|
-
* Field must not be present in success response
|
|
7722
|
-
*/
|
|
7723
|
-
errors?: {
|
|
7724
|
-
[k: string]: unknown | undefined;
|
|
7725
|
-
};
|
|
7726
7722
|
context?: ContextObject;
|
|
7727
7723
|
ext?: ExtensionObject;
|
|
7728
7724
|
} | {
|
|
7729
7725
|
errors: Error[];
|
|
7730
|
-
/**
|
|
7731
|
-
* Field must not be present in error response
|
|
7732
|
-
*/
|
|
7733
|
-
summary?: {
|
|
7734
|
-
[k: string]: unknown | undefined;
|
|
7735
|
-
};
|
|
7736
7726
|
context?: ContextObject;
|
|
7737
7727
|
ext?: ExtensionObject;
|
|
7738
7728
|
};
|
|
@@ -7864,27 +7854,15 @@ export type GetMediaBuyArtifactsResponse = {
|
|
|
7864
7854
|
method?: 'random' | 'stratified' | 'recent' | 'failures_only';
|
|
7865
7855
|
};
|
|
7866
7856
|
pagination?: PaginationResponse;
|
|
7867
|
-
/**
|
|
7868
|
-
* Field must not be present in success response
|
|
7869
|
-
*/
|
|
7870
|
-
errors?: {
|
|
7871
|
-
[k: string]: unknown | undefined;
|
|
7872
|
-
};
|
|
7873
7857
|
context?: ContextObject;
|
|
7874
7858
|
ext?: ExtensionObject;
|
|
7875
7859
|
} | {
|
|
7876
7860
|
errors: Error[];
|
|
7877
|
-
/**
|
|
7878
|
-
* Field must not be present in error response
|
|
7879
|
-
*/
|
|
7880
|
-
media_buy_id?: {
|
|
7881
|
-
[k: string]: unknown | undefined;
|
|
7882
|
-
};
|
|
7883
7861
|
context?: ContextObject;
|
|
7884
7862
|
ext?: ExtensionObject;
|
|
7885
7863
|
};
|
|
7886
7864
|
/**
|
|
7887
|
-
* 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.).
|
|
7888
7866
|
*/
|
|
7889
7867
|
export interface GetCreativeFeaturesRequest {
|
|
7890
7868
|
creative_manifest: CreativeManifest;
|
|
@@ -7892,11 +7870,12 @@ export interface GetCreativeFeaturesRequest {
|
|
|
7892
7870
|
* Optional filter to specific features. If omitted, returns all available features.
|
|
7893
7871
|
*/
|
|
7894
7872
|
feature_ids?: string[];
|
|
7873
|
+
account?: AccountReference;
|
|
7895
7874
|
context?: ContextObject;
|
|
7896
7875
|
ext?: ExtensionObject;
|
|
7897
7876
|
}
|
|
7898
7877
|
/**
|
|
7899
|
-
* 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.
|
|
7900
7879
|
*/
|
|
7901
7880
|
export type GetCreativeFeaturesResponse = {
|
|
7902
7881
|
/**
|
|
@@ -7907,22 +7886,10 @@ export type GetCreativeFeaturesResponse = {
|
|
|
7907
7886
|
* URL to the vendor's full assessment report. The vendor controls what information is disclosed and access control.
|
|
7908
7887
|
*/
|
|
7909
7888
|
detail_url?: string;
|
|
7910
|
-
/**
|
|
7911
|
-
* Field must not be present in success response
|
|
7912
|
-
*/
|
|
7913
|
-
errors?: {
|
|
7914
|
-
[k: string]: unknown | undefined;
|
|
7915
|
-
};
|
|
7916
7889
|
context?: ContextObject;
|
|
7917
7890
|
ext?: ExtensionObject;
|
|
7918
7891
|
} | {
|
|
7919
7892
|
errors: Error[];
|
|
7920
|
-
/**
|
|
7921
|
-
* Field must not be present in error response
|
|
7922
|
-
*/
|
|
7923
|
-
results?: {
|
|
7924
|
-
[k: string]: unknown | undefined;
|
|
7925
|
-
};
|
|
7926
7893
|
context?: ContextObject;
|
|
7927
7894
|
ext?: ExtensionObject;
|
|
7928
7895
|
};
|
|
@@ -8577,7 +8544,7 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
8577
8544
|
*/
|
|
8578
8545
|
adcp: {
|
|
8579
8546
|
/**
|
|
8580
|
-
* 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.
|
|
8581
8548
|
*/
|
|
8582
8549
|
major_versions: number[];
|
|
8583
8550
|
};
|
|
@@ -8618,6 +8585,31 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
8618
8585
|
* Media-buy protocol capabilities. Only present if media_buy is in supported_protocols.
|
|
8619
8586
|
*/
|
|
8620
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
|
+
};
|
|
8621
8613
|
features?: MediaBuyFeatures;
|
|
8622
8614
|
/**
|
|
8623
8615
|
* Technical execution capabilities for media buying
|
|
@@ -8764,13 +8756,23 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
8764
8756
|
*/
|
|
8765
8757
|
audience_exclude?: boolean;
|
|
8766
8758
|
/**
|
|
8767
|
-
*
|
|
8759
|
+
* Keyword targeting capabilities. Presence indicates support for targeting_overlay.keyword_targets and keyword_targets_add/remove in update_media_buy.
|
|
8768
8760
|
*/
|
|
8769
|
-
keyword_targets?:
|
|
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
|
+
};
|
|
8770
8767
|
/**
|
|
8771
|
-
*
|
|
8768
|
+
* Negative keyword capabilities. Presence indicates support for targeting_overlay.negative_keywords and negative_keywords_add/remove in update_media_buy.
|
|
8772
8769
|
*/
|
|
8773
|
-
negative_keywords?:
|
|
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
|
+
};
|
|
8774
8776
|
/**
|
|
8775
8777
|
* Proximity targeting capabilities from arbitrary coordinates via targeting_overlay.geo_proximity.
|
|
8776
8778
|
*/
|
|
@@ -8799,9 +8801,13 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
8799
8801
|
*/
|
|
8800
8802
|
audience_targeting?: {
|
|
8801
8803
|
/**
|
|
8802
|
-
*
|
|
8804
|
+
* PII-derived identifier types accepted for audience matching. Buyers should only send identifiers the seller supports.
|
|
8805
|
+
*/
|
|
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.
|
|
8803
8809
|
*/
|
|
8804
|
-
|
|
8810
|
+
supports_platform_customer_id?: boolean;
|
|
8805
8811
|
/**
|
|
8806
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.
|
|
8807
8813
|
*/
|
|
@@ -8848,13 +8854,13 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
8848
8854
|
attribution_windows?: {
|
|
8849
8855
|
event_type?: EventType;
|
|
8850
8856
|
/**
|
|
8851
|
-
* Available click
|
|
8857
|
+
* Available post-click attribution windows (e.g. [{"interval": 7, "unit": "days"}])
|
|
8852
8858
|
*/
|
|
8853
|
-
|
|
8859
|
+
post_click: Duration[];
|
|
8854
8860
|
/**
|
|
8855
|
-
* Available view
|
|
8861
|
+
* Available post-view attribution windows (e.g. [{"interval": 1, "unit": "days"}])
|
|
8856
8862
|
*/
|
|
8857
|
-
|
|
8863
|
+
post_view?: Duration[];
|
|
8858
8864
|
}[];
|
|
8859
8865
|
};
|
|
8860
8866
|
/**
|
|
@@ -9020,9 +9026,9 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
9020
9026
|
*/
|
|
9021
9027
|
creative?: {
|
|
9022
9028
|
/**
|
|
9023
|
-
*
|
|
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.
|
|
9024
9030
|
*/
|
|
9025
|
-
|
|
9031
|
+
supports_compliance?: boolean;
|
|
9026
9032
|
};
|
|
9027
9033
|
/**
|
|
9028
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.
|
|
@@ -9212,19 +9218,7 @@ export interface ReportUsageRequest {
|
|
|
9212
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.
|
|
9213
9219
|
*/
|
|
9214
9220
|
idempotency_key?: string;
|
|
9215
|
-
|
|
9216
|
-
* The time range covered by this usage report. Applies to all records in the request.
|
|
9217
|
-
*/
|
|
9218
|
-
reporting_period: {
|
|
9219
|
-
/**
|
|
9220
|
-
* Start of the reporting period (inclusive), in UTC.
|
|
9221
|
-
*/
|
|
9222
|
-
start: string;
|
|
9223
|
-
/**
|
|
9224
|
-
* End of the reporting period (inclusive), in UTC.
|
|
9225
|
-
*/
|
|
9226
|
-
end: string;
|
|
9227
|
-
};
|
|
9221
|
+
reporting_period: DatetimeRange;
|
|
9228
9222
|
/**
|
|
9229
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.
|
|
9230
9224
|
*/
|
|
@@ -9290,22 +9284,23 @@ export interface ReportUsageResponse {
|
|
|
9290
9284
|
*/
|
|
9291
9285
|
export interface GetAccountFinancialsRequest {
|
|
9292
9286
|
account: AccountReference;
|
|
9293
|
-
|
|
9294
|
-
* Date range for the spend summary. Defaults to the current billing cycle if omitted.
|
|
9295
|
-
*/
|
|
9296
|
-
period?: {
|
|
9297
|
-
/**
|
|
9298
|
-
* Period start (ISO 8601 date)
|
|
9299
|
-
*/
|
|
9300
|
-
start: string;
|
|
9301
|
-
/**
|
|
9302
|
-
* Period end (ISO 8601 date)
|
|
9303
|
-
*/
|
|
9304
|
-
end: string;
|
|
9305
|
-
};
|
|
9287
|
+
period?: DateRange;
|
|
9306
9288
|
context?: ContextObject;
|
|
9307
9289
|
ext?: ExtensionObject;
|
|
9308
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
|
+
}
|
|
9309
9304
|
/**
|
|
9310
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.
|
|
9311
9306
|
*/
|
|
@@ -9319,19 +9314,11 @@ export interface GetAccountFinancialsSuccess {
|
|
|
9319
9314
|
* ISO 4217 currency code for all monetary amounts in this response
|
|
9320
9315
|
*/
|
|
9321
9316
|
currency: string;
|
|
9317
|
+
period: DateRange;
|
|
9322
9318
|
/**
|
|
9323
|
-
*
|
|
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.
|
|
9324
9320
|
*/
|
|
9325
|
-
|
|
9326
|
-
/**
|
|
9327
|
-
* Period start (ISO 8601 date)
|
|
9328
|
-
*/
|
|
9329
|
-
start: string;
|
|
9330
|
-
/**
|
|
9331
|
-
* Period end (ISO 8601 date)
|
|
9332
|
-
*/
|
|
9333
|
-
end: string;
|
|
9334
|
-
};
|
|
9321
|
+
timezone: string;
|
|
9335
9322
|
/**
|
|
9336
9323
|
* Spend summary for the period
|
|
9337
9324
|
*/
|
|
@@ -9400,13 +9387,7 @@ export interface GetAccountFinancialsSuccess {
|
|
|
9400
9387
|
* Seller-assigned invoice identifier
|
|
9401
9388
|
*/
|
|
9402
9389
|
invoice_id: string;
|
|
9403
|
-
|
|
9404
|
-
* Billing period covered by this invoice
|
|
9405
|
-
*/
|
|
9406
|
-
period?: {
|
|
9407
|
-
start: string;
|
|
9408
|
-
end: string;
|
|
9409
|
-
};
|
|
9390
|
+
period?: DateRange;
|
|
9410
9391
|
/**
|
|
9411
9392
|
* Invoice total in currency
|
|
9412
9393
|
*/
|