@adcp/client 4.0.2 → 4.2.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/.claude-plugin/plugin.json +12 -0
- 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 +26019 -11997
- package/dist/lib/types/schemas.generated.d.ts.map +1 -1
- package/dist/lib/types/schemas.generated.js +467 -420
- package/dist/lib/types/schemas.generated.js.map +1 -1
- package/dist/lib/types/tools.generated.d.ts +1005 -1003
- 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 +3 -1
- package/skills/adcp/SKILL.md +230 -0
|
@@ -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. v3 clients MUST include buying_mode. Sellers receiving requests from pre-v3 clients without buying_mode SHOULD default to 'brief'.
|
|
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
|
/**
|
|
@@ -2661,7 +2421,10 @@ export interface PackageRequest {
|
|
|
2661
2421
|
* Whether this package should be created in a paused state. Paused packages do not deliver impressions. Defaults to false.
|
|
2662
2422
|
*/
|
|
2663
2423
|
paused?: boolean;
|
|
2664
|
-
|
|
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; storyboard: sequential visual direction for video or multi-scene creative
|
|
3260
|
+
*/
|
|
3261
|
+
role: 'style_reference' | 'product_shot' | 'mood_board' | 'example_creative' | 'logo' | 'strategy_doc' | 'storyboard';
|
|
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
|
-
|
|
3499
|
-
|
|
3539
|
+
* ID of the creative to assign
|
|
3540
|
+
*/
|
|
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).
|
|
3500
3548
|
*/
|
|
3501
|
-
|
|
3502
|
-
|
|
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,14 +4160,14 @@ 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
|
*/
|
|
4110
4169
|
export interface GetMediaBuysRequest {
|
|
4111
|
-
account
|
|
4170
|
+
account?: AccountReference;
|
|
4112
4171
|
/**
|
|
4113
4172
|
* Array of publisher media buy IDs to retrieve. When omitted along with buyer_refs, returns a paginated set of accessible media buys matching status_filter.
|
|
4114
4173
|
*/
|
|
@@ -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
|
*/
|
|
@@ -5581,215 +5717,100 @@ export interface SyncCatalogsSuccess {
|
|
|
5581
5717
|
*/
|
|
5582
5718
|
items_rejected?: number;
|
|
5583
5719
|
/**
|
|
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?: {
|
|
5720
|
+
* Per-item issues reported by the platform (rejections, warnings). Only present when the platform performs item-level review.
|
|
5721
|
+
*/
|
|
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
|
+
}[];
|
|
5755
5733
|
/**
|
|
5756
|
-
*
|
|
5734
|
+
* ISO 8601 timestamp of when the most recent sync was accepted by the platform
|
|
5757
5735
|
*/
|
|
5758
|
-
|
|
5736
|
+
last_synced_at?: string;
|
|
5759
5737
|
/**
|
|
5760
|
-
*
|
|
5738
|
+
* ISO 8601 timestamp of when the platform will next fetch the feed URL. Only present for URL-based catalogs with update_frequency.
|
|
5761
5739
|
*/
|
|
5762
|
-
|
|
5740
|
+
next_fetch_at?: string;
|
|
5763
5741
|
/**
|
|
5764
|
-
*
|
|
5742
|
+
* Field names that were modified (only present when action='updated')
|
|
5765
5743
|
*/
|
|
5766
|
-
|
|
5744
|
+
changes?: string[];
|
|
5767
5745
|
/**
|
|
5768
|
-
*
|
|
5746
|
+
* Validation or processing errors (only present when action='failed')
|
|
5769
5747
|
*/
|
|
5770
|
-
|
|
5771
|
-
|
|
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
|
+
* Quality tier for generation. 'draft' produces fast, lower-fidelity output for iteration and review. 'production' produces full-quality output for final delivery. If omitted, the creative agent uses its own default. For non-generative transforms (e.g., format resizing), creative agents MAY ignore this field.
|
|
5774
|
+
*/
|
|
5775
|
+
export type CreativeQuality = 'draft' | 'production';
|
|
5776
|
+
/**
|
|
5777
|
+
* 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.
|
|
5778
|
+
*/
|
|
5779
|
+
export interface BuildCreativeRequest {
|
|
5785
5780
|
/**
|
|
5786
|
-
*
|
|
5781
|
+
* 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
5782
|
*/
|
|
5788
|
-
|
|
5783
|
+
message?: string;
|
|
5784
|
+
creative_manifest?: CreativeManifest;
|
|
5785
|
+
target_format_id: FormatID;
|
|
5786
|
+
brand?: BrandReference;
|
|
5787
|
+
quality?: CreativeQuality;
|
|
5789
5788
|
/**
|
|
5790
|
-
*
|
|
5789
|
+
* Maximum number of catalog items to use when generating. When a catalog asset contains more items than this limit, the creative agent selects the top items based on relevance or catalog ordering. When item_limit exceeds the format's max_items, the creative agent SHOULD use the lesser of the two. Ignored when the manifest contains no catalog assets.
|
|
5791
5790
|
*/
|
|
5792
|
-
|
|
5791
|
+
item_limit?: number;
|
|
5792
|
+
context?: ContextObject;
|
|
5793
|
+
ext?: ExtensionObject;
|
|
5794
|
+
}
|
|
5795
|
+
/**
|
|
5796
|
+
* 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.
|
|
5797
|
+
*/
|
|
5798
|
+
export interface CreativeManifest {
|
|
5799
|
+
format_id: FormatID;
|
|
5800
|
+
/**
|
|
5801
|
+
* 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.
|
|
5802
|
+
*
|
|
5803
|
+
* 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.
|
|
5804
|
+
*/
|
|
5805
|
+
assets: {
|
|
5806
|
+
/**
|
|
5807
|
+
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
5808
|
+
* via the `patternProperty` "^[a-z0-9_]+$".
|
|
5809
|
+
*/
|
|
5810
|
+
[k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset | MarkdownAsset | BriefAsset | CatalogAsset;
|
|
5811
|
+
};
|
|
5812
|
+
provenance?: Provenance;
|
|
5813
|
+
ext?: ExtensionObject;
|
|
5793
5814
|
}
|
|
5794
5815
|
/**
|
|
5795
5816
|
* 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.
|
|
@@ -5804,6 +5825,10 @@ export interface BuildCreativeSuccess {
|
|
|
5804
5825
|
* When true, this response contains simulated data from sandbox mode.
|
|
5805
5826
|
*/
|
|
5806
5827
|
sandbox?: boolean;
|
|
5828
|
+
/**
|
|
5829
|
+
* ISO 8601 timestamp when generated asset URLs in the manifest expire. Set to the earliest expiration across all generated assets. Re-build the creative after this time to get fresh URLs.
|
|
5830
|
+
*/
|
|
5831
|
+
expires_at?: string;
|
|
5807
5832
|
context?: ContextObject;
|
|
5808
5833
|
ext?: ExtensionObject;
|
|
5809
5834
|
}
|
|
@@ -5852,6 +5877,10 @@ export type PreviewCreativeRequest = {
|
|
|
5852
5877
|
*/
|
|
5853
5878
|
template_id?: string;
|
|
5854
5879
|
output_format?: PreviewOutputFormat;
|
|
5880
|
+
/**
|
|
5881
|
+
* Maximum number of catalog items to render in the preview. For catalog-driven generative formats, caps how many items are rendered per preview variant. When item_limit exceeds the format's max_items, the creative agent SHOULD use the lesser of the two. Ignored when the manifest contains no catalog assets. Creative agents SHOULD default to a reasonable sample when omitted and the catalog is large.
|
|
5882
|
+
*/
|
|
5883
|
+
item_limit?: number;
|
|
5855
5884
|
context?: ContextObject;
|
|
5856
5885
|
ext?: ExtensionObject;
|
|
5857
5886
|
} | {
|
|
@@ -5891,6 +5920,10 @@ export type PreviewCreativeRequest = {
|
|
|
5891
5920
|
*/
|
|
5892
5921
|
template_id?: string;
|
|
5893
5922
|
output_format?: PreviewOutputFormat;
|
|
5923
|
+
/**
|
|
5924
|
+
* Maximum number of catalog items to render in this preview.
|
|
5925
|
+
*/
|
|
5926
|
+
item_limit?: number;
|
|
5894
5927
|
}[];
|
|
5895
5928
|
output_format?: PreviewOutputFormat;
|
|
5896
5929
|
context?: ContextObject;
|
|
@@ -5917,14 +5950,10 @@ export type PreviewCreativeRequest = {
|
|
|
5917
5950
|
*/
|
|
5918
5951
|
export type PreviewOutputFormat = 'url' | 'html';
|
|
5919
5952
|
/**
|
|
5920
|
-
* Complete creative manifest with all required assets
|
|
5953
|
+
* Complete creative manifest with all required assets.
|
|
5921
5954
|
*/
|
|
5922
5955
|
export interface CreativeManifest1 {
|
|
5923
5956
|
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
5957
|
/**
|
|
5929
5958
|
* 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
5959
|
*
|
|
@@ -5935,8 +5964,9 @@ export interface CreativeManifest1 {
|
|
|
5935
5964
|
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
5936
5965
|
* via the `patternProperty` "^[a-z0-9_]+$".
|
|
5937
5966
|
*/
|
|
5938
|
-
[k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset;
|
|
5967
|
+
[k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset | MarkdownAsset | BriefAsset | CatalogAsset;
|
|
5939
5968
|
};
|
|
5969
|
+
provenance?: Provenance;
|
|
5940
5970
|
ext?: ExtensionObject;
|
|
5941
5971
|
}
|
|
5942
5972
|
/**
|
|
@@ -6153,9 +6183,15 @@ export interface PreviewCreativeBatchResponse {
|
|
|
6153
6183
|
ext?: ExtensionObject;
|
|
6154
6184
|
}
|
|
6155
6185
|
export interface PreviewBatchResultSuccess {
|
|
6186
|
+
/**
|
|
6187
|
+
* Indicates this preview request succeeded
|
|
6188
|
+
*/
|
|
6156
6189
|
success?: true;
|
|
6157
6190
|
}
|
|
6158
6191
|
export interface PreviewBatchResultError {
|
|
6192
|
+
/**
|
|
6193
|
+
* Indicates this preview request failed
|
|
6194
|
+
*/
|
|
6159
6195
|
success?: false;
|
|
6160
6196
|
}
|
|
6161
6197
|
/**
|
|
@@ -6226,19 +6262,7 @@ export type GetCreativeDeliveryRequest = {
|
|
|
6226
6262
|
* 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
6263
|
*/
|
|
6228
6264
|
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
|
-
};
|
|
6265
|
+
pagination?: PaginationRequest;
|
|
6242
6266
|
context?: ContextObject;
|
|
6243
6267
|
ext?: ExtensionObject;
|
|
6244
6268
|
};
|
|
@@ -6375,15 +6399,12 @@ export interface Identifier {
|
|
|
6375
6399
|
value: string;
|
|
6376
6400
|
}
|
|
6377
6401
|
/**
|
|
6378
|
-
* Request parameters for discovering signals. Use signal_spec for natural language discovery, signal_ids for exact lookups, or both (signal_ids
|
|
6402
|
+
* 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
6403
|
*/
|
|
6380
6404
|
export type GetSignalsRequest = {
|
|
6381
6405
|
[k: string]: unknown | undefined;
|
|
6382
6406
|
} & {
|
|
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;
|
|
6407
|
+
account?: AccountReference;
|
|
6387
6408
|
/**
|
|
6388
6409
|
* The buyer's campaign reference. Used to correlate signal discovery with subsequent report_usage calls.
|
|
6389
6410
|
*/
|
|
@@ -6393,7 +6414,7 @@ export type GetSignalsRequest = {
|
|
|
6393
6414
|
*/
|
|
6394
6415
|
signal_spec?: string;
|
|
6395
6416
|
/**
|
|
6396
|
-
* Specific signals to look up by data provider and ID. Returns exact matches from the data provider's catalog.
|
|
6417
|
+
* 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
6418
|
*/
|
|
6398
6419
|
signal_ids?: SignalID[];
|
|
6399
6420
|
/**
|
|
@@ -6593,6 +6614,23 @@ export interface GetSignalsResponse {
|
|
|
6593
6614
|
*/
|
|
6594
6615
|
description: string;
|
|
6595
6616
|
value_type?: SignalValueType;
|
|
6617
|
+
/**
|
|
6618
|
+
* Valid values for categorical signals. Present when value_type is 'categorical'. Buyers must use one of these values in SignalTargeting.values.
|
|
6619
|
+
*/
|
|
6620
|
+
categories?: string[];
|
|
6621
|
+
/**
|
|
6622
|
+
* Valid range for numeric signals. Present when value_type is 'numeric'.
|
|
6623
|
+
*/
|
|
6624
|
+
range?: {
|
|
6625
|
+
/**
|
|
6626
|
+
* Minimum value (inclusive)
|
|
6627
|
+
*/
|
|
6628
|
+
min: number;
|
|
6629
|
+
/**
|
|
6630
|
+
* Maximum value (inclusive)
|
|
6631
|
+
*/
|
|
6632
|
+
max: number;
|
|
6633
|
+
};
|
|
6596
6634
|
signal_type: SignalCatalogType;
|
|
6597
6635
|
/**
|
|
6598
6636
|
* Human-readable name of the data provider
|
|
@@ -6658,14 +6696,18 @@ export interface PercentOfMediaPricing {
|
|
|
6658
6696
|
ext?: ExtensionObject;
|
|
6659
6697
|
}
|
|
6660
6698
|
/**
|
|
6661
|
-
* Fixed charge per
|
|
6699
|
+
* Fixed charge per billing period, regardless of impressions or spend. Used for licensed data bundles and audience subscriptions.
|
|
6662
6700
|
*/
|
|
6663
6701
|
export interface FlatFeePricing {
|
|
6664
6702
|
model: 'flat_fee';
|
|
6665
6703
|
/**
|
|
6666
|
-
* Fixed charge for the
|
|
6704
|
+
* Fixed charge for the billing period
|
|
6667
6705
|
*/
|
|
6668
6706
|
amount: number;
|
|
6707
|
+
/**
|
|
6708
|
+
* Billing period for the flat fee.
|
|
6709
|
+
*/
|
|
6710
|
+
period: 'monthly' | 'quarterly' | 'annual' | 'campaign';
|
|
6669
6711
|
/**
|
|
6670
6712
|
* ISO 4217 currency code
|
|
6671
6713
|
*/
|
|
@@ -6673,25 +6715,26 @@ export interface FlatFeePricing {
|
|
|
6673
6715
|
ext?: ExtensionObject;
|
|
6674
6716
|
}
|
|
6675
6717
|
/**
|
|
6676
|
-
* Request parameters for activating a signal on
|
|
6718
|
+
* Request parameters for activating or deactivating a signal on deployment targets
|
|
6677
6719
|
*/
|
|
6678
6720
|
export interface ActivateSignalRequest {
|
|
6721
|
+
/**
|
|
6722
|
+
* 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.
|
|
6723
|
+
*/
|
|
6724
|
+
action?: 'activate' | 'deactivate';
|
|
6679
6725
|
/**
|
|
6680
6726
|
* The universal identifier for the signal to activate
|
|
6681
6727
|
*/
|
|
6682
6728
|
signal_agent_segment_id: string;
|
|
6683
6729
|
/**
|
|
6684
|
-
* Target
|
|
6730
|
+
* Target destination(s) for activation. If the authenticated caller matches one of these destinations, activation keys will be included in the response.
|
|
6685
6731
|
*/
|
|
6686
|
-
|
|
6732
|
+
destinations: Destination[];
|
|
6687
6733
|
/**
|
|
6688
6734
|
* 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
6735
|
*/
|
|
6690
6736
|
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;
|
|
6737
|
+
account?: AccountReference;
|
|
6695
6738
|
/**
|
|
6696
6739
|
* The buyer's campaign reference for this activation. Enables the signals agent to correlate activations with subsequent report_usage calls.
|
|
6697
6740
|
*/
|
|
@@ -6810,13 +6853,13 @@ export interface DirectIdentifiersSource {
|
|
|
6810
6853
|
*/
|
|
6811
6854
|
export interface PropertyListFilters {
|
|
6812
6855
|
/**
|
|
6813
|
-
* Property must have feature data for ALL listed countries (ISO codes).
|
|
6856
|
+
* Property must have feature data for ALL listed countries (ISO codes). When omitted, no country restriction is applied.
|
|
6814
6857
|
*/
|
|
6815
|
-
countries_all
|
|
6858
|
+
countries_all?: string[];
|
|
6816
6859
|
/**
|
|
6817
|
-
* Property must support ANY of the listed channels.
|
|
6860
|
+
* Property must support ANY of the listed channels. When omitted, no channel restriction is applied.
|
|
6818
6861
|
*/
|
|
6819
|
-
channels_any
|
|
6862
|
+
channels_any?: MediaChannel[];
|
|
6820
6863
|
/**
|
|
6821
6864
|
* Filter to these property types
|
|
6822
6865
|
*/
|
|
@@ -7083,23 +7126,11 @@ export type ListContentStandardsResponse = {
|
|
|
7083
7126
|
* Array of content standards configurations matching the filter criteria
|
|
7084
7127
|
*/
|
|
7085
7128
|
standards: ContentStandards[];
|
|
7086
|
-
/**
|
|
7087
|
-
* Field must not be present in success response
|
|
7088
|
-
*/
|
|
7089
|
-
errors?: {
|
|
7090
|
-
[k: string]: unknown | undefined;
|
|
7091
|
-
};
|
|
7092
7129
|
pagination?: PaginationResponse;
|
|
7093
7130
|
context?: ContextObject;
|
|
7094
7131
|
ext?: ExtensionObject;
|
|
7095
7132
|
} | {
|
|
7096
7133
|
errors: Error[];
|
|
7097
|
-
/**
|
|
7098
|
-
* Field must not be present in error response
|
|
7099
|
-
*/
|
|
7100
|
-
standards?: {
|
|
7101
|
-
[k: string]: unknown | undefined;
|
|
7102
|
-
};
|
|
7103
7134
|
context?: ContextObject;
|
|
7104
7135
|
ext?: ExtensionObject;
|
|
7105
7136
|
};
|
|
@@ -7219,6 +7250,7 @@ export interface Artifact {
|
|
|
7219
7250
|
* Heading level (1-6), only for role=heading
|
|
7220
7251
|
*/
|
|
7221
7252
|
heading_level?: number;
|
|
7253
|
+
provenance?: Provenance;
|
|
7222
7254
|
} | {
|
|
7223
7255
|
type: 'image';
|
|
7224
7256
|
/**
|
|
@@ -7242,6 +7274,7 @@ export interface Artifact {
|
|
|
7242
7274
|
* Image height in pixels
|
|
7243
7275
|
*/
|
|
7244
7276
|
height?: number;
|
|
7277
|
+
provenance?: Provenance;
|
|
7245
7278
|
} | {
|
|
7246
7279
|
type: 'video';
|
|
7247
7280
|
/**
|
|
@@ -7265,6 +7298,7 @@ export interface Artifact {
|
|
|
7265
7298
|
* Video thumbnail URL
|
|
7266
7299
|
*/
|
|
7267
7300
|
thumbnail_url?: string;
|
|
7301
|
+
provenance?: Provenance;
|
|
7268
7302
|
} | {
|
|
7269
7303
|
type: 'audio';
|
|
7270
7304
|
/**
|
|
@@ -7284,6 +7318,7 @@ export interface Artifact {
|
|
|
7284
7318
|
* How the transcript was generated
|
|
7285
7319
|
*/
|
|
7286
7320
|
transcript_source?: 'original_script' | 'closed_captions' | 'generated';
|
|
7321
|
+
provenance?: Provenance;
|
|
7287
7322
|
})[];
|
|
7288
7323
|
/**
|
|
7289
7324
|
* Rich metadata extracted from the artifact
|
|
@@ -7314,6 +7349,7 @@ export interface Artifact {
|
|
|
7314
7349
|
*/
|
|
7315
7350
|
json_ld?: {}[];
|
|
7316
7351
|
};
|
|
7352
|
+
provenance?: Provenance;
|
|
7317
7353
|
/**
|
|
7318
7354
|
* Platform-specific identifiers for this artifact
|
|
7319
7355
|
*/
|
|
@@ -7356,12 +7392,6 @@ export interface GetContentStandardsRequest {
|
|
|
7356
7392
|
*/
|
|
7357
7393
|
export type GetContentStandardsResponse = ContentStandards | {
|
|
7358
7394
|
errors: Error[];
|
|
7359
|
-
/**
|
|
7360
|
-
* Field must not be present in error response
|
|
7361
|
-
*/
|
|
7362
|
-
standards_id?: {
|
|
7363
|
-
[k: string]: unknown | undefined;
|
|
7364
|
-
};
|
|
7365
7395
|
context?: ContextObject;
|
|
7366
7396
|
ext?: ExtensionObject;
|
|
7367
7397
|
};
|
|
@@ -7444,12 +7474,6 @@ export type CreateContentStandardsResponse = {
|
|
|
7444
7474
|
* Unique identifier for the created standards configuration
|
|
7445
7475
|
*/
|
|
7446
7476
|
standards_id: string;
|
|
7447
|
-
/**
|
|
7448
|
-
* Field must not be present in success response
|
|
7449
|
-
*/
|
|
7450
|
-
errors?: {
|
|
7451
|
-
[k: string]: unknown | undefined;
|
|
7452
|
-
};
|
|
7453
7477
|
context?: ContextObject;
|
|
7454
7478
|
ext?: ExtensionObject;
|
|
7455
7479
|
} | {
|
|
@@ -7458,12 +7482,6 @@ export type CreateContentStandardsResponse = {
|
|
|
7458
7482
|
* If the error is a scope conflict, the ID of the existing standards that conflict
|
|
7459
7483
|
*/
|
|
7460
7484
|
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
7485
|
context?: ContextObject;
|
|
7468
7486
|
ext?: ExtensionObject;
|
|
7469
7487
|
};
|
|
@@ -7545,15 +7563,28 @@ export interface UpdateContentStandardsRequest {
|
|
|
7545
7563
|
/**
|
|
7546
7564
|
* Response from updating a content standards configuration
|
|
7547
7565
|
*/
|
|
7548
|
-
export
|
|
7566
|
+
export type UpdateContentStandardsResponse = UpdateContentStandardsSuccess | UpdateContentStandardsError;
|
|
7567
|
+
export interface UpdateContentStandardsSuccess {
|
|
7568
|
+
/**
|
|
7569
|
+
* Indicates the update was applied successfully
|
|
7570
|
+
*/
|
|
7571
|
+
success: true;
|
|
7549
7572
|
/**
|
|
7550
7573
|
* ID of the updated standards configuration
|
|
7551
7574
|
*/
|
|
7552
|
-
standards_id
|
|
7575
|
+
standards_id: string;
|
|
7576
|
+
context?: ContextObject;
|
|
7577
|
+
ext?: ExtensionObject;
|
|
7578
|
+
}
|
|
7579
|
+
export interface UpdateContentStandardsError {
|
|
7580
|
+
/**
|
|
7581
|
+
* Indicates the update failed
|
|
7582
|
+
*/
|
|
7583
|
+
success: false;
|
|
7553
7584
|
/**
|
|
7554
7585
|
* Errors that occurred during the update
|
|
7555
7586
|
*/
|
|
7556
|
-
errors
|
|
7587
|
+
errors: Error[];
|
|
7557
7588
|
/**
|
|
7558
7589
|
* If scope change conflicts with another configuration, the ID of the conflicting standards
|
|
7559
7590
|
*/
|
|
@@ -7604,20 +7635,12 @@ export type CalibrateContentResponse = {
|
|
|
7604
7635
|
*/
|
|
7605
7636
|
explanation?: string;
|
|
7606
7637
|
}[];
|
|
7607
|
-
|
|
7608
|
-
|
|
7609
|
-
*/
|
|
7610
|
-
errors?: {
|
|
7611
|
-
[k: string]: unknown | undefined;
|
|
7612
|
-
};
|
|
7638
|
+
context?: ContextObject;
|
|
7639
|
+
ext?: ExtensionObject;
|
|
7613
7640
|
} | {
|
|
7614
7641
|
errors: Error[];
|
|
7615
|
-
|
|
7616
|
-
|
|
7617
|
-
*/
|
|
7618
|
-
verdict?: {
|
|
7619
|
-
[k: string]: unknown | undefined;
|
|
7620
|
-
};
|
|
7642
|
+
context?: ContextObject;
|
|
7643
|
+
ext?: ExtensionObject;
|
|
7621
7644
|
};
|
|
7622
7645
|
/**
|
|
7623
7646
|
* Request parameters for batch validating delivery records against content safety policies
|
|
@@ -7717,22 +7740,10 @@ export type ValidateContentDeliveryResponse = {
|
|
|
7717
7740
|
rule_id?: string;
|
|
7718
7741
|
}[];
|
|
7719
7742
|
}[];
|
|
7720
|
-
/**
|
|
7721
|
-
* Field must not be present in success response
|
|
7722
|
-
*/
|
|
7723
|
-
errors?: {
|
|
7724
|
-
[k: string]: unknown | undefined;
|
|
7725
|
-
};
|
|
7726
7743
|
context?: ContextObject;
|
|
7727
7744
|
ext?: ExtensionObject;
|
|
7728
7745
|
} | {
|
|
7729
7746
|
errors: Error[];
|
|
7730
|
-
/**
|
|
7731
|
-
* Field must not be present in error response
|
|
7732
|
-
*/
|
|
7733
|
-
summary?: {
|
|
7734
|
-
[k: string]: unknown | undefined;
|
|
7735
|
-
};
|
|
7736
7747
|
context?: ContextObject;
|
|
7737
7748
|
ext?: ExtensionObject;
|
|
7738
7749
|
};
|
|
@@ -7864,27 +7875,15 @@ export type GetMediaBuyArtifactsResponse = {
|
|
|
7864
7875
|
method?: 'random' | 'stratified' | 'recent' | 'failures_only';
|
|
7865
7876
|
};
|
|
7866
7877
|
pagination?: PaginationResponse;
|
|
7867
|
-
/**
|
|
7868
|
-
* Field must not be present in success response
|
|
7869
|
-
*/
|
|
7870
|
-
errors?: {
|
|
7871
|
-
[k: string]: unknown | undefined;
|
|
7872
|
-
};
|
|
7873
7878
|
context?: ContextObject;
|
|
7874
7879
|
ext?: ExtensionObject;
|
|
7875
7880
|
} | {
|
|
7876
7881
|
errors: Error[];
|
|
7877
|
-
/**
|
|
7878
|
-
* Field must not be present in error response
|
|
7879
|
-
*/
|
|
7880
|
-
media_buy_id?: {
|
|
7881
|
-
[k: string]: unknown | undefined;
|
|
7882
|
-
};
|
|
7883
7882
|
context?: ContextObject;
|
|
7884
7883
|
ext?: ExtensionObject;
|
|
7885
7884
|
};
|
|
7886
7885
|
/**
|
|
7887
|
-
* Request payload for get_creative_features task.
|
|
7886
|
+
* 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
7887
|
*/
|
|
7889
7888
|
export interface GetCreativeFeaturesRequest {
|
|
7890
7889
|
creative_manifest: CreativeManifest;
|
|
@@ -7892,11 +7891,12 @@ export interface GetCreativeFeaturesRequest {
|
|
|
7892
7891
|
* Optional filter to specific features. If omitted, returns all available features.
|
|
7893
7892
|
*/
|
|
7894
7893
|
feature_ids?: string[];
|
|
7894
|
+
account?: AccountReference;
|
|
7895
7895
|
context?: ContextObject;
|
|
7896
7896
|
ext?: ExtensionObject;
|
|
7897
7897
|
}
|
|
7898
7898
|
/**
|
|
7899
|
-
* Response payload for get_creative_features task. Returns feature values
|
|
7899
|
+
* Response payload for the get_creative_features task. Returns scored feature values from the governance agent's evaluation of the submitted creative manifest.
|
|
7900
7900
|
*/
|
|
7901
7901
|
export type GetCreativeFeaturesResponse = {
|
|
7902
7902
|
/**
|
|
@@ -7907,22 +7907,10 @@ export type GetCreativeFeaturesResponse = {
|
|
|
7907
7907
|
* URL to the vendor's full assessment report. The vendor controls what information is disclosed and access control.
|
|
7908
7908
|
*/
|
|
7909
7909
|
detail_url?: string;
|
|
7910
|
-
/**
|
|
7911
|
-
* Field must not be present in success response
|
|
7912
|
-
*/
|
|
7913
|
-
errors?: {
|
|
7914
|
-
[k: string]: unknown | undefined;
|
|
7915
|
-
};
|
|
7916
7910
|
context?: ContextObject;
|
|
7917
7911
|
ext?: ExtensionObject;
|
|
7918
7912
|
} | {
|
|
7919
7913
|
errors: Error[];
|
|
7920
|
-
/**
|
|
7921
|
-
* Field must not be present in error response
|
|
7922
|
-
*/
|
|
7923
|
-
results?: {
|
|
7924
|
-
[k: string]: unknown | undefined;
|
|
7925
|
-
};
|
|
7926
7914
|
context?: ContextObject;
|
|
7927
7915
|
ext?: ExtensionObject;
|
|
7928
7916
|
};
|
|
@@ -8577,7 +8565,7 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
8577
8565
|
*/
|
|
8578
8566
|
adcp: {
|
|
8579
8567
|
/**
|
|
8580
|
-
* AdCP major versions supported by this seller. Major versions indicate breaking changes.
|
|
8568
|
+
* 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
8569
|
*/
|
|
8582
8570
|
major_versions: number[];
|
|
8583
8571
|
};
|
|
@@ -8618,6 +8606,31 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
8618
8606
|
* Media-buy protocol capabilities. Only present if media_buy is in supported_protocols.
|
|
8619
8607
|
*/
|
|
8620
8608
|
media_buy?: {
|
|
8609
|
+
/**
|
|
8610
|
+
* 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.
|
|
8611
|
+
*/
|
|
8612
|
+
supported_pricing_models?: PricingModel[];
|
|
8613
|
+
/**
|
|
8614
|
+
* 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.
|
|
8615
|
+
*/
|
|
8616
|
+
reporting?: {
|
|
8617
|
+
/**
|
|
8618
|
+
* Whether any products support date range filtering (date_range_support: 'date_range'). When false, all products return lifetime-only data.
|
|
8619
|
+
*/
|
|
8620
|
+
supports_date_range?: boolean;
|
|
8621
|
+
/**
|
|
8622
|
+
* Whether delivery reporting includes daily_breakdown at the media buy and/or package level.
|
|
8623
|
+
*/
|
|
8624
|
+
supports_daily_breakdown?: boolean;
|
|
8625
|
+
/**
|
|
8626
|
+
* Whether any products support webhook-based reporting notifications.
|
|
8627
|
+
*/
|
|
8628
|
+
supports_webhooks?: boolean;
|
|
8629
|
+
/**
|
|
8630
|
+
* 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).
|
|
8631
|
+
*/
|
|
8632
|
+
available_dimensions?: ('geo' | 'device_type' | 'device_platform' | 'audience' | 'placement' | 'creative' | 'keyword' | 'catalog_item')[];
|
|
8633
|
+
};
|
|
8621
8634
|
features?: MediaBuyFeatures;
|
|
8622
8635
|
/**
|
|
8623
8636
|
* Technical execution capabilities for media buying
|
|
@@ -8764,13 +8777,23 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
8764
8777
|
*/
|
|
8765
8778
|
audience_exclude?: boolean;
|
|
8766
8779
|
/**
|
|
8767
|
-
*
|
|
8780
|
+
* Keyword targeting capabilities. Presence indicates support for targeting_overlay.keyword_targets and keyword_targets_add/remove in update_media_buy.
|
|
8768
8781
|
*/
|
|
8769
|
-
keyword_targets?:
|
|
8782
|
+
keyword_targets?: {
|
|
8783
|
+
/**
|
|
8784
|
+
* Match types this seller supports for keyword targets. Sellers must reject goals with unsupported match types.
|
|
8785
|
+
*/
|
|
8786
|
+
supported_match_types: ('broad' | 'phrase' | 'exact')[];
|
|
8787
|
+
};
|
|
8770
8788
|
/**
|
|
8771
|
-
*
|
|
8789
|
+
* Negative keyword capabilities. Presence indicates support for targeting_overlay.negative_keywords and negative_keywords_add/remove in update_media_buy.
|
|
8772
8790
|
*/
|
|
8773
|
-
negative_keywords?:
|
|
8791
|
+
negative_keywords?: {
|
|
8792
|
+
/**
|
|
8793
|
+
* Match types this seller supports for negative keywords. Sellers must reject goals with unsupported match types.
|
|
8794
|
+
*/
|
|
8795
|
+
supported_match_types: ('broad' | 'phrase' | 'exact')[];
|
|
8796
|
+
};
|
|
8774
8797
|
/**
|
|
8775
8798
|
* Proximity targeting capabilities from arbitrary coordinates via targeting_overlay.geo_proximity.
|
|
8776
8799
|
*/
|
|
@@ -8799,9 +8822,13 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
8799
8822
|
*/
|
|
8800
8823
|
audience_targeting?: {
|
|
8801
8824
|
/**
|
|
8802
|
-
*
|
|
8825
|
+
* PII-derived identifier types accepted for audience matching. Buyers should only send identifiers the seller supports.
|
|
8826
|
+
*/
|
|
8827
|
+
supported_identifier_types: ('hashed_email' | 'hashed_phone')[];
|
|
8828
|
+
/**
|
|
8829
|
+
* 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
8830
|
*/
|
|
8804
|
-
|
|
8831
|
+
supports_platform_customer_id?: boolean;
|
|
8805
8832
|
/**
|
|
8806
8833
|
* 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
8834
|
*/
|
|
@@ -8848,13 +8875,13 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
8848
8875
|
attribution_windows?: {
|
|
8849
8876
|
event_type?: EventType;
|
|
8850
8877
|
/**
|
|
8851
|
-
* Available click
|
|
8878
|
+
* Available post-click attribution windows (e.g. [{"interval": 7, "unit": "days"}])
|
|
8852
8879
|
*/
|
|
8853
|
-
|
|
8880
|
+
post_click: Duration[];
|
|
8854
8881
|
/**
|
|
8855
|
-
* Available view
|
|
8882
|
+
* Available post-view attribution windows (e.g. [{"interval": 1, "unit": "days"}])
|
|
8856
8883
|
*/
|
|
8857
|
-
|
|
8884
|
+
post_view?: Duration[];
|
|
8858
8885
|
}[];
|
|
8859
8886
|
};
|
|
8860
8887
|
/**
|
|
@@ -9020,9 +9047,9 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
9020
9047
|
*/
|
|
9021
9048
|
creative?: {
|
|
9022
9049
|
/**
|
|
9023
|
-
*
|
|
9050
|
+
* 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
9051
|
*/
|
|
9025
|
-
|
|
9052
|
+
supports_compliance?: boolean;
|
|
9026
9053
|
};
|
|
9027
9054
|
/**
|
|
9028
9055
|
* 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 +9239,7 @@ export interface ReportUsageRequest {
|
|
|
9212
9239
|
* 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
9240
|
*/
|
|
9214
9241
|
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
|
-
};
|
|
9242
|
+
reporting_period: DatetimeRange;
|
|
9228
9243
|
/**
|
|
9229
9244
|
* 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
9245
|
*/
|
|
@@ -9290,22 +9305,23 @@ export interface ReportUsageResponse {
|
|
|
9290
9305
|
*/
|
|
9291
9306
|
export interface GetAccountFinancialsRequest {
|
|
9292
9307
|
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
|
-
};
|
|
9308
|
+
period?: DateRange;
|
|
9306
9309
|
context?: ContextObject;
|
|
9307
9310
|
ext?: ExtensionObject;
|
|
9308
9311
|
}
|
|
9312
|
+
/**
|
|
9313
|
+
* Date range for the spend summary. Defaults to the current billing cycle if omitted.
|
|
9314
|
+
*/
|
|
9315
|
+
export interface DateRange {
|
|
9316
|
+
/**
|
|
9317
|
+
* Start date (inclusive), ISO 8601
|
|
9318
|
+
*/
|
|
9319
|
+
start: string;
|
|
9320
|
+
/**
|
|
9321
|
+
* End date (inclusive), ISO 8601
|
|
9322
|
+
*/
|
|
9323
|
+
end: string;
|
|
9324
|
+
}
|
|
9309
9325
|
/**
|
|
9310
9326
|
* 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
9327
|
*/
|
|
@@ -9319,19 +9335,11 @@ export interface GetAccountFinancialsSuccess {
|
|
|
9319
9335
|
* ISO 4217 currency code for all monetary amounts in this response
|
|
9320
9336
|
*/
|
|
9321
9337
|
currency: string;
|
|
9338
|
+
period: DateRange;
|
|
9322
9339
|
/**
|
|
9323
|
-
*
|
|
9340
|
+
* 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
9341
|
*/
|
|
9325
|
-
|
|
9326
|
-
/**
|
|
9327
|
-
* Period start (ISO 8601 date)
|
|
9328
|
-
*/
|
|
9329
|
-
start: string;
|
|
9330
|
-
/**
|
|
9331
|
-
* Period end (ISO 8601 date)
|
|
9332
|
-
*/
|
|
9333
|
-
end: string;
|
|
9334
|
-
};
|
|
9342
|
+
timezone: string;
|
|
9335
9343
|
/**
|
|
9336
9344
|
* Spend summary for the period
|
|
9337
9345
|
*/
|
|
@@ -9400,13 +9408,7 @@ export interface GetAccountFinancialsSuccess {
|
|
|
9400
9408
|
* Seller-assigned invoice identifier
|
|
9401
9409
|
*/
|
|
9402
9410
|
invoice_id: string;
|
|
9403
|
-
|
|
9404
|
-
* Billing period covered by this invoice
|
|
9405
|
-
*/
|
|
9406
|
-
period?: {
|
|
9407
|
-
start: string;
|
|
9408
|
-
end: string;
|
|
9409
|
-
};
|
|
9411
|
+
period?: DateRange;
|
|
9410
9412
|
/**
|
|
9411
9413
|
* Invoice total in currency
|
|
9412
9414
|
*/
|