@adcp/client 3.11.2 → 3.13.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/README.md +35 -32
- package/dist/lib/adapters/property-list-adapter.d.ts.map +1 -1
- package/dist/lib/adapters/property-list-adapter.js +10 -5
- package/dist/lib/adapters/property-list-adapter.js.map +1 -1
- package/dist/lib/agents/index.generated.d.ts +33 -1
- package/dist/lib/agents/index.generated.d.ts.map +1 -1
- package/dist/lib/agents/index.generated.js +48 -0
- package/dist/lib/agents/index.generated.js.map +1 -1
- package/dist/lib/core/ADCPMultiAgentClient.d.ts +0 -1
- package/dist/lib/core/ADCPMultiAgentClient.d.ts.map +1 -1
- package/dist/lib/core/ADCPMultiAgentClient.js +0 -1
- package/dist/lib/core/ADCPMultiAgentClient.js.map +1 -1
- package/dist/lib/index.d.ts +4 -2
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +14 -3
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/testing/scenarios/creative.js +11 -1
- package/dist/lib/testing/scenarios/creative.js.map +1 -1
- package/dist/lib/testing/types.d.ts +12 -0
- package/dist/lib/testing/types.d.ts.map +1 -1
- package/dist/lib/types/adcp.d.ts +1 -0
- package/dist/lib/types/adcp.d.ts.map +1 -1
- package/dist/lib/types/core.generated.d.ts +660 -45
- package/dist/lib/types/core.generated.d.ts.map +1 -1
- package/dist/lib/types/core.generated.js +2 -2
- package/dist/lib/types/core.generated.js.map +1 -1
- package/dist/lib/types/schemas.generated.d.ts +5821 -3396
- package/dist/lib/types/schemas.generated.d.ts.map +1 -1
- package/dist/lib/types/schemas.generated.js +717 -177
- package/dist/lib/types/schemas.generated.js.map +1 -1
- package/dist/lib/types/tools.generated.d.ts +2198 -384
- package/dist/lib/types/tools.generated.d.ts.map +1 -1
- package/dist/lib/types/tools.generated.js +0 -3
- package/dist/lib/types/tools.generated.js.map +1 -1
- package/dist/lib/utils/capabilities.d.ts +4 -0
- package/dist/lib/utils/capabilities.d.ts.map +1 -1
- package/dist/lib/utils/capabilities.js +6 -1
- package/dist/lib/utils/capabilities.js.map +1 -1
- package/dist/lib/utils/index.d.ts +2 -1
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js +6 -1
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/utils/pagination.d.ts +31 -0
- package/dist/lib/utils/pagination.d.ts.map +1 -0
- package/dist/lib/utils/pagination.js +51 -0
- package/dist/lib/utils/pagination.js.map +1 -0
- package/dist/lib/utils/pricing-adapter.d.ts +4 -0
- package/dist/lib/utils/pricing-adapter.d.ts.map +1 -1
- package/dist/lib/utils/pricing-adapter.js +7 -0
- package/dist/lib/utils/pricing-adapter.js.map +1 -1
- package/dist/lib/version.d.ts +7 -7
- package/dist/lib/version.d.ts.map +1 -1
- package/dist/lib/version.js +6 -6
- package/dist/lib/version.js.map +1 -1
- package/package.json +2 -2
|
@@ -11,7 +11,7 @@ export type AssetContentType = 'image' | 'video' | 'audio' | 'text' | 'markdown'
|
|
|
11
11
|
*/
|
|
12
12
|
export type DeliveryType = 'guaranteed' | 'non_guaranteed';
|
|
13
13
|
/**
|
|
14
|
-
* High-level categories for creative formats
|
|
14
|
+
* DEPRECATED: High-level categories for creative formats. These categories are lossy abstractions that don't scale well to emerging ad formats. Use the assets array in Format objects to understand creative requirements instead - it provides precise information about what asset types are needed (video, image, text, etc.).
|
|
15
15
|
*/
|
|
16
16
|
export type FormatCategory = 'audio' | 'video' | 'display' | 'native' | 'dooh' | 'rich_media' | 'universal';
|
|
17
17
|
/**
|
|
@@ -178,12 +178,14 @@ export interface GetProductsRequest {
|
|
|
178
178
|
*/
|
|
179
179
|
proposal_id?: string;
|
|
180
180
|
brand_manifest?: BrandManifestReference;
|
|
181
|
+
product_selectors?: PromotedProducts;
|
|
181
182
|
/**
|
|
182
|
-
* Account
|
|
183
|
+
* Account ID for product lookup. Required when the seller declares account.required_for_products = true in capabilities. Returns products with pricing specific to this account's rate card.
|
|
183
184
|
*/
|
|
184
185
|
account_id?: string;
|
|
185
186
|
filters?: ProductFilters;
|
|
186
187
|
property_list?: PropertyListReference;
|
|
188
|
+
pagination?: PaginationRequest;
|
|
187
189
|
context?: ContextObject;
|
|
188
190
|
ext?: ExtensionObject;
|
|
189
191
|
}
|
|
@@ -241,29 +243,29 @@ export interface BrandManifest {
|
|
|
241
243
|
height?: number;
|
|
242
244
|
}[];
|
|
243
245
|
/**
|
|
244
|
-
* Brand color palette
|
|
246
|
+
* Brand color palette. Each role accepts a single hex color or an array of hex colors for brands with multiple values per role.
|
|
245
247
|
*/
|
|
246
248
|
colors?: {
|
|
247
249
|
/**
|
|
248
|
-
* Primary brand color
|
|
250
|
+
* Primary brand color(s)
|
|
249
251
|
*/
|
|
250
|
-
primary?: string;
|
|
252
|
+
primary?: string | [string, ...string[]];
|
|
251
253
|
/**
|
|
252
|
-
* Secondary brand color
|
|
254
|
+
* Secondary brand color(s)
|
|
253
255
|
*/
|
|
254
|
-
secondary?: string;
|
|
256
|
+
secondary?: string | [string, ...string[]];
|
|
255
257
|
/**
|
|
256
|
-
* Accent color
|
|
258
|
+
* Accent color(s)
|
|
257
259
|
*/
|
|
258
|
-
accent?: string;
|
|
260
|
+
accent?: string | [string, ...string[]];
|
|
259
261
|
/**
|
|
260
|
-
* Background color
|
|
262
|
+
* Background color(s)
|
|
261
263
|
*/
|
|
262
|
-
background?: string;
|
|
264
|
+
background?: string | [string, ...string[]];
|
|
263
265
|
/**
|
|
264
|
-
* Text color
|
|
266
|
+
* Text color(s)
|
|
265
267
|
*/
|
|
266
|
-
text?: string;
|
|
268
|
+
text?: string | [string, ...string[]];
|
|
267
269
|
};
|
|
268
270
|
/**
|
|
269
271
|
* Brand typography guidelines
|
|
@@ -285,7 +287,7 @@ export interface BrandManifest {
|
|
|
285
287
|
/**
|
|
286
288
|
* Brand voice and messaging tone guidelines for creative agents.
|
|
287
289
|
*/
|
|
288
|
-
tone?: {
|
|
290
|
+
tone?: string | {
|
|
289
291
|
/**
|
|
290
292
|
* High-level voice descriptor (e.g., 'warm and inviting', 'professional and trustworthy')
|
|
291
293
|
*/
|
|
@@ -498,6 +500,32 @@ export interface BrandManifest {
|
|
|
498
500
|
};
|
|
499
501
|
[k: string]: unknown | undefined;
|
|
500
502
|
}
|
|
503
|
+
/**
|
|
504
|
+
* Selectors to filter the brand manifest product catalog for product discovery. When provided, sellers should only return advertising products where the selected catalog items have matches. Uses the same selection methods as promoted-offerings.
|
|
505
|
+
*/
|
|
506
|
+
export interface PromotedProducts {
|
|
507
|
+
/**
|
|
508
|
+
* GTIN product identifiers for cross-retailer catalog matching. Accepts standard GTIN formats (GTIN-8, UPC-A/GTIN-12, EAN-13/GTIN-13, GTIN-14).
|
|
509
|
+
*/
|
|
510
|
+
manifest_gtins?: string[];
|
|
511
|
+
/**
|
|
512
|
+
* Direct product SKU references from the brand manifest product catalog
|
|
513
|
+
*/
|
|
514
|
+
manifest_skus?: string[];
|
|
515
|
+
/**
|
|
516
|
+
* Select products by tags from the brand manifest product catalog (e.g., 'organic', 'sauces', 'holiday')
|
|
517
|
+
*/
|
|
518
|
+
manifest_tags?: string[];
|
|
519
|
+
/**
|
|
520
|
+
* Select products from a specific category in the brand manifest product catalog (e.g., 'beverages/soft-drinks', 'food/sauces')
|
|
521
|
+
*/
|
|
522
|
+
manifest_category?: string;
|
|
523
|
+
/**
|
|
524
|
+
* Natural language query to select products from the brand manifest (e.g., 'all Kraft Heinz pasta sauces', 'organic products under $20')
|
|
525
|
+
*/
|
|
526
|
+
manifest_query?: string;
|
|
527
|
+
[k: string]: unknown | undefined;
|
|
528
|
+
}
|
|
501
529
|
/**
|
|
502
530
|
* Structured filters for product discovery
|
|
503
531
|
*/
|
|
@@ -509,12 +537,16 @@ export interface ProductFilters {
|
|
|
509
537
|
is_fixed_price?: boolean;
|
|
510
538
|
/**
|
|
511
539
|
* Filter by format types
|
|
540
|
+
*
|
|
541
|
+
* @minItems 1
|
|
512
542
|
*/
|
|
513
|
-
format_types?: FormatCategory[];
|
|
543
|
+
format_types?: [FormatCategory, ...FormatCategory[]];
|
|
514
544
|
/**
|
|
515
545
|
* Filter by specific format IDs
|
|
546
|
+
*
|
|
547
|
+
* @minItems 1
|
|
516
548
|
*/
|
|
517
|
-
format_ids?: FormatID[];
|
|
549
|
+
format_ids?: [FormatID, ...FormatID[]];
|
|
518
550
|
/**
|
|
519
551
|
* Only return products accepting IAB standard formats
|
|
520
552
|
*/
|
|
@@ -539,45 +571,77 @@ export interface ProductFilters {
|
|
|
539
571
|
};
|
|
540
572
|
/**
|
|
541
573
|
* Filter by country coverage using ISO 3166-1 alpha-2 codes (e.g., ['US', 'CA', 'GB']). Works for all inventory types.
|
|
574
|
+
*
|
|
575
|
+
* @minItems 1
|
|
542
576
|
*/
|
|
543
|
-
countries?: string[];
|
|
577
|
+
countries?: [string, ...string[]];
|
|
544
578
|
/**
|
|
545
579
|
* Filter by region coverage using ISO 3166-2 codes (e.g., ['US-NY', 'US-CA', 'GB-SCT']). Use for locally-bound inventory (regional OOH, local TV) where products have region-specific coverage.
|
|
580
|
+
*
|
|
581
|
+
* @minItems 1
|
|
546
582
|
*/
|
|
547
|
-
regions?: string[];
|
|
583
|
+
regions?: [string, ...string[]];
|
|
548
584
|
/**
|
|
549
585
|
* Filter by metro coverage for locally-bound inventory (radio, DOOH, local TV). Use when products have DMA/metro-specific coverage. For digital inventory where products have broad coverage, use required_geo_targeting instead to filter by seller capability.
|
|
586
|
+
*
|
|
587
|
+
* @minItems 1
|
|
550
588
|
*/
|
|
551
|
-
metros?:
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
589
|
+
metros?: [
|
|
590
|
+
{
|
|
591
|
+
system: MetroAreaSystem;
|
|
592
|
+
/**
|
|
593
|
+
* Metro code within the system (e.g., '501' for NYC DMA)
|
|
594
|
+
*/
|
|
595
|
+
code: string;
|
|
596
|
+
},
|
|
597
|
+
...{
|
|
598
|
+
system: MetroAreaSystem;
|
|
599
|
+
/**
|
|
600
|
+
* Metro code within the system (e.g., '501' for NYC DMA)
|
|
601
|
+
*/
|
|
602
|
+
code: string;
|
|
603
|
+
}[]
|
|
604
|
+
];
|
|
558
605
|
/**
|
|
559
|
-
* Filter by advertising channels (e.g., ['display', '
|
|
606
|
+
* Filter by advertising channels (e.g., ['display', 'ctv', 'dooh'])
|
|
607
|
+
*
|
|
608
|
+
* @minItems 1
|
|
560
609
|
*/
|
|
561
|
-
channels?: MediaChannel[];
|
|
610
|
+
channels?: [MediaChannel, ...MediaChannel[]];
|
|
562
611
|
/**
|
|
563
612
|
* Filter to products executable through specific agentic ad exchanges. URLs are canonical identifiers.
|
|
613
|
+
*
|
|
614
|
+
* @minItems 1
|
|
564
615
|
*/
|
|
565
|
-
required_axe_integrations?: string[];
|
|
616
|
+
required_axe_integrations?: [string, ...string[]];
|
|
566
617
|
required_features?: MediaBuyFeatures;
|
|
567
618
|
/**
|
|
568
619
|
* Filter to products from sellers supporting specific geo targeting capabilities. Each entry specifies a targeting level (country, region, metro, postal_area) and optionally a system for levels that have multiple classification systems.
|
|
620
|
+
*
|
|
621
|
+
* @minItems 1
|
|
569
622
|
*/
|
|
570
|
-
required_geo_targeting?:
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
623
|
+
required_geo_targeting?: [
|
|
624
|
+
{
|
|
625
|
+
level: GeographicTargetingLevel;
|
|
626
|
+
/**
|
|
627
|
+
* Classification system within the level. Required for metro (e.g., 'nielsen_dma') and postal_area (e.g., 'us_zip'). Not applicable for country/region which use ISO standards.
|
|
628
|
+
*/
|
|
629
|
+
system?: string;
|
|
630
|
+
},
|
|
631
|
+
...{
|
|
632
|
+
level: GeographicTargetingLevel;
|
|
633
|
+
/**
|
|
634
|
+
* Classification system within the level. Required for metro (e.g., 'nielsen_dma') and postal_area (e.g., 'us_zip'). Not applicable for country/region which use ISO standards.
|
|
635
|
+
*/
|
|
636
|
+
system?: string;
|
|
637
|
+
}[]
|
|
638
|
+
];
|
|
577
639
|
/**
|
|
578
640
|
* Filter to products supporting specific signals from data provider catalogs. Products must have the requested signals in their data_provider_signals and signal_targeting_allowed must be true (or all signals requested).
|
|
641
|
+
*
|
|
642
|
+
* @minItems 1
|
|
579
643
|
*/
|
|
580
|
-
signal_targeting?: SignalTargeting[];
|
|
644
|
+
signal_targeting?: [SignalTargeting, ...SignalTargeting[]];
|
|
581
645
|
[k: string]: unknown | undefined;
|
|
582
646
|
}
|
|
583
647
|
/**
|
|
@@ -622,6 +686,10 @@ export interface MediaBuyFeatures {
|
|
|
622
686
|
* Full support for content_standards configuration including sampling rates and category filtering
|
|
623
687
|
*/
|
|
624
688
|
content_standards?: boolean;
|
|
689
|
+
/**
|
|
690
|
+
* Supports sync_event_sources and log_event tasks for conversion event tracking
|
|
691
|
+
*/
|
|
692
|
+
conversion_tracking?: boolean;
|
|
625
693
|
[k: string]: boolean | undefined;
|
|
626
694
|
}
|
|
627
695
|
/**
|
|
@@ -641,6 +709,19 @@ export interface PropertyListReference {
|
|
|
641
709
|
*/
|
|
642
710
|
auth_token?: string;
|
|
643
711
|
}
|
|
712
|
+
/**
|
|
713
|
+
* Standard cursor-based pagination parameters for list operations
|
|
714
|
+
*/
|
|
715
|
+
export interface PaginationRequest {
|
|
716
|
+
/**
|
|
717
|
+
* Maximum number of items to return per page
|
|
718
|
+
*/
|
|
719
|
+
max_results?: number;
|
|
720
|
+
/**
|
|
721
|
+
* Opaque cursor from a previous response to fetch the next page
|
|
722
|
+
*/
|
|
723
|
+
cursor?: string;
|
|
724
|
+
}
|
|
644
725
|
/**
|
|
645
726
|
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
646
727
|
*/
|
|
@@ -708,9 +789,17 @@ export type PropertyID = string;
|
|
|
708
789
|
*/
|
|
709
790
|
export type PropertyTag = string;
|
|
710
791
|
/**
|
|
711
|
-
*
|
|
792
|
+
* Standardized advertising media channels describing how buyers allocate budget. Channels are planning abstractions, not technical substrates. See the Media Channel Taxonomy specification for detailed definitions.
|
|
793
|
+
*/
|
|
794
|
+
export type PricingOption = CPMPricingOption | VCPMPricingOption | CPCPricingOption | CPCVPricingOption | CPVPricingOption | CPPPricingOption | CPAPricingOption | FlatRatePricingOption | TimeBasedPricingOption;
|
|
795
|
+
/**
|
|
796
|
+
* Measurement system for the demographic field. Defaults to nielsen when omitted.
|
|
712
797
|
*/
|
|
713
|
-
export type
|
|
798
|
+
export type DemographicSystem = 'nielsen' | 'barb' | 'agf' | 'oztam' | 'mediametrie' | 'custom';
|
|
799
|
+
/**
|
|
800
|
+
* Standard marketing event types for event logging, aligned with IAB ECAPI
|
|
801
|
+
*/
|
|
802
|
+
export type EventType = 'page_view' | 'view_content' | 'select_content' | 'select_item' | 'search' | 'share' | 'add_to_cart' | 'remove_from_cart' | 'viewed_cart' | 'add_to_wishlist' | 'initiate_checkout' | 'add_payment_info' | 'purchase' | 'refund' | 'lead' | 'qualify_lead' | 'close_convert_lead' | 'disqualify_lead' | 'complete_registration' | 'subscribe' | 'start_trial' | 'app_install' | 'app_launch' | 'contact' | 'schedule' | 'donate' | 'submit_application' | 'custom';
|
|
714
803
|
/**
|
|
715
804
|
* Available frequencies for delivery reports and metrics updates
|
|
716
805
|
*/
|
|
@@ -718,7 +807,7 @@ export type ReportingFrequency = 'hourly' | 'daily' | 'monthly';
|
|
|
718
807
|
/**
|
|
719
808
|
* Standard delivery and performance metrics available for reporting
|
|
720
809
|
*/
|
|
721
|
-
export type AvailableMetric = 'impressions' | 'spend' | 'clicks' | 'ctr' | 'video_completions' | 'completion_rate' | 'conversions' | 'viewability' | 'engagement_rate';
|
|
810
|
+
export type AvailableMetric = 'impressions' | 'spend' | 'clicks' | 'ctr' | 'video_completions' | 'completion_rate' | 'conversions' | 'conversion_value' | 'roas' | 'cost_per_acquisition' | 'new_to_brand_rate' | 'viewability' | 'engagement_rate' | 'views' | 'completed_views' | 'leads' | 'reach' | 'frequency' | 'grps' | 'quartile_data' | 'dooh_metrics' | 'cost_per_click';
|
|
722
811
|
/**
|
|
723
812
|
* Co-branding requirement
|
|
724
813
|
*/
|
|
@@ -773,6 +862,30 @@ export type DataProviderSignalSelector = {
|
|
|
773
862
|
signal_tags: [string, ...string[]];
|
|
774
863
|
[k: string]: unknown | undefined;
|
|
775
864
|
};
|
|
865
|
+
/**
|
|
866
|
+
* Where the conversion event originated
|
|
867
|
+
*/
|
|
868
|
+
export type ActionSource = 'website' | 'app' | 'offline' | 'phone_call' | 'chat' | 'email' | 'in_store' | 'system_generated' | 'other';
|
|
869
|
+
/**
|
|
870
|
+
* Days of the week for daypart targeting
|
|
871
|
+
*/
|
|
872
|
+
export type DayOfWeek = 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday';
|
|
873
|
+
/**
|
|
874
|
+
* How to interpret the points array. 'spend' (default when omitted): points at ascending budget levels. 'reach_freq': points at ascending reach/frequency targets. 'weekly'/'daily': metrics are per-period values. 'clicks'/'conversions': points at ascending outcome targets.
|
|
875
|
+
*/
|
|
876
|
+
export type ForecastRangeUnit = 'spend' | 'reach_freq' | 'weekly' | 'daily' | 'clicks' | 'conversions';
|
|
877
|
+
/**
|
|
878
|
+
* Method used to produce this forecast
|
|
879
|
+
*/
|
|
880
|
+
export type ForecastMethod = 'estimate' | 'modeled' | 'guaranteed';
|
|
881
|
+
/**
|
|
882
|
+
* Measurement system for the demographic field. Ensures buyer and seller agree on demographic notation.
|
|
883
|
+
*/
|
|
884
|
+
export type DemographicSystem1 = 'nielsen' | 'barb' | 'agf' | 'oztam' | 'mediametrie' | 'custom';
|
|
885
|
+
/**
|
|
886
|
+
* Unit of measurement for reach and audience_size metrics in this forecast. Required for cross-channel forecast comparison.
|
|
887
|
+
*/
|
|
888
|
+
export type ReachUnit = 'individuals' | 'households' | 'devices' | 'accounts' | 'cookies' | 'custom';
|
|
776
889
|
/**
|
|
777
890
|
* Response payload for get_products task
|
|
778
891
|
*/
|
|
@@ -793,6 +906,11 @@ export interface GetProductsResponse {
|
|
|
793
906
|
* [AdCP 3.0] Indicates whether property_list filtering was applied. True if the agent filtered products based on the provided property_list. Absent or false if property_list was not provided or not supported by this agent.
|
|
794
907
|
*/
|
|
795
908
|
property_list_applied?: boolean;
|
|
909
|
+
/**
|
|
910
|
+
* Indicates whether product_selectors filtering was applied. True if the seller filtered results based on the provided product_selectors. Absent or false if product_selectors was not provided or not supported by this agent.
|
|
911
|
+
*/
|
|
912
|
+
product_selectors_applied?: boolean;
|
|
913
|
+
pagination?: PaginationResponse;
|
|
796
914
|
context?: ContextObject;
|
|
797
915
|
ext?: ExtensionObject;
|
|
798
916
|
}
|
|
@@ -818,6 +936,10 @@ export interface Product {
|
|
|
818
936
|
* @minItems 1
|
|
819
937
|
*/
|
|
820
938
|
publisher_properties: [PublisherPropertySelector, ...PublisherPropertySelector[]];
|
|
939
|
+
/**
|
|
940
|
+
* Advertising channels this product is sold as. Products inherit from their properties' supported_channels but may narrow the scope. For example, a product covering YouTube properties might be sold as ['ctv'] even though those properties support ['olv', 'social', 'ctv'].
|
|
941
|
+
*/
|
|
942
|
+
channels?: MediaChannel[];
|
|
821
943
|
/**
|
|
822
944
|
* Array of supported creative format IDs - structured format_id objects with agent_url and id
|
|
823
945
|
*/
|
|
@@ -871,6 +993,48 @@ export interface Product {
|
|
|
871
993
|
* Whether buyers can filter this product to a subset of its data_provider_signals. When false (default), the product includes all listed signals as a bundle. When true, buyers can target specific signals.
|
|
872
994
|
*/
|
|
873
995
|
signal_targeting_allowed?: boolean;
|
|
996
|
+
/**
|
|
997
|
+
* Conversion tracking for this product. Presence indicates the product supports conversion-optimized delivery. Seller-level capabilities (supported event types, UID types, attribution windows) are declared in get_adcp_capabilities.
|
|
998
|
+
*/
|
|
999
|
+
conversion_tracking?: {
|
|
1000
|
+
/**
|
|
1001
|
+
* Action sources relevant to this product (e.g. a retail media product might have 'in_store' and 'website', while a display product might only have 'website')
|
|
1002
|
+
*
|
|
1003
|
+
* @minItems 1
|
|
1004
|
+
*/
|
|
1005
|
+
action_sources?: [ActionSource, ...ActionSource[]];
|
|
1006
|
+
/**
|
|
1007
|
+
* Optimization strategies this product supports when an optimization_goal is set on a package
|
|
1008
|
+
*
|
|
1009
|
+
* @minItems 1
|
|
1010
|
+
*/
|
|
1011
|
+
supported_optimization_strategies?: [
|
|
1012
|
+
'maximize_conversions' | 'target_cpa' | 'target_roas',
|
|
1013
|
+
...('maximize_conversions' | 'target_cpa' | 'target_roas')[]
|
|
1014
|
+
];
|
|
1015
|
+
/**
|
|
1016
|
+
* Whether the seller provides its own always-on measurement (e.g. Amazon sales attribution for Amazon advertisers). When true, sync_event_sources response will include seller-managed event sources with managed_by='seller'.
|
|
1017
|
+
*/
|
|
1018
|
+
platform_managed?: boolean;
|
|
1019
|
+
[k: string]: unknown | undefined;
|
|
1020
|
+
};
|
|
1021
|
+
/**
|
|
1022
|
+
* When the buyer provides a brand_manifest with product_catalog, indicates which of the buyer's catalog items are eligible for this product. Enables buyers to make informed product_selector choices in create_media_buy. Only present for products where catalog matching is relevant (e.g. sponsored product listings on retail media). Sellers SHOULD include at least one of matched_gtins or matched_skus.
|
|
1023
|
+
*/
|
|
1024
|
+
catalog_match?: {
|
|
1025
|
+
/**
|
|
1026
|
+
* GTINs from the buyer's catalog that are eligible on this product's inventory. Buyers can use these values in product_selectors.manifest_gtins when creating media buys. Standard GTIN formats (GTIN-8 through GTIN-14).
|
|
1027
|
+
*/
|
|
1028
|
+
matched_gtins?: string[];
|
|
1029
|
+
/**
|
|
1030
|
+
* SKUs from the buyer's catalog that are eligible on this product's inventory. Buyers can use these values in product_selectors.manifest_skus when creating media buys.
|
|
1031
|
+
*/
|
|
1032
|
+
matched_skus?: string[];
|
|
1033
|
+
/**
|
|
1034
|
+
* Total catalog items evaluated from the buyer's feed.
|
|
1035
|
+
*/
|
|
1036
|
+
submitted_count: number;
|
|
1037
|
+
};
|
|
874
1038
|
/**
|
|
875
1039
|
* Explanation of why this product matches the brief (only included when brief is provided)
|
|
876
1040
|
*/
|
|
@@ -1239,8 +1403,9 @@ export interface CPPPricingOption {
|
|
|
1239
1403
|
* CPP-specific parameters for demographic targeting
|
|
1240
1404
|
*/
|
|
1241
1405
|
parameters: {
|
|
1406
|
+
demographic_system?: DemographicSystem;
|
|
1242
1407
|
/**
|
|
1243
|
-
* Target demographic
|
|
1408
|
+
* Target demographic code within the specified demographic_system (e.g., P18-49 for Nielsen, ABC1 Adults for BARB)
|
|
1244
1409
|
*/
|
|
1245
1410
|
demographic: string;
|
|
1246
1411
|
/**
|
|
@@ -1277,6 +1442,44 @@ export interface PriceGuidance5 {
|
|
|
1277
1442
|
p90?: number;
|
|
1278
1443
|
[k: string]: unknown | undefined;
|
|
1279
1444
|
}
|
|
1445
|
+
/**
|
|
1446
|
+
* Cost Per Acquisition pricing. Advertiser pays a fixed price when a specified conversion event occurs. The event_type field declares which event triggers billing (e.g., purchase, lead, app_install).
|
|
1447
|
+
*/
|
|
1448
|
+
export interface CPAPricingOption {
|
|
1449
|
+
/**
|
|
1450
|
+
* Unique identifier for this pricing option within the product
|
|
1451
|
+
*/
|
|
1452
|
+
pricing_option_id: string;
|
|
1453
|
+
/**
|
|
1454
|
+
* Cost per acquisition (conversion event)
|
|
1455
|
+
*/
|
|
1456
|
+
pricing_model: 'cpa';
|
|
1457
|
+
/**
|
|
1458
|
+
* The conversion event type that triggers billing (e.g., purchase, lead, app_install)
|
|
1459
|
+
*/
|
|
1460
|
+
event_type: EventType;
|
|
1461
|
+
/**
|
|
1462
|
+
* Name of the custom event when event_type is 'custom'. Required when event_type is 'custom', ignored otherwise.
|
|
1463
|
+
*/
|
|
1464
|
+
custom_event_name?: string;
|
|
1465
|
+
/**
|
|
1466
|
+
* When present, only events from this specific event source count toward billing. Allows different CPA rates for different sources (e.g., online vs in-store purchases). Must match an event source configured via sync_event_sources.
|
|
1467
|
+
*/
|
|
1468
|
+
event_source_id?: string;
|
|
1469
|
+
/**
|
|
1470
|
+
* ISO 4217 currency code
|
|
1471
|
+
*/
|
|
1472
|
+
currency: string;
|
|
1473
|
+
/**
|
|
1474
|
+
* Fixed price per acquisition in the specified currency
|
|
1475
|
+
*/
|
|
1476
|
+
fixed_price: number;
|
|
1477
|
+
/**
|
|
1478
|
+
* Minimum spend requirement per package using this pricing option, in the specified currency
|
|
1479
|
+
*/
|
|
1480
|
+
min_spend_per_package?: number;
|
|
1481
|
+
[k: string]: unknown | undefined;
|
|
1482
|
+
}
|
|
1280
1483
|
/**
|
|
1281
1484
|
* Flat rate pricing for DOOH, sponsorships, and time-based campaigns. If fixed_price is present, it's fixed pricing. If absent, it's auction-based.
|
|
1282
1485
|
*/
|
|
@@ -1364,6 +1567,77 @@ export interface PriceGuidance6 {
|
|
|
1364
1567
|
p90?: number;
|
|
1365
1568
|
[k: string]: unknown | undefined;
|
|
1366
1569
|
}
|
|
1570
|
+
/**
|
|
1571
|
+
* Cost per time unit (hour, day, week, or month) - rate scales with campaign duration. If fixed_price is present, it's fixed pricing. If absent, it's auction-based.
|
|
1572
|
+
*/
|
|
1573
|
+
export interface TimeBasedPricingOption {
|
|
1574
|
+
/**
|
|
1575
|
+
* Unique identifier for this pricing option within the product
|
|
1576
|
+
*/
|
|
1577
|
+
pricing_option_id: string;
|
|
1578
|
+
/**
|
|
1579
|
+
* Cost per time unit - rate scales with campaign duration
|
|
1580
|
+
*/
|
|
1581
|
+
pricing_model: 'time';
|
|
1582
|
+
/**
|
|
1583
|
+
* ISO 4217 currency code
|
|
1584
|
+
*/
|
|
1585
|
+
currency: string;
|
|
1586
|
+
/**
|
|
1587
|
+
* Cost per time unit. If present, this is fixed pricing. If absent, auction-based.
|
|
1588
|
+
*/
|
|
1589
|
+
fixed_price?: number;
|
|
1590
|
+
/**
|
|
1591
|
+
* Minimum acceptable bid per time unit for auction pricing (mutually exclusive with fixed_price). Bids below this value will be rejected.
|
|
1592
|
+
*/
|
|
1593
|
+
floor_price?: number;
|
|
1594
|
+
price_guidance?: PriceGuidance7;
|
|
1595
|
+
/**
|
|
1596
|
+
* Time-based pricing parameters
|
|
1597
|
+
*/
|
|
1598
|
+
parameters: {
|
|
1599
|
+
/**
|
|
1600
|
+
* The time unit for pricing. Total cost = fixed_price × number of time_units in the campaign flight.
|
|
1601
|
+
*/
|
|
1602
|
+
time_unit: 'hour' | 'day' | 'week' | 'month';
|
|
1603
|
+
/**
|
|
1604
|
+
* Minimum booking duration in time_units
|
|
1605
|
+
*/
|
|
1606
|
+
min_duration?: number;
|
|
1607
|
+
/**
|
|
1608
|
+
* Maximum booking duration in time_units. Must be >= min_duration when both are present.
|
|
1609
|
+
*/
|
|
1610
|
+
max_duration?: number;
|
|
1611
|
+
[k: string]: unknown | undefined;
|
|
1612
|
+
};
|
|
1613
|
+
/**
|
|
1614
|
+
* Minimum spend requirement per package using this pricing option, in the specified currency
|
|
1615
|
+
*/
|
|
1616
|
+
min_spend_per_package?: number;
|
|
1617
|
+
[k: string]: unknown | undefined;
|
|
1618
|
+
}
|
|
1619
|
+
/**
|
|
1620
|
+
* Optional pricing guidance for auction-based bidding
|
|
1621
|
+
*/
|
|
1622
|
+
export interface PriceGuidance7 {
|
|
1623
|
+
/**
|
|
1624
|
+
* 25th percentile of recent winning bids
|
|
1625
|
+
*/
|
|
1626
|
+
p25?: number;
|
|
1627
|
+
/**
|
|
1628
|
+
* Median of recent winning bids
|
|
1629
|
+
*/
|
|
1630
|
+
p50?: number;
|
|
1631
|
+
/**
|
|
1632
|
+
* 75th percentile of recent winning bids
|
|
1633
|
+
*/
|
|
1634
|
+
p75?: number;
|
|
1635
|
+
/**
|
|
1636
|
+
* 90th percentile of recent winning bids
|
|
1637
|
+
*/
|
|
1638
|
+
p90?: number;
|
|
1639
|
+
[k: string]: unknown | undefined;
|
|
1640
|
+
}
|
|
1367
1641
|
/**
|
|
1368
1642
|
* Measurement capabilities included with a product
|
|
1369
1643
|
*/
|
|
@@ -1409,9 +1683,17 @@ export interface ReportingCapabilities {
|
|
|
1409
1683
|
*/
|
|
1410
1684
|
supports_webhooks: boolean;
|
|
1411
1685
|
/**
|
|
1412
|
-
* Metrics available in reporting. Impressions and spend are always implicitly included.
|
|
1686
|
+
* Metrics available in reporting. Impressions and spend are always implicitly included. When a creative format declares reported_metrics, buyers receive the intersection of these product-level metrics and the format's reported_metrics.
|
|
1413
1687
|
*/
|
|
1414
1688
|
available_metrics: AvailableMetric[];
|
|
1689
|
+
/**
|
|
1690
|
+
* Whether this product supports creative-level metric breakdowns in delivery reporting (by_creative within by_package)
|
|
1691
|
+
*/
|
|
1692
|
+
supports_creative_breakdown?: boolean;
|
|
1693
|
+
/**
|
|
1694
|
+
* Whether delivery data can be filtered to arbitrary date ranges. 'date_range' means the platform supports start_date/end_date parameters. 'lifetime_only' means the platform returns campaign lifetime totals and date range parameters are not accepted.
|
|
1695
|
+
*/
|
|
1696
|
+
date_range_support: 'date_range' | 'lifetime_only';
|
|
1415
1697
|
[k: string]: unknown | undefined;
|
|
1416
1698
|
}
|
|
1417
1699
|
/**
|
|
@@ -1530,6 +1812,7 @@ export interface Proposal {
|
|
|
1530
1812
|
* Explanation of how this proposal aligns with the campaign brief
|
|
1531
1813
|
*/
|
|
1532
1814
|
brief_alignment?: string;
|
|
1815
|
+
forecast?: DeliveryForecast1;
|
|
1533
1816
|
ext?: ExtensionObject;
|
|
1534
1817
|
[k: string]: unknown | undefined;
|
|
1535
1818
|
}
|
|
@@ -1561,71 +1844,222 @@ export interface ProductAllocation {
|
|
|
1561
1844
|
* Categorical tags for this allocation (e.g., 'desktop', 'german', 'mobile') - useful for grouping/filtering allocations by dimension
|
|
1562
1845
|
*/
|
|
1563
1846
|
tags?: string[];
|
|
1847
|
+
/**
|
|
1848
|
+
* Recommended time windows for this allocation in spot-plan proposals.
|
|
1849
|
+
*
|
|
1850
|
+
* @minItems 1
|
|
1851
|
+
*/
|
|
1852
|
+
daypart_targets?: [DaypartTarget, ...DaypartTarget[]];
|
|
1853
|
+
forecast?: DeliveryForecast;
|
|
1564
1854
|
ext?: ExtensionObject;
|
|
1565
1855
|
[k: string]: unknown | undefined;
|
|
1566
1856
|
}
|
|
1567
1857
|
/**
|
|
1568
|
-
*
|
|
1858
|
+
* A time window for daypart targeting. Specifies days of week and an hour range. start_hour is inclusive, end_hour is exclusive (e.g., 6-10 = 6:00am to 10:00am). Follows the Google Ads AdScheduleInfo / DV360 DayPartTargeting pattern.
|
|
1569
1859
|
*/
|
|
1570
|
-
export interface
|
|
1571
|
-
/**
|
|
1572
|
-
* Error code for programmatic handling
|
|
1573
|
-
*/
|
|
1574
|
-
code: string;
|
|
1575
|
-
/**
|
|
1576
|
-
* Human-readable error message
|
|
1577
|
-
*/
|
|
1578
|
-
message: string;
|
|
1860
|
+
export interface DaypartTarget {
|
|
1579
1861
|
/**
|
|
1580
|
-
*
|
|
1862
|
+
* Days of week this window applies to. Use multiple days for compact targeting (e.g., monday-friday in one object).
|
|
1863
|
+
*
|
|
1864
|
+
* @minItems 1
|
|
1581
1865
|
*/
|
|
1582
|
-
|
|
1866
|
+
days: [DayOfWeek, ...DayOfWeek[]];
|
|
1583
1867
|
/**
|
|
1584
|
-
*
|
|
1868
|
+
* Start hour (inclusive), 0-23 in 24-hour format. 0 = midnight, 6 = 6:00am, 18 = 6:00pm.
|
|
1585
1869
|
*/
|
|
1586
|
-
|
|
1870
|
+
start_hour: number;
|
|
1587
1871
|
/**
|
|
1588
|
-
*
|
|
1872
|
+
* End hour (exclusive), 1-24 in 24-hour format. 10 = 10:00am, 24 = midnight. Must be greater than start_hour.
|
|
1589
1873
|
*/
|
|
1590
|
-
|
|
1874
|
+
end_hour: number;
|
|
1591
1875
|
/**
|
|
1592
|
-
*
|
|
1876
|
+
* Optional human-readable name for this time window (e.g., 'Morning Drive', 'Prime Time')
|
|
1593
1877
|
*/
|
|
1594
|
-
|
|
1595
|
-
[k: string]: unknown | undefined;
|
|
1596
|
-
};
|
|
1597
|
-
[k: string]: unknown | undefined;
|
|
1878
|
+
label?: string;
|
|
1598
1879
|
}
|
|
1599
1880
|
/**
|
|
1600
|
-
*
|
|
1601
|
-
*/
|
|
1602
|
-
/**
|
|
1603
|
-
* Filter by format type (technical categories with distinct requirements)
|
|
1881
|
+
* Forecasted delivery metrics for this allocation
|
|
1604
1882
|
*/
|
|
1605
|
-
export interface
|
|
1883
|
+
export interface DeliveryForecast {
|
|
1606
1884
|
/**
|
|
1607
|
-
*
|
|
1885
|
+
* Forecasted delivery at one or more budget levels. A single point is a standard forecast; multiple points ordered by ascending budget form a curve showing how metrics scale with spend. Each point pairs a budget with metric ranges.
|
|
1886
|
+
*
|
|
1887
|
+
* @minItems 1
|
|
1608
1888
|
*/
|
|
1609
|
-
|
|
1610
|
-
|
|
1889
|
+
points: [ForecastPoint, ...ForecastPoint[]];
|
|
1890
|
+
forecast_range_unit?: ForecastRangeUnit;
|
|
1891
|
+
method: ForecastMethod;
|
|
1611
1892
|
/**
|
|
1612
|
-
*
|
|
1893
|
+
* ISO 4217 currency code for monetary values in this forecast (spend, budget)
|
|
1613
1894
|
*/
|
|
1614
|
-
|
|
1895
|
+
currency: string;
|
|
1896
|
+
demographic_system?: DemographicSystem1;
|
|
1615
1897
|
/**
|
|
1616
|
-
*
|
|
1898
|
+
* Target demographic code within the specified demographic_system. For Nielsen: P18-49, M25-54, W35+. For BARB: ABC1 Adults, 16-34. For AGF: E 14-49.
|
|
1617
1899
|
*/
|
|
1618
|
-
|
|
1900
|
+
demographic?: string;
|
|
1901
|
+
reach_unit?: ReachUnit;
|
|
1619
1902
|
/**
|
|
1620
|
-
*
|
|
1903
|
+
* When this forecast was computed
|
|
1621
1904
|
*/
|
|
1622
|
-
|
|
1905
|
+
generated_at?: string;
|
|
1623
1906
|
/**
|
|
1624
|
-
*
|
|
1907
|
+
* When this forecast expires. After this time, the forecast should be refreshed. Forecast expiry does not affect proposal executability.
|
|
1625
1908
|
*/
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1909
|
+
valid_until?: string;
|
|
1910
|
+
ext?: ExtensionObject;
|
|
1911
|
+
[k: string]: unknown | undefined;
|
|
1912
|
+
}
|
|
1913
|
+
/**
|
|
1914
|
+
* A forecast at a specific budget level. A single point represents a standard forecast; multiple points ordered by ascending budget form a curve showing how delivery metrics scale with spend.
|
|
1915
|
+
*/
|
|
1916
|
+
export interface ForecastPoint {
|
|
1917
|
+
/**
|
|
1918
|
+
* Budget amount for this forecast point. For allocation-level forecasts, this is the absolute budget for that allocation (not the percentage). For proposal-level forecasts, this is the total proposal budget.
|
|
1919
|
+
*/
|
|
1920
|
+
budget: number;
|
|
1921
|
+
/**
|
|
1922
|
+
* Forecasted metric values at this budget level. Keys are either forecastable-metric values for delivery/engagement (impressions, reach, spend, etc.) or event-type values for outcomes (purchase, lead, app_install, etc.). Values are ForecastRange objects (low/mid/high). Use { "mid": value } for point estimates. Include spend when the platform predicts it will differ from budget.
|
|
1923
|
+
*/
|
|
1924
|
+
metrics: {
|
|
1925
|
+
[k: string]: ForecastRange | undefined;
|
|
1926
|
+
};
|
|
1927
|
+
[k: string]: unknown | undefined;
|
|
1928
|
+
}
|
|
1929
|
+
/**
|
|
1930
|
+
* A forecast value with optional low/high bounds. The mid value represents the most likely outcome. When low and high are provided, they represent conservative and optimistic estimates respectively.
|
|
1931
|
+
*/
|
|
1932
|
+
export interface ForecastRange {
|
|
1933
|
+
/**
|
|
1934
|
+
* Conservative (low-end) forecast value
|
|
1935
|
+
*/
|
|
1936
|
+
low?: number;
|
|
1937
|
+
/**
|
|
1938
|
+
* Expected (most likely) forecast value
|
|
1939
|
+
*/
|
|
1940
|
+
mid: number;
|
|
1941
|
+
/**
|
|
1942
|
+
* Optimistic (high-end) forecast value
|
|
1943
|
+
*/
|
|
1944
|
+
high?: number;
|
|
1945
|
+
[k: string]: unknown | undefined;
|
|
1946
|
+
}
|
|
1947
|
+
/**
|
|
1948
|
+
* Aggregate forecasted delivery metrics for the entire proposal. When both proposal-level and allocation-level forecasts are present, the proposal-level forecast is authoritative for total delivery estimation.
|
|
1949
|
+
*/
|
|
1950
|
+
export interface DeliveryForecast1 {
|
|
1951
|
+
/**
|
|
1952
|
+
* Forecasted delivery at one or more budget levels. A single point is a standard forecast; multiple points ordered by ascending budget form a curve showing how metrics scale with spend. Each point pairs a budget with metric ranges.
|
|
1953
|
+
*
|
|
1954
|
+
* @minItems 1
|
|
1955
|
+
*/
|
|
1956
|
+
points: [ForecastPoint, ...ForecastPoint[]];
|
|
1957
|
+
forecast_range_unit?: ForecastRangeUnit;
|
|
1958
|
+
method: ForecastMethod;
|
|
1959
|
+
/**
|
|
1960
|
+
* ISO 4217 currency code for monetary values in this forecast (spend, budget)
|
|
1961
|
+
*/
|
|
1962
|
+
currency: string;
|
|
1963
|
+
demographic_system?: DemographicSystem1;
|
|
1964
|
+
/**
|
|
1965
|
+
* Target demographic code within the specified demographic_system. For Nielsen: P18-49, M25-54, W35+. For BARB: ABC1 Adults, 16-34. For AGF: E 14-49.
|
|
1966
|
+
*/
|
|
1967
|
+
demographic?: string;
|
|
1968
|
+
reach_unit?: ReachUnit;
|
|
1969
|
+
/**
|
|
1970
|
+
* When this forecast was computed
|
|
1971
|
+
*/
|
|
1972
|
+
generated_at?: string;
|
|
1973
|
+
/**
|
|
1974
|
+
* When this forecast expires. After this time, the forecast should be refreshed. Forecast expiry does not affect proposal executability.
|
|
1975
|
+
*/
|
|
1976
|
+
valid_until?: string;
|
|
1977
|
+
ext?: ExtensionObject;
|
|
1978
|
+
[k: string]: unknown | undefined;
|
|
1979
|
+
}
|
|
1980
|
+
/**
|
|
1981
|
+
* Standard error structure for task-specific errors and warnings
|
|
1982
|
+
*/
|
|
1983
|
+
export interface Error {
|
|
1984
|
+
/**
|
|
1985
|
+
* Error code for programmatic handling
|
|
1986
|
+
*/
|
|
1987
|
+
code: string;
|
|
1988
|
+
/**
|
|
1989
|
+
* Human-readable error message
|
|
1990
|
+
*/
|
|
1991
|
+
message: string;
|
|
1992
|
+
/**
|
|
1993
|
+
* Field path associated with the error (e.g., 'packages[0].targeting')
|
|
1994
|
+
*/
|
|
1995
|
+
field?: string;
|
|
1996
|
+
/**
|
|
1997
|
+
* Suggested fix for the error
|
|
1998
|
+
*/
|
|
1999
|
+
suggestion?: string;
|
|
2000
|
+
/**
|
|
2001
|
+
* Seconds to wait before retrying the operation
|
|
2002
|
+
*/
|
|
2003
|
+
retry_after?: number;
|
|
2004
|
+
/**
|
|
2005
|
+
* Additional task-specific error details
|
|
2006
|
+
*/
|
|
2007
|
+
details?: {
|
|
2008
|
+
[k: string]: unknown | undefined;
|
|
2009
|
+
};
|
|
2010
|
+
[k: string]: unknown | undefined;
|
|
2011
|
+
}
|
|
2012
|
+
/**
|
|
2013
|
+
* Standard cursor-based pagination metadata for list responses
|
|
2014
|
+
*/
|
|
2015
|
+
export interface PaginationResponse {
|
|
2016
|
+
/**
|
|
2017
|
+
* Whether more results are available beyond this page
|
|
2018
|
+
*/
|
|
2019
|
+
has_more: boolean;
|
|
2020
|
+
/**
|
|
2021
|
+
* Opaque cursor to pass in the next request to fetch the next page. Only present when has_more is true.
|
|
2022
|
+
*/
|
|
2023
|
+
cursor?: string;
|
|
2024
|
+
/**
|
|
2025
|
+
* Total number of items matching the query across all pages. Optional because not all backends can efficiently compute this.
|
|
2026
|
+
*/
|
|
2027
|
+
total_count?: number;
|
|
2028
|
+
}
|
|
2029
|
+
/**
|
|
2030
|
+
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
2031
|
+
*/
|
|
2032
|
+
/**
|
|
2033
|
+
* Filter by format type (technical categories with distinct requirements)
|
|
2034
|
+
*/
|
|
2035
|
+
export type WCAGLevel = 'A' | 'AA' | 'AAA';
|
|
2036
|
+
/**
|
|
2037
|
+
* Request parameters for discovering supported creative formats
|
|
2038
|
+
*/
|
|
2039
|
+
export interface ListCreativeFormatsRequest {
|
|
2040
|
+
/**
|
|
2041
|
+
* Return only these specific format IDs (e.g., from get_products response)
|
|
2042
|
+
*/
|
|
2043
|
+
format_ids?: FormatID[];
|
|
2044
|
+
type?: FormatCategory;
|
|
2045
|
+
/**
|
|
2046
|
+
* Filter to formats that include these asset types. For third-party tags, search for 'html' or 'javascript'. E.g., ['image', 'text'] returns formats with images and text, ['javascript'] returns formats accepting JavaScript tags.
|
|
2047
|
+
*/
|
|
2048
|
+
asset_types?: AssetContentType[];
|
|
2049
|
+
/**
|
|
2050
|
+
* Maximum width in pixels (inclusive). Returns formats where ANY render has width <= this value. For multi-render formats, matches if at least one render fits.
|
|
2051
|
+
*/
|
|
2052
|
+
max_width?: number;
|
|
2053
|
+
/**
|
|
2054
|
+
* Maximum height in pixels (inclusive). Returns formats where ANY render has height <= this value. For multi-render formats, matches if at least one render fits.
|
|
2055
|
+
*/
|
|
2056
|
+
max_height?: number;
|
|
2057
|
+
/**
|
|
2058
|
+
* Minimum width in pixels (inclusive). Returns formats where ANY render has width >= this value.
|
|
2059
|
+
*/
|
|
2060
|
+
min_width?: number;
|
|
2061
|
+
/**
|
|
2062
|
+
* Minimum height in pixels (inclusive). Returns formats where ANY render has height >= this value.
|
|
1629
2063
|
*/
|
|
1630
2064
|
min_height?: number;
|
|
1631
2065
|
/**
|
|
@@ -1636,6 +2070,8 @@ export interface ListCreativeFormatsRequest {
|
|
|
1636
2070
|
* Search for formats by name (case-insensitive partial match)
|
|
1637
2071
|
*/
|
|
1638
2072
|
name_search?: string;
|
|
2073
|
+
wcag_level?: WCAGLevel;
|
|
2074
|
+
pagination?: PaginationRequest;
|
|
1639
2075
|
context?: ContextObject;
|
|
1640
2076
|
ext?: ExtensionObject;
|
|
1641
2077
|
}
|
|
@@ -1643,13 +2079,17 @@ export interface ListCreativeFormatsRequest {
|
|
|
1643
2079
|
* Structured format identifier with agent URL and format name. Can reference: (1) a concrete format with fixed dimensions (id only), (2) a template format without parameters (id only), or (3) a template format with parameters (id + dimensions/duration). Template formats accept parameters in format_id while concrete formats have fixed dimensions in their definition. Parameterized format IDs create unique, specific format variants.
|
|
1644
2080
|
*/
|
|
1645
2081
|
/**
|
|
1646
|
-
*
|
|
2082
|
+
* DEPRECATED: High-level category for this format. Use the assets array to understand creative requirements instead - it provides precise information about what asset types are needed.
|
|
1647
2083
|
*/
|
|
1648
2084
|
export type FormatIDParameter = 'dimensions' | 'duration';
|
|
1649
2085
|
/**
|
|
1650
|
-
*
|
|
2086
|
+
* 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.
|
|
1651
2087
|
*/
|
|
1652
|
-
export type
|
|
2088
|
+
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';
|
|
2089
|
+
/**
|
|
2090
|
+
* WCAG conformance level that this format achieves. For format-rendered creatives, the format guarantees this level. For opaque creatives, the format requires assets that self-certify to this level.
|
|
2091
|
+
*/
|
|
2092
|
+
export type CreativeAgentCapability = 'validation' | 'assembly' | 'generation' | 'preview' | 'delivery';
|
|
1653
2093
|
/**
|
|
1654
2094
|
* Response payload for list_creative_formats task
|
|
1655
2095
|
*/
|
|
@@ -1679,6 +2119,7 @@ export interface ListCreativeFormatsResponse {
|
|
|
1679
2119
|
* Task-specific errors and warnings (e.g., format availability issues)
|
|
1680
2120
|
*/
|
|
1681
2121
|
errors?: Error[];
|
|
2122
|
+
pagination?: PaginationResponse;
|
|
1682
2123
|
context?: ContextObject;
|
|
1683
2124
|
ext?: ExtensionObject;
|
|
1684
2125
|
}
|
|
@@ -1699,7 +2140,7 @@ export interface Format {
|
|
|
1699
2140
|
* Optional URL to showcase page with examples and interactive demos of this format
|
|
1700
2141
|
*/
|
|
1701
2142
|
example_url?: string;
|
|
1702
|
-
type
|
|
2143
|
+
type?: FormatCategory;
|
|
1703
2144
|
/**
|
|
1704
2145
|
* List of parameters this format accepts in format_id. Template formats define which parameters (dimensions, duration, etc.) can be specified when instantiating the format. Empty or omitted means this is a concrete format with fixed parameters.
|
|
1705
2146
|
*/
|
|
@@ -1745,6 +2186,10 @@ export interface Format {
|
|
|
1745
2186
|
* Maximum number of repetitions allowed
|
|
1746
2187
|
*/
|
|
1747
2188
|
max_count: number;
|
|
2189
|
+
/**
|
|
2190
|
+
* How the platform uses repetitions of this group. 'sequential' means all items display in order (carousels, playlists). 'optimize' means the platform selects the best-performing combination from alternatives (asset group optimization like Meta Advantage+ or Google Pmax).
|
|
2191
|
+
*/
|
|
2192
|
+
selection_mode?: 'sequential' | 'optimize';
|
|
1748
2193
|
/**
|
|
1749
2194
|
* Assets within each repetition of this group
|
|
1750
2195
|
*/
|
|
@@ -1757,9 +2202,9 @@ export interface Format {
|
|
|
1757
2202
|
[k: string]: unknown | undefined;
|
|
1758
2203
|
};
|
|
1759
2204
|
/**
|
|
1760
|
-
* List of universal macros supported by this format (e.g., MEDIA_BUY_ID, CACHEBUSTER, DEVICE_ID). Used for validation and developer tooling.
|
|
2205
|
+
* List of universal macros supported by this format (e.g., MEDIA_BUY_ID, CACHEBUSTER, DEVICE_ID). Used for validation and developer tooling. See docs/creative/universal-macros.mdx for full documentation.
|
|
1761
2206
|
*/
|
|
1762
|
-
supported_macros?: string[];
|
|
2207
|
+
supported_macros?: (UniversalMacro | string)[];
|
|
1763
2208
|
/**
|
|
1764
2209
|
* For generative formats: array of format IDs that this format can generate. When a format accepts inputs like brand_manifest and message, this specifies what concrete output formats can be produced (e.g., a generative banner format might output standard image banner formats).
|
|
1765
2210
|
*/
|
|
@@ -1777,6 +2222,16 @@ export interface Format {
|
|
|
1777
2222
|
};
|
|
1778
2223
|
[k: string]: unknown | undefined;
|
|
1779
2224
|
};
|
|
2225
|
+
/**
|
|
2226
|
+
* Accessibility posture of this format. Declares the WCAG conformance level that creatives produced by this format will meet.
|
|
2227
|
+
*/
|
|
2228
|
+
accessibility?: {
|
|
2229
|
+
wcag_level: WCAGLevel;
|
|
2230
|
+
/**
|
|
2231
|
+
* When true, all assets with x-accessibility fields must include those fields. For inspectable assets (image, video, audio), this means providing accessibility metadata like alt_text or captions. For opaque assets (HTML, JavaScript), this means providing self-declared accessibility properties.
|
|
2232
|
+
*/
|
|
2233
|
+
requires_accessible_assets?: boolean;
|
|
2234
|
+
};
|
|
1780
2235
|
/**
|
|
1781
2236
|
* Optional detailed card with carousel and full specifications. Provides rich format documentation similar to ad spec pages.
|
|
1782
2237
|
*/
|
|
@@ -1790,6 +2245,12 @@ export interface Format {
|
|
|
1790
2245
|
};
|
|
1791
2246
|
[k: string]: unknown | undefined;
|
|
1792
2247
|
};
|
|
2248
|
+
/**
|
|
2249
|
+
* 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.
|
|
2250
|
+
*
|
|
2251
|
+
* @minItems 1
|
|
2252
|
+
*/
|
|
2253
|
+
reported_metrics?: [AvailableMetric, ...AvailableMetric[]];
|
|
1793
2254
|
[k: string]: unknown | undefined;
|
|
1794
2255
|
}
|
|
1795
2256
|
/**
|
|
@@ -1861,11 +2322,19 @@ export interface FormatID3 {
|
|
|
1861
2322
|
*/
|
|
1862
2323
|
export type Pacing = 'even' | 'asap' | 'front_loaded';
|
|
1863
2324
|
/**
|
|
1864
|
-
*
|
|
2325
|
+
* Event type to optimize for (e.g. purchase, lead)
|
|
2326
|
+
*/
|
|
2327
|
+
export type MetroAreaSystem1 = 'nielsen_dma' | 'uk_itl1' | 'uk_itl2' | 'eurostat_nuts2' | 'custom';
|
|
2328
|
+
/**
|
|
2329
|
+
* Postal code system (e.g., 'us_zip', 'gb_outward'). System name encodes country and precision.
|
|
1865
2330
|
*/
|
|
1866
2331
|
export type PostalCodeSystem = 'us_zip' | 'us_zip_plus_four' | 'gb_outward' | 'gb_full' | 'ca_fsa' | 'ca_full' | 'de_plz' | 'fr_code_postal' | 'au_postcode';
|
|
1867
2332
|
/**
|
|
1868
|
-
*
|
|
2333
|
+
* Postal code system (e.g., 'us_zip', 'gb_outward'). System name encodes country and precision.
|
|
2334
|
+
*/
|
|
2335
|
+
export type PostalCodeSystem1 = 'us_zip' | 'us_zip_plus_four' | 'gb_outward' | 'gb_full' | 'ca_fsa' | 'ca_full' | 'de_plz' | 'fr_code_postal' | 'au_postcode';
|
|
2336
|
+
/**
|
|
2337
|
+
* Days of the week for daypart targeting
|
|
1869
2338
|
*/
|
|
1870
2339
|
export type AgeVerificationMethod = 'facial_age_estimation' | 'id_document' | 'digital_id' | 'credit_card' | 'world_id';
|
|
1871
2340
|
/**
|
|
@@ -1901,6 +2370,14 @@ export type VASTAsset = {
|
|
|
1901
2370
|
* Tracking events supported by this VAST tag
|
|
1902
2371
|
*/
|
|
1903
2372
|
tracking_events?: VASTTrackingEvent[];
|
|
2373
|
+
/**
|
|
2374
|
+
* URL to captions file (WebVTT, SRT, etc.)
|
|
2375
|
+
*/
|
|
2376
|
+
captions_url?: string;
|
|
2377
|
+
/**
|
|
2378
|
+
* URL to audio description track for visually impaired users
|
|
2379
|
+
*/
|
|
2380
|
+
audio_description_url?: string;
|
|
1904
2381
|
[k: string]: unknown | undefined;
|
|
1905
2382
|
} | {
|
|
1906
2383
|
/**
|
|
@@ -1924,6 +2401,14 @@ export type VASTAsset = {
|
|
|
1924
2401
|
* Tracking events supported by this VAST tag
|
|
1925
2402
|
*/
|
|
1926
2403
|
tracking_events?: VASTTrackingEvent[];
|
|
2404
|
+
/**
|
|
2405
|
+
* URL to captions file (WebVTT, SRT, etc.)
|
|
2406
|
+
*/
|
|
2407
|
+
captions_url?: string;
|
|
2408
|
+
/**
|
|
2409
|
+
* URL to audio description track for visually impaired users
|
|
2410
|
+
*/
|
|
2411
|
+
audio_description_url?: string;
|
|
1927
2412
|
[k: string]: unknown | undefined;
|
|
1928
2413
|
};
|
|
1929
2414
|
/**
|
|
@@ -1963,6 +2448,10 @@ export type DAASTAsset = {
|
|
|
1963
2448
|
* Whether companion display ads are included
|
|
1964
2449
|
*/
|
|
1965
2450
|
companion_ads?: boolean;
|
|
2451
|
+
/**
|
|
2452
|
+
* URL to text transcript of the audio content
|
|
2453
|
+
*/
|
|
2454
|
+
transcript_url?: string;
|
|
1966
2455
|
[k: string]: unknown | undefined;
|
|
1967
2456
|
} | {
|
|
1968
2457
|
/**
|
|
@@ -1986,6 +2475,10 @@ export type DAASTAsset = {
|
|
|
1986
2475
|
* Whether companion display ads are included
|
|
1987
2476
|
*/
|
|
1988
2477
|
companion_ads?: boolean;
|
|
2478
|
+
/**
|
|
2479
|
+
* URL to text transcript of the audio content
|
|
2480
|
+
*/
|
|
2481
|
+
transcript_url?: string;
|
|
1989
2482
|
[k: string]: unknown | undefined;
|
|
1990
2483
|
};
|
|
1991
2484
|
/**
|
|
@@ -2029,7 +2522,7 @@ export interface CreateMediaBuyRequest {
|
|
|
2029
2522
|
*/
|
|
2030
2523
|
buyer_ref: string;
|
|
2031
2524
|
/**
|
|
2032
|
-
* Account to bill for this media buy.
|
|
2525
|
+
* Account to bill for this media buy. Required when the agent has access to multiple accounts; when omitted, the seller uses the agent's sole account. The seller maps the agent's brand + operator to an account during sync_accounts; the agent passes that account_id here.
|
|
2033
2526
|
*/
|
|
2034
2527
|
account_id?: string;
|
|
2035
2528
|
/**
|
|
@@ -2146,56 +2639,191 @@ export interface PackageRequest {
|
|
|
2146
2639
|
* Whether this package should be created in a paused state. Paused packages do not deliver impressions. Defaults to false.
|
|
2147
2640
|
*/
|
|
2148
2641
|
paused?: boolean;
|
|
2642
|
+
optimization_goal?: OptimizationGoal;
|
|
2149
2643
|
targeting_overlay?: TargetingOverlay;
|
|
2150
2644
|
/**
|
|
2151
2645
|
* Assign existing library creatives to this package with optional weights and placement targeting
|
|
2646
|
+
*
|
|
2647
|
+
* @minItems 1
|
|
2152
2648
|
*/
|
|
2153
|
-
creative_assignments?: CreativeAssignment[];
|
|
2649
|
+
creative_assignments?: [CreativeAssignment, ...CreativeAssignment[]];
|
|
2154
2650
|
/**
|
|
2155
2651
|
* Upload new creative assets and assign to this package (creatives will be added to library). Use creative_assignments instead for existing library creatives.
|
|
2156
2652
|
*
|
|
2653
|
+
* @minItems 1
|
|
2157
2654
|
* @maxItems 100
|
|
2158
2655
|
*/
|
|
2159
|
-
creatives?: CreativeAsset[];
|
|
2656
|
+
creatives?: [CreativeAsset, ...CreativeAsset[]];
|
|
2160
2657
|
ext?: ExtensionObject;
|
|
2161
2658
|
[k: string]: unknown | undefined;
|
|
2162
2659
|
}
|
|
2163
2660
|
/**
|
|
2164
2661
|
* Structured format identifier with agent URL and format name. Can reference: (1) a concrete format with fixed dimensions (id only), (2) a template format without parameters (id only), or (3) a template format with parameters (id + dimensions/duration). Template formats accept parameters in format_id while concrete formats have fixed dimensions in their definition. Parameterized format IDs create unique, specific format variants.
|
|
2165
2662
|
*/
|
|
2663
|
+
export interface OptimizationGoal {
|
|
2664
|
+
/**
|
|
2665
|
+
* Event source to optimize against (must be configured on this account via sync_event_sources)
|
|
2666
|
+
*/
|
|
2667
|
+
event_source_id: string;
|
|
2668
|
+
event_type: EventType;
|
|
2669
|
+
/**
|
|
2670
|
+
* Target return on ad spend (e.g. 4.0 = $4 conversion value per $1 spent). Mutually exclusive with target_cpa.
|
|
2671
|
+
*/
|
|
2672
|
+
target_roas?: number;
|
|
2673
|
+
/**
|
|
2674
|
+
* Target cost per acquisition in the buy currency. Mutually exclusive with target_roas.
|
|
2675
|
+
*/
|
|
2676
|
+
target_cpa?: number;
|
|
2677
|
+
/**
|
|
2678
|
+
* Attribution window for this optimization goal. Values must match an option declared in the seller's conversion_tracking.attribution_windows capability. When omitted, the seller uses their default window.
|
|
2679
|
+
*/
|
|
2680
|
+
attribution_window?: {
|
|
2681
|
+
/**
|
|
2682
|
+
* Click-through attribution window (e.g. '7d', '28d', '30d')
|
|
2683
|
+
*/
|
|
2684
|
+
click_through: string;
|
|
2685
|
+
/**
|
|
2686
|
+
* View-through attribution window (e.g. '1d', '7d')
|
|
2687
|
+
*/
|
|
2688
|
+
view_through?: string;
|
|
2689
|
+
[k: string]: unknown | undefined;
|
|
2690
|
+
};
|
|
2691
|
+
[k: string]: unknown | undefined;
|
|
2692
|
+
}
|
|
2693
|
+
/**
|
|
2694
|
+
* Optional restriction overlays for media buys. Most targeting should be expressed in the brief and handled by the publisher. These fields are for functional restrictions: geographic (RCT testing, regulatory compliance), age verification (alcohol, gambling), device platform (app compatibility), and language (localization).
|
|
2695
|
+
*/
|
|
2166
2696
|
export interface TargetingOverlay {
|
|
2167
2697
|
/**
|
|
2168
2698
|
* Restrict delivery to specific countries. ISO 3166-1 alpha-2 codes (e.g., 'US', 'GB', 'DE').
|
|
2699
|
+
*
|
|
2700
|
+
* @minItems 1
|
|
2701
|
+
*/
|
|
2702
|
+
geo_countries?: [string, ...string[]];
|
|
2703
|
+
/**
|
|
2704
|
+
* Exclude specific countries from delivery. ISO 3166-1 alpha-2 codes (e.g., 'US', 'GB', 'DE').
|
|
2705
|
+
*
|
|
2706
|
+
* @minItems 1
|
|
2169
2707
|
*/
|
|
2170
|
-
|
|
2708
|
+
geo_countries_exclude?: [string, ...string[]];
|
|
2171
2709
|
/**
|
|
2172
2710
|
* Restrict delivery to specific regions/states. ISO 3166-2 subdivision codes (e.g., 'US-CA', 'GB-SCT').
|
|
2711
|
+
*
|
|
2712
|
+
* @minItems 1
|
|
2713
|
+
*/
|
|
2714
|
+
geo_regions?: [string, ...string[]];
|
|
2715
|
+
/**
|
|
2716
|
+
* Exclude specific regions/states from delivery. ISO 3166-2 subdivision codes (e.g., 'US-CA', 'GB-SCT').
|
|
2717
|
+
*
|
|
2718
|
+
* @minItems 1
|
|
2173
2719
|
*/
|
|
2174
|
-
|
|
2720
|
+
geo_regions_exclude?: [string, ...string[]];
|
|
2175
2721
|
/**
|
|
2176
2722
|
* Restrict delivery to specific metro areas. Each entry specifies the classification system and target values. Seller must declare supported systems in get_adcp_capabilities.
|
|
2723
|
+
*
|
|
2724
|
+
* @minItems 1
|
|
2177
2725
|
*/
|
|
2178
|
-
geo_metros?:
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2726
|
+
geo_metros?: [
|
|
2727
|
+
{
|
|
2728
|
+
system: MetroAreaSystem;
|
|
2729
|
+
/**
|
|
2730
|
+
* Metro codes within the system (e.g., ['501', '602'] for Nielsen DMAs)
|
|
2731
|
+
*
|
|
2732
|
+
* @minItems 1
|
|
2733
|
+
*/
|
|
2734
|
+
values: [string, ...string[]];
|
|
2735
|
+
},
|
|
2736
|
+
...{
|
|
2737
|
+
system: MetroAreaSystem;
|
|
2738
|
+
/**
|
|
2739
|
+
* Metro codes within the system (e.g., ['501', '602'] for Nielsen DMAs)
|
|
2740
|
+
*
|
|
2741
|
+
* @minItems 1
|
|
2742
|
+
*/
|
|
2743
|
+
values: [string, ...string[]];
|
|
2744
|
+
}[]
|
|
2745
|
+
];
|
|
2746
|
+
/**
|
|
2747
|
+
* Exclude specific metro areas from delivery. Each entry specifies the classification system and excluded values. Seller must declare supported systems in get_adcp_capabilities.
|
|
2748
|
+
*
|
|
2749
|
+
* @minItems 1
|
|
2750
|
+
*/
|
|
2751
|
+
geo_metros_exclude?: [
|
|
2752
|
+
{
|
|
2753
|
+
system: MetroAreaSystem1;
|
|
2754
|
+
/**
|
|
2755
|
+
* Metro codes to exclude within the system (e.g., ['501', '602'] for Nielsen DMAs)
|
|
2756
|
+
*
|
|
2757
|
+
* @minItems 1
|
|
2758
|
+
*/
|
|
2759
|
+
values: [string, ...string[]];
|
|
2760
|
+
},
|
|
2761
|
+
...{
|
|
2762
|
+
system: MetroAreaSystem1;
|
|
2763
|
+
/**
|
|
2764
|
+
* Metro codes to exclude within the system (e.g., ['501', '602'] for Nielsen DMAs)
|
|
2765
|
+
*
|
|
2766
|
+
* @minItems 1
|
|
2767
|
+
*/
|
|
2768
|
+
values: [string, ...string[]];
|
|
2769
|
+
}[]
|
|
2770
|
+
];
|
|
2187
2771
|
/**
|
|
2188
2772
|
* Restrict delivery to specific postal areas. Each entry specifies the postal system and target values. Seller must declare supported systems in get_adcp_capabilities.
|
|
2773
|
+
*
|
|
2774
|
+
* @minItems 1
|
|
2189
2775
|
*/
|
|
2190
|
-
geo_postal_areas?:
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2776
|
+
geo_postal_areas?: [
|
|
2777
|
+
{
|
|
2778
|
+
system: PostalCodeSystem;
|
|
2779
|
+
/**
|
|
2780
|
+
* Postal codes within the system (e.g., ['10001', '10002'] for us_zip)
|
|
2781
|
+
*
|
|
2782
|
+
* @minItems 1
|
|
2783
|
+
*/
|
|
2784
|
+
values: [string, ...string[]];
|
|
2785
|
+
},
|
|
2786
|
+
...{
|
|
2787
|
+
system: PostalCodeSystem;
|
|
2788
|
+
/**
|
|
2789
|
+
* Postal codes within the system (e.g., ['10001', '10002'] for us_zip)
|
|
2790
|
+
*
|
|
2791
|
+
* @minItems 1
|
|
2792
|
+
*/
|
|
2793
|
+
values: [string, ...string[]];
|
|
2794
|
+
}[]
|
|
2795
|
+
];
|
|
2796
|
+
/**
|
|
2797
|
+
* Exclude specific postal areas from delivery. Each entry specifies the postal system and excluded values. Seller must declare supported systems in get_adcp_capabilities.
|
|
2798
|
+
*
|
|
2799
|
+
* @minItems 1
|
|
2800
|
+
*/
|
|
2801
|
+
geo_postal_areas_exclude?: [
|
|
2802
|
+
{
|
|
2803
|
+
system: PostalCodeSystem1;
|
|
2804
|
+
/**
|
|
2805
|
+
* Postal codes to exclude within the system (e.g., ['10001', '10002'] for us_zip)
|
|
2806
|
+
*
|
|
2807
|
+
* @minItems 1
|
|
2808
|
+
*/
|
|
2809
|
+
values: [string, ...string[]];
|
|
2810
|
+
},
|
|
2811
|
+
...{
|
|
2812
|
+
system: PostalCodeSystem1;
|
|
2813
|
+
/**
|
|
2814
|
+
* Postal codes to exclude within the system (e.g., ['10001', '10002'] for us_zip)
|
|
2815
|
+
*
|
|
2816
|
+
* @minItems 1
|
|
2817
|
+
*/
|
|
2818
|
+
values: [string, ...string[]];
|
|
2819
|
+
}[]
|
|
2820
|
+
];
|
|
2821
|
+
/**
|
|
2822
|
+
* Restrict delivery to specific time windows. Each entry specifies days of week and an hour range.
|
|
2823
|
+
*
|
|
2824
|
+
* @minItems 1
|
|
2825
|
+
*/
|
|
2826
|
+
daypart_targets?: [DaypartTarget, ...DaypartTarget[]];
|
|
2199
2827
|
/**
|
|
2200
2828
|
* AXE segment ID to include for targeting
|
|
2201
2829
|
*/
|
|
@@ -2220,8 +2848,10 @@ export interface TargetingOverlay {
|
|
|
2220
2848
|
verification_required?: boolean;
|
|
2221
2849
|
/**
|
|
2222
2850
|
* Accepted verification methods. If omitted, any method the platform supports is acceptable.
|
|
2851
|
+
*
|
|
2852
|
+
* @minItems 1
|
|
2223
2853
|
*/
|
|
2224
|
-
accepted_methods?: AgeVerificationMethod[];
|
|
2854
|
+
accepted_methods?: [AgeVerificationMethod, ...AgeVerificationMethod[]];
|
|
2225
2855
|
};
|
|
2226
2856
|
/**
|
|
2227
2857
|
* Restrict to specific platforms. Use for technical compatibility (app only works on iOS). Values from Sec-CH-UA-Platform standard, extended for CTV.
|
|
@@ -2238,7 +2868,7 @@ export interface TargetingOverlay {
|
|
|
2238
2868
|
[k: string]: unknown | undefined;
|
|
2239
2869
|
}
|
|
2240
2870
|
/**
|
|
2241
|
-
*
|
|
2871
|
+
* A time window for daypart targeting. Specifies days of week and an hour range. start_hour is inclusive, end_hour is exclusive (e.g., 6-10 = 6:00am to 10:00am). Follows the Google Ads AdScheduleInfo / DV360 DayPartTargeting pattern.
|
|
2242
2872
|
*/
|
|
2243
2873
|
export interface FrequencyCap {
|
|
2244
2874
|
/**
|
|
@@ -2457,6 +3087,18 @@ export interface VideoAsset {
|
|
|
2457
3087
|
* True peak level in dBFS
|
|
2458
3088
|
*/
|
|
2459
3089
|
audio_true_peak_dbfs?: number;
|
|
3090
|
+
/**
|
|
3091
|
+
* URL to captions file (WebVTT, SRT, etc.)
|
|
3092
|
+
*/
|
|
3093
|
+
captions_url?: string;
|
|
3094
|
+
/**
|
|
3095
|
+
* URL to text transcript of the video content
|
|
3096
|
+
*/
|
|
3097
|
+
transcript_url?: string;
|
|
3098
|
+
/**
|
|
3099
|
+
* URL to audio description track for visually impaired users
|
|
3100
|
+
*/
|
|
3101
|
+
audio_description_url?: string;
|
|
2460
3102
|
[k: string]: unknown | undefined;
|
|
2461
3103
|
}
|
|
2462
3104
|
/**
|
|
@@ -2507,6 +3149,10 @@ export interface AudioAsset {
|
|
|
2507
3149
|
* True peak level in dBFS
|
|
2508
3150
|
*/
|
|
2509
3151
|
true_peak_dbfs?: number;
|
|
3152
|
+
/**
|
|
3153
|
+
* URL to text transcript of the audio content
|
|
3154
|
+
*/
|
|
3155
|
+
transcript_url?: string;
|
|
2510
3156
|
[k: string]: unknown | undefined;
|
|
2511
3157
|
}
|
|
2512
3158
|
/**
|
|
@@ -2535,18 +3181,39 @@ export interface HTMLAsset {
|
|
|
2535
3181
|
* HTML version (e.g., 'HTML5')
|
|
2536
3182
|
*/
|
|
2537
3183
|
version?: string;
|
|
2538
|
-
[k: string]: unknown | undefined;
|
|
2539
|
-
}
|
|
2540
|
-
/**
|
|
2541
|
-
* CSS stylesheet asset
|
|
2542
|
-
*/
|
|
2543
|
-
export interface CSSAsset {
|
|
2544
3184
|
/**
|
|
2545
|
-
*
|
|
3185
|
+
* Self-declared accessibility properties for this opaque creative
|
|
2546
3186
|
*/
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
3187
|
+
accessibility?: {
|
|
3188
|
+
/**
|
|
3189
|
+
* Text alternative describing the creative content
|
|
3190
|
+
*/
|
|
3191
|
+
alt_text?: string;
|
|
3192
|
+
/**
|
|
3193
|
+
* Whether the creative can be fully operated via keyboard
|
|
3194
|
+
*/
|
|
3195
|
+
keyboard_navigable?: boolean;
|
|
3196
|
+
/**
|
|
3197
|
+
* Whether the creative respects prefers-reduced-motion or provides pause/stop controls
|
|
3198
|
+
*/
|
|
3199
|
+
motion_control?: boolean;
|
|
3200
|
+
/**
|
|
3201
|
+
* Whether the creative has been tested with screen readers
|
|
3202
|
+
*/
|
|
3203
|
+
screen_reader_tested?: boolean;
|
|
3204
|
+
};
|
|
3205
|
+
[k: string]: unknown | undefined;
|
|
3206
|
+
}
|
|
3207
|
+
/**
|
|
3208
|
+
* CSS stylesheet asset
|
|
3209
|
+
*/
|
|
3210
|
+
export interface CSSAsset {
|
|
3211
|
+
/**
|
|
3212
|
+
* CSS content
|
|
3213
|
+
*/
|
|
3214
|
+
content: string;
|
|
3215
|
+
/**
|
|
3216
|
+
* CSS media query context (e.g., 'screen', 'print')
|
|
2550
3217
|
*/
|
|
2551
3218
|
media?: string;
|
|
2552
3219
|
[k: string]: unknown | undefined;
|
|
@@ -2560,6 +3227,27 @@ export interface JavaScriptAsset {
|
|
|
2560
3227
|
*/
|
|
2561
3228
|
content: string;
|
|
2562
3229
|
module_type?: JavaScriptModuleType;
|
|
3230
|
+
/**
|
|
3231
|
+
* Self-declared accessibility properties for this opaque creative
|
|
3232
|
+
*/
|
|
3233
|
+
accessibility?: {
|
|
3234
|
+
/**
|
|
3235
|
+
* Text alternative describing the creative content
|
|
3236
|
+
*/
|
|
3237
|
+
alt_text?: string;
|
|
3238
|
+
/**
|
|
3239
|
+
* Whether the creative can be fully operated via keyboard
|
|
3240
|
+
*/
|
|
3241
|
+
keyboard_navigable?: boolean;
|
|
3242
|
+
/**
|
|
3243
|
+
* Whether the creative respects prefers-reduced-motion or provides pause/stop controls
|
|
3244
|
+
*/
|
|
3245
|
+
motion_control?: boolean;
|
|
3246
|
+
/**
|
|
3247
|
+
* Whether the creative has been tested with screen readers
|
|
3248
|
+
*/
|
|
3249
|
+
screen_reader_tested?: boolean;
|
|
3250
|
+
};
|
|
2563
3251
|
[k: string]: unknown | undefined;
|
|
2564
3252
|
}
|
|
2565
3253
|
/**
|
|
@@ -2599,28 +3287,6 @@ export interface PromotedOfferings {
|
|
|
2599
3287
|
/**
|
|
2600
3288
|
* Inline brand manifest object
|
|
2601
3289
|
*/
|
|
2602
|
-
export interface PromotedProducts {
|
|
2603
|
-
/**
|
|
2604
|
-
* Direct product SKU references from the brand manifest product catalog
|
|
2605
|
-
*/
|
|
2606
|
-
manifest_skus?: string[];
|
|
2607
|
-
/**
|
|
2608
|
-
* Select products by tags from the brand manifest product catalog (e.g., 'organic', 'sauces', 'holiday')
|
|
2609
|
-
*/
|
|
2610
|
-
manifest_tags?: string[];
|
|
2611
|
-
/**
|
|
2612
|
-
* Select products from a specific category in the brand manifest product catalog (e.g., 'beverages/soft-drinks', 'food/sauces')
|
|
2613
|
-
*/
|
|
2614
|
-
manifest_category?: string;
|
|
2615
|
-
/**
|
|
2616
|
-
* Natural language query to select products from the brand manifest (e.g., 'all Kraft Heinz pasta sauces', 'organic products under $20')
|
|
2617
|
-
*/
|
|
2618
|
-
manifest_query?: string;
|
|
2619
|
-
[k: string]: unknown | undefined;
|
|
2620
|
-
}
|
|
2621
|
-
/**
|
|
2622
|
-
* A promotable offering from a brand. Can represent a campaign, product promotion, service, or any other thing the brand wants to make available. Offerings can be promoted via traditional creatives (using portfolio_ref or assets) or conversational SI experiences (via si_agent_url at the promoted-offerings level).
|
|
2623
|
-
*/
|
|
2624
3290
|
export interface Offering {
|
|
2625
3291
|
/**
|
|
2626
3292
|
* Unique identifier for this offering. Used by hosts to reference specific offerings in si_get_offering calls.
|
|
@@ -2768,7 +3434,7 @@ export interface Account {
|
|
|
2768
3434
|
*/
|
|
2769
3435
|
account_id: string;
|
|
2770
3436
|
/**
|
|
2771
|
-
* Human-readable account name (e.g., '
|
|
3437
|
+
* Human-readable account name (e.g., 'Acme', 'Acme c/o Pinnacle')
|
|
2772
3438
|
*/
|
|
2773
3439
|
name: string;
|
|
2774
3440
|
/**
|
|
@@ -2780,9 +3446,25 @@ export interface Account {
|
|
|
2780
3446
|
*/
|
|
2781
3447
|
billing_proxy?: string;
|
|
2782
3448
|
/**
|
|
2783
|
-
* Account status
|
|
3449
|
+
* Account status. pending_approval: seller reviewing (credit, contracts). payment_required: credit limit reached or funds depleted. suspended: was active, now paused. closed: terminated.
|
|
3450
|
+
*/
|
|
3451
|
+
status: 'active' | 'pending_approval' | 'payment_required' | 'suspended' | 'closed';
|
|
3452
|
+
/**
|
|
3453
|
+
* House domain where brand.json is hosted. Canonical identity anchor for the brand.
|
|
3454
|
+
*/
|
|
3455
|
+
house?: string;
|
|
3456
|
+
/**
|
|
3457
|
+
* Brand ID within the house portfolio (from brand.json)
|
|
3458
|
+
*/
|
|
3459
|
+
brand_id?: string;
|
|
3460
|
+
/**
|
|
3461
|
+
* Domain of the entity operating this account
|
|
3462
|
+
*/
|
|
3463
|
+
operator?: string;
|
|
3464
|
+
/**
|
|
3465
|
+
* Who is invoiced on this account. brand: seller invoices the brand directly. operator: seller invoices the operator (agency). agent: agent consolidates billing.
|
|
2784
3466
|
*/
|
|
2785
|
-
|
|
3467
|
+
billing?: 'brand' | 'operator' | 'agent';
|
|
2786
3468
|
/**
|
|
2787
3469
|
* Identifier for the rate card applied to this account
|
|
2788
3470
|
*/
|
|
@@ -2799,6 +3481,7 @@ export interface Account {
|
|
|
2799
3481
|
currency: string;
|
|
2800
3482
|
};
|
|
2801
3483
|
ext?: ExtensionObject;
|
|
3484
|
+
[k: string]: unknown | undefined;
|
|
2802
3485
|
}
|
|
2803
3486
|
/**
|
|
2804
3487
|
* Extension object for platform-specific, vendor-namespaced parameters. Extensions are always optional and must be namespaced under a vendor/platform key (e.g., ext.gam, ext.roku). Used for custom capabilities, partner-specific configuration, and features being proposed for standardization.
|
|
@@ -2842,6 +3525,7 @@ export interface Package {
|
|
|
2842
3525
|
* Format IDs that creative assets will be provided for this package
|
|
2843
3526
|
*/
|
|
2844
3527
|
format_ids_to_provide?: FormatID[];
|
|
3528
|
+
optimization_goal?: OptimizationGoal;
|
|
2845
3529
|
/**
|
|
2846
3530
|
* Whether this package is paused by the buyer. Paused packages do not deliver impressions. Defaults to false.
|
|
2847
3531
|
*/
|
|
@@ -3048,19 +3732,7 @@ export interface ListCreativesRequest {
|
|
|
3048
3732
|
field?: CreativeSortField;
|
|
3049
3733
|
direction?: SortDirection;
|
|
3050
3734
|
};
|
|
3051
|
-
|
|
3052
|
-
* Pagination parameters
|
|
3053
|
-
*/
|
|
3054
|
-
pagination?: {
|
|
3055
|
-
/**
|
|
3056
|
-
* Maximum number of creatives to return
|
|
3057
|
-
*/
|
|
3058
|
-
limit?: number;
|
|
3059
|
-
/**
|
|
3060
|
-
* Number of creatives to skip
|
|
3061
|
-
*/
|
|
3062
|
-
offset?: number;
|
|
3063
|
-
};
|
|
3735
|
+
pagination?: PaginationRequest;
|
|
3064
3736
|
/**
|
|
3065
3737
|
* Include package assignment information in response
|
|
3066
3738
|
*/
|
|
@@ -3086,24 +3758,34 @@ export interface ListCreativesRequest {
|
|
|
3086
3758
|
export interface CreativeFilters {
|
|
3087
3759
|
/**
|
|
3088
3760
|
* Filter creatives by owning accounts. Useful for agencies managing multiple client accounts.
|
|
3761
|
+
*
|
|
3762
|
+
* @minItems 1
|
|
3089
3763
|
*/
|
|
3090
|
-
account_ids?: string[];
|
|
3764
|
+
account_ids?: [string, ...string[]];
|
|
3091
3765
|
/**
|
|
3092
3766
|
* Filter by creative format types (e.g., video, audio, display)
|
|
3767
|
+
*
|
|
3768
|
+
* @minItems 1
|
|
3093
3769
|
*/
|
|
3094
|
-
formats?: string[];
|
|
3770
|
+
formats?: [string, ...string[]];
|
|
3095
3771
|
/**
|
|
3096
3772
|
* Filter by creative approval statuses
|
|
3773
|
+
*
|
|
3774
|
+
* @minItems 1
|
|
3097
3775
|
*/
|
|
3098
|
-
statuses?: CreativeStatus[];
|
|
3776
|
+
statuses?: [CreativeStatus, ...CreativeStatus[]];
|
|
3099
3777
|
/**
|
|
3100
3778
|
* Filter by creative tags (all tags must match)
|
|
3779
|
+
*
|
|
3780
|
+
* @minItems 1
|
|
3101
3781
|
*/
|
|
3102
|
-
tags?: string[];
|
|
3782
|
+
tags?: [string, ...string[]];
|
|
3103
3783
|
/**
|
|
3104
3784
|
* Filter by creative tags (any tag must match)
|
|
3785
|
+
*
|
|
3786
|
+
* @minItems 1
|
|
3105
3787
|
*/
|
|
3106
|
-
tags_any?: string[];
|
|
3788
|
+
tags_any?: [string, ...string[]];
|
|
3107
3789
|
/**
|
|
3108
3790
|
* Filter by creative names containing this text (case-insensitive)
|
|
3109
3791
|
*/
|
|
@@ -3111,9 +3793,10 @@ export interface CreativeFilters {
|
|
|
3111
3793
|
/**
|
|
3112
3794
|
* Filter by specific creative IDs
|
|
3113
3795
|
*
|
|
3796
|
+
* @minItems 1
|
|
3114
3797
|
* @maxItems 100
|
|
3115
3798
|
*/
|
|
3116
|
-
creative_ids?: string[];
|
|
3799
|
+
creative_ids?: [string, ...string[]];
|
|
3117
3800
|
/**
|
|
3118
3801
|
* Filter creatives created after this date (ISO 8601)
|
|
3119
3802
|
*/
|
|
@@ -3132,16 +3815,22 @@ export interface CreativeFilters {
|
|
|
3132
3815
|
updated_before?: string;
|
|
3133
3816
|
/**
|
|
3134
3817
|
* Filter creatives assigned to any of these packages
|
|
3818
|
+
*
|
|
3819
|
+
* @minItems 1
|
|
3135
3820
|
*/
|
|
3136
|
-
assigned_to_packages?: string[];
|
|
3821
|
+
assigned_to_packages?: [string, ...string[]];
|
|
3137
3822
|
/**
|
|
3138
3823
|
* Filter creatives assigned to any of these media buys
|
|
3824
|
+
*
|
|
3825
|
+
* @minItems 1
|
|
3139
3826
|
*/
|
|
3140
|
-
media_buy_ids?: string[];
|
|
3827
|
+
media_buy_ids?: [string, ...string[]];
|
|
3141
3828
|
/**
|
|
3142
3829
|
* Filter creatives assigned to media buys with any of these buyer references
|
|
3830
|
+
*
|
|
3831
|
+
* @minItems 1
|
|
3143
3832
|
*/
|
|
3144
|
-
buyer_refs?: string[];
|
|
3833
|
+
buyer_refs?: [string, ...string[]];
|
|
3145
3834
|
/**
|
|
3146
3835
|
* Filter for unassigned creatives when true, assigned creatives when false
|
|
3147
3836
|
*/
|
|
@@ -3153,7 +3842,7 @@ export interface CreativeFilters {
|
|
|
3153
3842
|
[k: string]: unknown | undefined;
|
|
3154
3843
|
}
|
|
3155
3844
|
/**
|
|
3156
|
-
*
|
|
3845
|
+
* Standard cursor-based pagination parameters for list operations
|
|
3157
3846
|
*/
|
|
3158
3847
|
/**
|
|
3159
3848
|
* Sort direction for list queries
|
|
@@ -3206,11 +3895,11 @@ export interface ListCreativesResponse {
|
|
|
3206
3895
|
/**
|
|
3207
3896
|
* Total number of creatives matching filters (across all pages)
|
|
3208
3897
|
*/
|
|
3209
|
-
total_matching
|
|
3898
|
+
total_matching?: number;
|
|
3210
3899
|
/**
|
|
3211
3900
|
* Number of creatives returned in this response
|
|
3212
3901
|
*/
|
|
3213
|
-
returned
|
|
3902
|
+
returned?: number;
|
|
3214
3903
|
/**
|
|
3215
3904
|
* List of filters that were applied to the query
|
|
3216
3905
|
*/
|
|
@@ -3223,31 +3912,7 @@ export interface ListCreativesResponse {
|
|
|
3223
3912
|
direction?: SortDirection;
|
|
3224
3913
|
};
|
|
3225
3914
|
};
|
|
3226
|
-
|
|
3227
|
-
* Pagination information for navigating results
|
|
3228
|
-
*/
|
|
3229
|
-
pagination: {
|
|
3230
|
-
/**
|
|
3231
|
-
* Maximum number of results requested
|
|
3232
|
-
*/
|
|
3233
|
-
limit: number;
|
|
3234
|
-
/**
|
|
3235
|
-
* Number of results skipped
|
|
3236
|
-
*/
|
|
3237
|
-
offset: number;
|
|
3238
|
-
/**
|
|
3239
|
-
* Whether more results are available
|
|
3240
|
-
*/
|
|
3241
|
-
has_more: boolean;
|
|
3242
|
-
/**
|
|
3243
|
-
* Total number of pages available
|
|
3244
|
-
*/
|
|
3245
|
-
total_pages?: number;
|
|
3246
|
-
/**
|
|
3247
|
-
* Current page number (1-based)
|
|
3248
|
-
*/
|
|
3249
|
-
current_page?: number;
|
|
3250
|
-
};
|
|
3915
|
+
pagination: PaginationResponse;
|
|
3251
3916
|
/**
|
|
3252
3917
|
* Array of creative assets matching the query
|
|
3253
3918
|
*/
|
|
@@ -3386,7 +4051,7 @@ export interface ListCreativesResponse {
|
|
|
3386
4051
|
ext?: ExtensionObject;
|
|
3387
4052
|
}
|
|
3388
4053
|
/**
|
|
3389
|
-
*
|
|
4054
|
+
* Standard cursor-based pagination metadata for list responses
|
|
3390
4055
|
*/
|
|
3391
4056
|
/**
|
|
3392
4057
|
* Request parameters for updating campaign and package settings
|
|
@@ -3449,6 +4114,7 @@ export type PackageUpdate = {
|
|
|
3449
4114
|
* Pause/resume specific package (true = paused, false = active)
|
|
3450
4115
|
*/
|
|
3451
4116
|
paused?: boolean;
|
|
4117
|
+
optimization_goal?: OptimizationGoal;
|
|
3452
4118
|
targeting_overlay?: TargetingOverlay;
|
|
3453
4119
|
/**
|
|
3454
4120
|
* Replace creative assignments for this package with optional weights and placement targeting. Uses replacement semantics - omit to leave assignments unchanged.
|
|
@@ -3457,9 +4123,10 @@ export type PackageUpdate = {
|
|
|
3457
4123
|
/**
|
|
3458
4124
|
* Upload new creative assets and assign to this package (creatives will be added to library). Use creative_assignments instead for existing library creatives.
|
|
3459
4125
|
*
|
|
4126
|
+
* @minItems 1
|
|
3460
4127
|
* @maxItems 100
|
|
3461
4128
|
*/
|
|
3462
|
-
creatives?: CreativeAsset[];
|
|
4129
|
+
creatives?: [CreativeAsset, ...CreativeAsset[]];
|
|
3463
4130
|
ext?: ExtensionObject;
|
|
3464
4131
|
[k: string]: unknown | undefined;
|
|
3465
4132
|
} & {
|
|
@@ -3517,6 +4184,10 @@ export type MediaBuyStatus = 'pending_activation' | 'active' | 'paused' | 'compl
|
|
|
3517
4184
|
* Request parameters for retrieving comprehensive delivery metrics
|
|
3518
4185
|
*/
|
|
3519
4186
|
export interface GetMediaBuyDeliveryRequest {
|
|
4187
|
+
/**
|
|
4188
|
+
* Filter delivery data to a specific account. When provided, only returns media buys belonging to this account. When omitted, returns data across all accessible accounts. Optional if the agent has a single account.
|
|
4189
|
+
*/
|
|
4190
|
+
account_id?: string;
|
|
3520
4191
|
/**
|
|
3521
4192
|
* Array of publisher media buy IDs to get delivery data for
|
|
3522
4193
|
*/
|
|
@@ -3530,11 +4201,11 @@ export interface GetMediaBuyDeliveryRequest {
|
|
|
3530
4201
|
*/
|
|
3531
4202
|
status_filter?: MediaBuyStatus | MediaBuyStatus[];
|
|
3532
4203
|
/**
|
|
3533
|
-
* Start date for reporting period (YYYY-MM-DD)
|
|
4204
|
+
* Start date for reporting period (YYYY-MM-DD). When omitted along with end_date, returns campaign lifetime data. Only accepted when the product's reporting_capabilities.date_range_support is 'date_range'.
|
|
3534
4205
|
*/
|
|
3535
4206
|
start_date?: string;
|
|
3536
4207
|
/**
|
|
3537
|
-
* End date for reporting period (YYYY-MM-DD)
|
|
4208
|
+
* End date for reporting period (YYYY-MM-DD). When omitted along with start_date, returns campaign lifetime data. Only accepted when the product's reporting_capabilities.date_range_support is 'date_range'.
|
|
3538
4209
|
*/
|
|
3539
4210
|
end_date?: string;
|
|
3540
4211
|
context?: ContextObject;
|
|
@@ -3543,14 +4214,18 @@ export interface GetMediaBuyDeliveryRequest {
|
|
|
3543
4214
|
/**
|
|
3544
4215
|
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
3545
4216
|
*/
|
|
4217
|
+
/**
|
|
4218
|
+
* Attribution model used to assign credit when multiple touchpoints exist
|
|
4219
|
+
*/
|
|
4220
|
+
export type AttributionModel = 'last_touch' | 'first_touch' | 'linear' | 'time_decay' | 'data_driven';
|
|
3546
4221
|
/**
|
|
3547
4222
|
* Pricing model used for this media buy
|
|
3548
4223
|
*/
|
|
3549
|
-
export type PricingModel = 'cpm' | 'vcpm' | 'cpc' | 'cpcv' | 'cpv' | 'cpp' | 'flat_rate';
|
|
4224
|
+
export type PricingModel = 'cpm' | 'vcpm' | 'cpc' | 'cpcv' | 'cpv' | 'cpp' | 'cpa' | 'flat_rate' | 'time';
|
|
3550
4225
|
/**
|
|
3551
|
-
* The
|
|
4226
|
+
* The event type
|
|
3552
4227
|
*/
|
|
3553
|
-
export type PricingModel1 = 'cpm' | 'vcpm' | 'cpc' | 'cpcv' | 'cpv' | 'cpp' | 'flat_rate';
|
|
4228
|
+
export type PricingModel1 = 'cpm' | 'vcpm' | 'cpc' | 'cpcv' | 'cpv' | 'cpp' | 'cpa' | 'flat_rate' | 'time';
|
|
3554
4229
|
/**
|
|
3555
4230
|
* Response payload for get_media_buy_delivery task
|
|
3556
4231
|
*/
|
|
@@ -3592,6 +4267,7 @@ export interface GetMediaBuyDeliveryResponse {
|
|
|
3592
4267
|
* ISO 4217 currency code
|
|
3593
4268
|
*/
|
|
3594
4269
|
currency: string;
|
|
4270
|
+
attribution_window?: AttributionWindow;
|
|
3595
4271
|
/**
|
|
3596
4272
|
* Combined metrics across all returned media buys. Only included in API responses (get_media_buy_delivery), not in webhook notifications.
|
|
3597
4273
|
*/
|
|
@@ -3612,6 +4288,26 @@ export interface GetMediaBuyDeliveryResponse {
|
|
|
3612
4288
|
* Total video completions across all media buys (if applicable)
|
|
3613
4289
|
*/
|
|
3614
4290
|
video_completions?: number;
|
|
4291
|
+
/**
|
|
4292
|
+
* Total conversions across all media buys (if applicable)
|
|
4293
|
+
*/
|
|
4294
|
+
conversions?: number;
|
|
4295
|
+
/**
|
|
4296
|
+
* Total conversion value across all media buys (if applicable)
|
|
4297
|
+
*/
|
|
4298
|
+
conversion_value?: number;
|
|
4299
|
+
/**
|
|
4300
|
+
* Aggregate return on ad spend across all media buys (total conversion_value / total spend)
|
|
4301
|
+
*/
|
|
4302
|
+
roas?: number;
|
|
4303
|
+
/**
|
|
4304
|
+
* Fraction of total conversions across all media buys from first-time brand buyers (weighted by conversion volume, not a simple average of per-buy rates)
|
|
4305
|
+
*/
|
|
4306
|
+
new_to_brand_rate?: number;
|
|
4307
|
+
/**
|
|
4308
|
+
* Aggregate cost per conversion across all media buys (total spend / total conversions)
|
|
4309
|
+
*/
|
|
4310
|
+
cost_per_acquisition?: number;
|
|
3615
4311
|
/**
|
|
3616
4312
|
* Number of media buys included in the response
|
|
3617
4313
|
*/
|
|
@@ -3681,6 +4377,19 @@ export interface GetMediaBuyDeliveryResponse {
|
|
|
3681
4377
|
* Whether this package is currently paused by the buyer
|
|
3682
4378
|
*/
|
|
3683
4379
|
paused?: boolean;
|
|
4380
|
+
/**
|
|
4381
|
+
* Metrics broken down by creative within this package. Available when the seller supports creative-level reporting.
|
|
4382
|
+
*/
|
|
4383
|
+
by_creative?: (DeliveryMetrics & {
|
|
4384
|
+
/**
|
|
4385
|
+
* Creative identifier matching the creative assignment
|
|
4386
|
+
*/
|
|
4387
|
+
creative_id: string;
|
|
4388
|
+
/**
|
|
4389
|
+
* Observed delivery share for this creative within the package during the reporting period, expressed as a percentage (0-100). Reflects actual delivery distribution, not a configured setting.
|
|
4390
|
+
*/
|
|
4391
|
+
weight?: number;
|
|
4392
|
+
})[];
|
|
3684
4393
|
})[];
|
|
3685
4394
|
/**
|
|
3686
4395
|
* Day-by-day delivery
|
|
@@ -3698,6 +4407,22 @@ export interface GetMediaBuyDeliveryResponse {
|
|
|
3698
4407
|
* Daily spend
|
|
3699
4408
|
*/
|
|
3700
4409
|
spend: number;
|
|
4410
|
+
/**
|
|
4411
|
+
* Daily conversions
|
|
4412
|
+
*/
|
|
4413
|
+
conversions?: number;
|
|
4414
|
+
/**
|
|
4415
|
+
* Daily conversion value
|
|
4416
|
+
*/
|
|
4417
|
+
conversion_value?: number;
|
|
4418
|
+
/**
|
|
4419
|
+
* Daily return on ad spend (conversion_value / spend)
|
|
4420
|
+
*/
|
|
4421
|
+
roas?: number;
|
|
4422
|
+
/**
|
|
4423
|
+
* Daily fraction of conversions from first-time brand buyers (0 = none, 1 = all)
|
|
4424
|
+
*/
|
|
4425
|
+
new_to_brand_rate?: number;
|
|
3701
4426
|
}[];
|
|
3702
4427
|
}[];
|
|
3703
4428
|
/**
|
|
@@ -3707,6 +4432,21 @@ export interface GetMediaBuyDeliveryResponse {
|
|
|
3707
4432
|
context?: ContextObject;
|
|
3708
4433
|
ext?: ExtensionObject;
|
|
3709
4434
|
}
|
|
4435
|
+
/**
|
|
4436
|
+
* Attribution methodology and lookback windows used for conversion metrics in this response. All media buys from a single seller share the same attribution methodology. Enables cross-platform comparison (e.g., Amazon 14-day click vs. Criteo 30-day click).
|
|
4437
|
+
*/
|
|
4438
|
+
export interface AttributionWindow {
|
|
4439
|
+
/**
|
|
4440
|
+
* Click-through attribution window in days. Conversions occurring within this many days after a click are attributed to the ad.
|
|
4441
|
+
*/
|
|
4442
|
+
click_window_days?: number;
|
|
4443
|
+
/**
|
|
4444
|
+
* View-through attribution window in days. Conversions occurring within this many days after an ad impression (without click) are attributed to the ad.
|
|
4445
|
+
*/
|
|
4446
|
+
view_window_days?: number;
|
|
4447
|
+
model: AttributionModel;
|
|
4448
|
+
[k: string]: unknown | undefined;
|
|
4449
|
+
}
|
|
3710
4450
|
/**
|
|
3711
4451
|
* Standard delivery metrics that can be reported at media buy, package, or creative level
|
|
3712
4452
|
*/
|
|
@@ -3740,13 +4480,48 @@ export interface DeliveryMetrics {
|
|
|
3740
4480
|
*/
|
|
3741
4481
|
completion_rate?: number;
|
|
3742
4482
|
/**
|
|
3743
|
-
*
|
|
4483
|
+
* Total conversions attributed to this delivery. When by_event_type is present, this equals the sum of all by_event_type[].count entries.
|
|
3744
4484
|
*/
|
|
3745
4485
|
conversions?: number;
|
|
3746
4486
|
/**
|
|
3747
|
-
*
|
|
4487
|
+
* Total monetary value of attributed conversions (in the reporting currency)
|
|
4488
|
+
*/
|
|
4489
|
+
conversion_value?: number;
|
|
4490
|
+
/**
|
|
4491
|
+
* Return on ad spend (conversion_value / spend)
|
|
4492
|
+
*/
|
|
4493
|
+
roas?: number;
|
|
4494
|
+
/**
|
|
4495
|
+
* Cost per conversion (spend / conversions)
|
|
4496
|
+
*/
|
|
4497
|
+
cost_per_acquisition?: number;
|
|
4498
|
+
/**
|
|
4499
|
+
* Fraction of conversions from first-time brand buyers (0 = none, 1 = all)
|
|
4500
|
+
*/
|
|
4501
|
+
new_to_brand_rate?: number;
|
|
4502
|
+
/**
|
|
4503
|
+
* Leads generated (convenience alias for by_event_type where event_type='lead')
|
|
3748
4504
|
*/
|
|
3749
4505
|
leads?: number;
|
|
4506
|
+
/**
|
|
4507
|
+
* Conversion metrics broken down by event type. Spend-derived metrics (ROAS, CPA) are only available at the package/totals level since spend cannot be attributed to individual event types.
|
|
4508
|
+
*/
|
|
4509
|
+
by_event_type?: {
|
|
4510
|
+
event_type: EventType;
|
|
4511
|
+
/**
|
|
4512
|
+
* Event source that produced these conversions (for disambiguation when multiple event sources are configured)
|
|
4513
|
+
*/
|
|
4514
|
+
event_source_id?: string;
|
|
4515
|
+
/**
|
|
4516
|
+
* Number of events of this type
|
|
4517
|
+
*/
|
|
4518
|
+
count: number;
|
|
4519
|
+
/**
|
|
4520
|
+
* Total monetary value of events of this type
|
|
4521
|
+
*/
|
|
4522
|
+
value?: number;
|
|
4523
|
+
[k: string]: unknown | undefined;
|
|
4524
|
+
}[];
|
|
3750
4525
|
/**
|
|
3751
4526
|
* Gross Rating Points delivered (for CPP)
|
|
3752
4527
|
*/
|
|
@@ -3836,6 +4611,55 @@ export interface DeliveryMetrics {
|
|
|
3836
4611
|
}[];
|
|
3837
4612
|
[k: string]: unknown | undefined;
|
|
3838
4613
|
};
|
|
4614
|
+
/**
|
|
4615
|
+
* Viewability metrics. Viewable rate should be calculated as viewable_impressions / measurable_impressions (not total impressions), since some environments cannot measure viewability.
|
|
4616
|
+
*/
|
|
4617
|
+
viewability?: {
|
|
4618
|
+
/**
|
|
4619
|
+
* Impressions where viewability could be measured. Excludes environments without measurement capability (e.g., non-Intersection Observer browsers, certain app environments).
|
|
4620
|
+
*/
|
|
4621
|
+
measurable_impressions?: number;
|
|
4622
|
+
/**
|
|
4623
|
+
* Impressions that met the viewability threshold defined by the measurement standard.
|
|
4624
|
+
*/
|
|
4625
|
+
viewable_impressions?: number;
|
|
4626
|
+
/**
|
|
4627
|
+
* Viewable impression rate (viewable_impressions / measurable_impressions). Range 0.0 to 1.0.
|
|
4628
|
+
*/
|
|
4629
|
+
viewable_rate?: number;
|
|
4630
|
+
/**
|
|
4631
|
+
* Viewability measurement standard. 'mrc': 50% of pixels in view for 1 second (display) or 2 seconds (video), per MRC/IAB guidelines. 'groupm': 100% of pixels in view for the same durations. These are materially different thresholds and should not be compared across standards.
|
|
4632
|
+
*/
|
|
4633
|
+
standard?: 'mrc' | 'groupm';
|
|
4634
|
+
[k: string]: unknown | undefined;
|
|
4635
|
+
};
|
|
4636
|
+
/**
|
|
4637
|
+
* Platform-specific engagement rate (0.0 to 1.0). Definition varies by platform (e.g., likes+comments+shares/impressions on social, interactions/impressions on rich media).
|
|
4638
|
+
*/
|
|
4639
|
+
engagement_rate?: number;
|
|
4640
|
+
/**
|
|
4641
|
+
* Cost per click (spend / clicks)
|
|
4642
|
+
*/
|
|
4643
|
+
cost_per_click?: number;
|
|
4644
|
+
/**
|
|
4645
|
+
* Conversion metrics broken down by action source (website, app, in_store, etc.). Useful for omnichannel sellers where conversions occur across digital and physical channels.
|
|
4646
|
+
*/
|
|
4647
|
+
by_action_source?: {
|
|
4648
|
+
action_source: ActionSource;
|
|
4649
|
+
/**
|
|
4650
|
+
* Event source that produced these conversions (for disambiguation when multiple event sources are configured)
|
|
4651
|
+
*/
|
|
4652
|
+
event_source_id?: string;
|
|
4653
|
+
/**
|
|
4654
|
+
* Number of conversions from this action source
|
|
4655
|
+
*/
|
|
4656
|
+
count: number;
|
|
4657
|
+
/**
|
|
4658
|
+
* Total monetary value of conversions from this action source
|
|
4659
|
+
*/
|
|
4660
|
+
value?: number;
|
|
4661
|
+
[k: string]: unknown | undefined;
|
|
4662
|
+
}[];
|
|
3839
4663
|
[k: string]: unknown | undefined;
|
|
3840
4664
|
}
|
|
3841
4665
|
/**
|
|
@@ -3926,71 +4750,420 @@ export interface ProvidePerformanceFeedbackError {
|
|
|
3926
4750
|
* Standard error structure for task-specific errors and warnings
|
|
3927
4751
|
*/
|
|
3928
4752
|
/**
|
|
3929
|
-
*
|
|
3930
|
-
*/
|
|
3931
|
-
export type HTTPMethod = 'GET' | 'POST';
|
|
3932
|
-
/**
|
|
3933
|
-
* Expected content type of webhook response
|
|
3934
|
-
*/
|
|
3935
|
-
export type WebhookResponseType = 'html' | 'json' | 'xml' | 'javascript';
|
|
3936
|
-
/**
|
|
3937
|
-
* Authentication method
|
|
3938
|
-
*/
|
|
3939
|
-
export type WebhookSecurityMethod = 'hmac_sha256' | 'api_key' | 'none';
|
|
3940
|
-
/**
|
|
3941
|
-
* DAAST (Digital Audio Ad Serving Template) tag for third-party audio ad serving
|
|
4753
|
+
* Standard marketing event types for event logging, aligned with IAB ECAPI
|
|
3942
4754
|
*/
|
|
3943
|
-
export interface
|
|
4755
|
+
export interface SyncEventSourcesRequest {
|
|
3944
4756
|
/**
|
|
3945
|
-
*
|
|
4757
|
+
* Account to configure event sources for
|
|
3946
4758
|
*/
|
|
3947
|
-
|
|
3948
|
-
creative_manifest?: CreativeManifest;
|
|
3949
|
-
target_format_id: FormatID1;
|
|
3950
|
-
context?: ContextObject;
|
|
3951
|
-
ext?: ExtensionObject;
|
|
3952
|
-
}
|
|
3953
|
-
/**
|
|
3954
|
-
* Creative manifest to transform or generate from. For pure generation, this should include the target format_id and any required input assets (e.g., promoted_offerings for generative formats). For transformation (e.g., resizing, reformatting), this is the complete creative to adapt.
|
|
3955
|
-
*/
|
|
3956
|
-
export interface CreativeManifest {
|
|
3957
|
-
format_id: FormatID;
|
|
4759
|
+
account_id: string;
|
|
3958
4760
|
/**
|
|
3959
|
-
*
|
|
4761
|
+
* Event sources to sync (create or update). When omitted, the call is discovery-only and returns all existing event sources on the account without modification.
|
|
3960
4762
|
*/
|
|
3961
|
-
|
|
4763
|
+
event_sources?: {
|
|
4764
|
+
/**
|
|
4765
|
+
* Unique identifier for this event source
|
|
4766
|
+
*/
|
|
4767
|
+
event_source_id: string;
|
|
4768
|
+
/**
|
|
4769
|
+
* Human-readable name for this event source
|
|
4770
|
+
*/
|
|
4771
|
+
name?: string;
|
|
4772
|
+
/**
|
|
4773
|
+
* Event types this source handles (e.g. purchase, lead). If omitted, accepts all event types.
|
|
4774
|
+
*/
|
|
4775
|
+
event_types?: EventType[];
|
|
4776
|
+
/**
|
|
4777
|
+
* Domains authorized to send events for this event source
|
|
4778
|
+
*/
|
|
4779
|
+
allowed_domains?: string[];
|
|
4780
|
+
}[];
|
|
3962
4781
|
/**
|
|
3963
|
-
*
|
|
3964
|
-
*
|
|
3965
|
-
* IMPORTANT: Creative manifest validation MUST be performed in the context of the format specification. The format defines what type each asset_id should be, which eliminates any validation ambiguity.
|
|
4782
|
+
* When true, event sources not included in this sync will be removed
|
|
3966
4783
|
*/
|
|
3967
|
-
|
|
3968
|
-
|
|
3969
|
-
};
|
|
4784
|
+
delete_missing?: boolean;
|
|
4785
|
+
context?: ContextObject;
|
|
3970
4786
|
ext?: ExtensionObject;
|
|
3971
|
-
[k: string]: unknown | undefined;
|
|
3972
4787
|
}
|
|
3973
4788
|
/**
|
|
3974
|
-
*
|
|
4789
|
+
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
3975
4790
|
*/
|
|
3976
|
-
|
|
3977
|
-
|
|
3978
|
-
|
|
3979
|
-
|
|
3980
|
-
|
|
3981
|
-
|
|
4791
|
+
/**
|
|
4792
|
+
* Response from event source sync operation. Returns either per-source results OR operation-level errors.
|
|
4793
|
+
*/
|
|
4794
|
+
export type SyncEventSourcesResponse = SyncEventSourcesSuccess | SyncEventSourcesError;
|
|
4795
|
+
/**
|
|
4796
|
+
* Standard marketing event types for event logging, aligned with IAB ECAPI
|
|
4797
|
+
*/
|
|
4798
|
+
export interface SyncEventSourcesSuccess {
|
|
3982
4799
|
/**
|
|
3983
|
-
*
|
|
4800
|
+
* Results for each event source, including both synced and seller-managed sources on the account
|
|
4801
|
+
*/
|
|
4802
|
+
event_sources: {
|
|
4803
|
+
/**
|
|
4804
|
+
* Event source ID from the request
|
|
4805
|
+
*/
|
|
4806
|
+
event_source_id: string;
|
|
4807
|
+
/**
|
|
4808
|
+
* Name of the event source
|
|
4809
|
+
*/
|
|
4810
|
+
name?: string;
|
|
4811
|
+
/**
|
|
4812
|
+
* Seller-assigned identifier for this event source (the ID in the seller's ad platform)
|
|
4813
|
+
*/
|
|
4814
|
+
seller_id?: string;
|
|
4815
|
+
/**
|
|
4816
|
+
* Event types this source handles
|
|
4817
|
+
*/
|
|
4818
|
+
event_types?: EventType[];
|
|
4819
|
+
action_source?: ActionSource;
|
|
4820
|
+
/**
|
|
4821
|
+
* Who manages this event source. 'buyer' = configured via this sync. 'seller' = always-on, managed by the seller (e.g. Amazon sales attribution for Amazon advertisers).
|
|
4822
|
+
*/
|
|
4823
|
+
managed_by?: 'buyer' | 'seller';
|
|
4824
|
+
/**
|
|
4825
|
+
* Implementation details for activating this event source (e.g. JavaScript tag, pixel URL)
|
|
4826
|
+
*/
|
|
4827
|
+
setup?: {
|
|
4828
|
+
/**
|
|
4829
|
+
* Code snippet to place on the site (JavaScript, HTML pixel, etc.)
|
|
4830
|
+
*/
|
|
4831
|
+
snippet?: string;
|
|
4832
|
+
/**
|
|
4833
|
+
* Type of implementation. 'server_only' means no client-side tag is needed.
|
|
4834
|
+
*/
|
|
4835
|
+
snippet_type?: 'javascript' | 'html' | 'pixel_url' | 'server_only';
|
|
4836
|
+
/**
|
|
4837
|
+
* Human/agent-readable setup instructions
|
|
4838
|
+
*/
|
|
4839
|
+
instructions?: string;
|
|
4840
|
+
};
|
|
4841
|
+
/**
|
|
4842
|
+
* Action taken for this event source
|
|
4843
|
+
*/
|
|
4844
|
+
action: 'created' | 'updated' | 'unchanged' | 'deleted' | 'failed';
|
|
4845
|
+
/**
|
|
4846
|
+
* Errors for this event source (only present when action='failed')
|
|
4847
|
+
*/
|
|
4848
|
+
errors?: string[];
|
|
4849
|
+
}[];
|
|
4850
|
+
context?: ContextObject;
|
|
4851
|
+
ext?: ExtensionObject;
|
|
4852
|
+
}
|
|
4853
|
+
/**
|
|
4854
|
+
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
4855
|
+
*/
|
|
4856
|
+
export interface SyncEventSourcesError {
|
|
4857
|
+
/**
|
|
4858
|
+
* Operation-level errors that prevented processing
|
|
4859
|
+
*/
|
|
4860
|
+
errors: Error[];
|
|
4861
|
+
context?: ContextObject;
|
|
4862
|
+
ext?: ExtensionObject;
|
|
4863
|
+
}
|
|
4864
|
+
/**
|
|
4865
|
+
* Standard error structure for task-specific errors and warnings
|
|
4866
|
+
*/
|
|
4867
|
+
/**
|
|
4868
|
+
* Standard event type
|
|
4869
|
+
*/
|
|
4870
|
+
export type UserMatch = {
|
|
4871
|
+
[k: string]: unknown | undefined;
|
|
4872
|
+
} & {
|
|
4873
|
+
/**
|
|
4874
|
+
* Universal ID values for user matching
|
|
4875
|
+
*
|
|
4876
|
+
* @minItems 1
|
|
4877
|
+
*/
|
|
4878
|
+
uids?: [
|
|
4879
|
+
{
|
|
4880
|
+
type: UIDType;
|
|
4881
|
+
/**
|
|
4882
|
+
* Universal ID value
|
|
4883
|
+
*/
|
|
4884
|
+
value: string;
|
|
4885
|
+
[k: string]: unknown | undefined;
|
|
4886
|
+
},
|
|
4887
|
+
...{
|
|
4888
|
+
type: UIDType;
|
|
4889
|
+
/**
|
|
4890
|
+
* Universal ID value
|
|
4891
|
+
*/
|
|
4892
|
+
value: string;
|
|
4893
|
+
[k: string]: unknown | undefined;
|
|
4894
|
+
}[]
|
|
4895
|
+
];
|
|
4896
|
+
/**
|
|
4897
|
+
* SHA-256 hash of lowercase, trimmed email address. Buyer must normalize before hashing: lowercase, trim whitespace.
|
|
4898
|
+
*/
|
|
4899
|
+
hashed_email?: string;
|
|
4900
|
+
/**
|
|
4901
|
+
* SHA-256 hash of E.164-formatted phone number (e.g. +12065551234). Buyer must normalize to E.164 before hashing.
|
|
4902
|
+
*/
|
|
4903
|
+
hashed_phone?: string;
|
|
4904
|
+
/**
|
|
4905
|
+
* Platform click identifier (fbclid, gclid, ttclid, ScCid, etc.)
|
|
4906
|
+
*/
|
|
4907
|
+
click_id?: string;
|
|
4908
|
+
/**
|
|
4909
|
+
* Type of click identifier (e.g. fbclid, gclid, ttclid, msclkid, ScCid)
|
|
4910
|
+
*/
|
|
4911
|
+
click_id_type?: string;
|
|
4912
|
+
/**
|
|
4913
|
+
* Client IP address for probabilistic matching
|
|
4914
|
+
*/
|
|
4915
|
+
client_ip?: string;
|
|
4916
|
+
/**
|
|
4917
|
+
* Client user agent string for probabilistic matching
|
|
4918
|
+
*/
|
|
4919
|
+
client_user_agent?: string;
|
|
4920
|
+
ext?: ExtensionObject;
|
|
4921
|
+
[k: string]: unknown | undefined;
|
|
4922
|
+
};
|
|
4923
|
+
/**
|
|
4924
|
+
* Universal ID type
|
|
4925
|
+
*/
|
|
4926
|
+
export type UIDType = 'rampid' | 'id5' | 'uid2' | 'euid' | 'pairid' | 'external_id' | 'maid' | 'other';
|
|
4927
|
+
/**
|
|
4928
|
+
* Where the event originated
|
|
4929
|
+
*/
|
|
4930
|
+
export interface LogEventRequest {
|
|
4931
|
+
/**
|
|
4932
|
+
* Event source configured on the account via sync_event_sources
|
|
4933
|
+
*/
|
|
4934
|
+
event_source_id: string;
|
|
4935
|
+
/**
|
|
4936
|
+
* Test event code for validation without affecting production data. Events with this code appear in the platform's test events UI.
|
|
4937
|
+
*/
|
|
4938
|
+
test_event_code?: string;
|
|
4939
|
+
/**
|
|
4940
|
+
* Events to log
|
|
4941
|
+
*
|
|
4942
|
+
* @maxItems 10000
|
|
4943
|
+
*/
|
|
4944
|
+
events: Event[];
|
|
4945
|
+
context?: ContextObject;
|
|
4946
|
+
ext?: ExtensionObject;
|
|
4947
|
+
}
|
|
4948
|
+
/**
|
|
4949
|
+
* A marketing event (conversion, engagement, or custom) for attribution and optimization
|
|
4950
|
+
*/
|
|
4951
|
+
export interface Event {
|
|
4952
|
+
/**
|
|
4953
|
+
* Unique identifier for deduplication (scoped to event_type + event_source_id)
|
|
4954
|
+
*/
|
|
4955
|
+
event_id: string;
|
|
4956
|
+
event_type: EventType;
|
|
4957
|
+
/**
|
|
4958
|
+
* ISO 8601 timestamp when the event occurred
|
|
4959
|
+
*/
|
|
4960
|
+
event_time: string;
|
|
4961
|
+
user_match?: UserMatch;
|
|
4962
|
+
custom_data?: EventCustomData;
|
|
4963
|
+
action_source?: ActionSource;
|
|
4964
|
+
/**
|
|
4965
|
+
* URL where the event occurred (required when action_source is 'website')
|
|
4966
|
+
*/
|
|
4967
|
+
event_source_url?: string;
|
|
4968
|
+
/**
|
|
4969
|
+
* Name for custom events (used when event_type is 'custom')
|
|
4970
|
+
*/
|
|
4971
|
+
custom_event_name?: string;
|
|
4972
|
+
ext?: ExtensionObject;
|
|
4973
|
+
[k: string]: unknown | undefined;
|
|
4974
|
+
}
|
|
4975
|
+
/**
|
|
4976
|
+
* Extension object for platform-specific, vendor-namespaced parameters. Extensions are always optional and must be namespaced under a vendor/platform key (e.g., ext.gam, ext.roku). Used for custom capabilities, partner-specific configuration, and features being proposed for standardization.
|
|
4977
|
+
*/
|
|
4978
|
+
export interface EventCustomData {
|
|
4979
|
+
/**
|
|
4980
|
+
* Monetary value of the event (should be accompanied by currency)
|
|
4981
|
+
*/
|
|
4982
|
+
value?: number;
|
|
4983
|
+
/**
|
|
4984
|
+
* ISO 4217 currency code
|
|
4985
|
+
*/
|
|
4986
|
+
currency?: string;
|
|
4987
|
+
/**
|
|
4988
|
+
* Unique order or transaction identifier
|
|
4989
|
+
*/
|
|
4990
|
+
order_id?: string;
|
|
4991
|
+
/**
|
|
4992
|
+
* Product or content identifiers
|
|
4993
|
+
*/
|
|
4994
|
+
content_ids?: string[];
|
|
4995
|
+
/**
|
|
4996
|
+
* Category of content (product, service, etc.)
|
|
4997
|
+
*/
|
|
4998
|
+
content_type?: string;
|
|
4999
|
+
/**
|
|
5000
|
+
* Name of the product or content
|
|
5001
|
+
*/
|
|
5002
|
+
content_name?: string;
|
|
5003
|
+
/**
|
|
5004
|
+
* Category of the product or content
|
|
5005
|
+
*/
|
|
5006
|
+
content_category?: string;
|
|
5007
|
+
/**
|
|
5008
|
+
* Number of items in the event
|
|
5009
|
+
*/
|
|
5010
|
+
num_items?: number;
|
|
5011
|
+
/**
|
|
5012
|
+
* Search query for search events
|
|
5013
|
+
*/
|
|
5014
|
+
search_string?: string;
|
|
5015
|
+
/**
|
|
5016
|
+
* Per-item details for e-commerce events
|
|
5017
|
+
*/
|
|
5018
|
+
contents?: {
|
|
5019
|
+
/**
|
|
5020
|
+
* Product or content identifier
|
|
5021
|
+
*/
|
|
5022
|
+
id: string;
|
|
5023
|
+
/**
|
|
5024
|
+
* Quantity of this item
|
|
5025
|
+
*/
|
|
5026
|
+
quantity?: number;
|
|
5027
|
+
/**
|
|
5028
|
+
* Price per unit of this item
|
|
5029
|
+
*/
|
|
5030
|
+
price?: number;
|
|
5031
|
+
/**
|
|
5032
|
+
* Brand name of this item
|
|
5033
|
+
*/
|
|
5034
|
+
brand?: string;
|
|
5035
|
+
[k: string]: unknown | undefined;
|
|
5036
|
+
}[];
|
|
5037
|
+
ext?: ExtensionObject;
|
|
5038
|
+
[k: string]: unknown | undefined;
|
|
5039
|
+
}
|
|
5040
|
+
/**
|
|
5041
|
+
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
5042
|
+
*/
|
|
5043
|
+
/**
|
|
5044
|
+
* Response from event logging operation. Returns either event processing results OR operation-level errors.
|
|
5045
|
+
*/
|
|
5046
|
+
export type LogEventResponse = LogEventSuccess | LogEventError;
|
|
5047
|
+
/**
|
|
5048
|
+
* Success response - events received and queued for processing
|
|
5049
|
+
*/
|
|
5050
|
+
export interface LogEventSuccess {
|
|
5051
|
+
/**
|
|
5052
|
+
* Number of events received
|
|
5053
|
+
*/
|
|
5054
|
+
events_received: number;
|
|
5055
|
+
/**
|
|
5056
|
+
* Number of events successfully queued for processing
|
|
5057
|
+
*/
|
|
5058
|
+
events_processed: number;
|
|
5059
|
+
/**
|
|
5060
|
+
* Events that failed validation
|
|
5061
|
+
*/
|
|
5062
|
+
partial_failures?: {
|
|
5063
|
+
/**
|
|
5064
|
+
* ID of the failed event
|
|
5065
|
+
*/
|
|
5066
|
+
event_id: string;
|
|
5067
|
+
/**
|
|
5068
|
+
* Error code
|
|
5069
|
+
*/
|
|
5070
|
+
code: string;
|
|
5071
|
+
/**
|
|
5072
|
+
* Human-readable error message
|
|
5073
|
+
*/
|
|
5074
|
+
message: string;
|
|
5075
|
+
}[];
|
|
5076
|
+
/**
|
|
5077
|
+
* Non-fatal issues (low match quality, missing recommended fields, deprecation notices)
|
|
5078
|
+
*/
|
|
5079
|
+
warnings?: string[];
|
|
5080
|
+
/**
|
|
5081
|
+
* Overall match quality score for the batch (0.0 = no matches, 1.0 = all matched)
|
|
5082
|
+
*/
|
|
5083
|
+
match_quality?: number;
|
|
5084
|
+
context?: ContextObject;
|
|
5085
|
+
ext?: ExtensionObject;
|
|
5086
|
+
}
|
|
5087
|
+
/**
|
|
5088
|
+
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
5089
|
+
*/
|
|
5090
|
+
export interface LogEventError {
|
|
5091
|
+
/**
|
|
5092
|
+
* Operation-level errors
|
|
5093
|
+
*/
|
|
5094
|
+
errors: Error[];
|
|
5095
|
+
context?: ContextObject;
|
|
5096
|
+
ext?: ExtensionObject;
|
|
5097
|
+
}
|
|
5098
|
+
/**
|
|
5099
|
+
* Standard error structure for task-specific errors and warnings
|
|
5100
|
+
*/
|
|
5101
|
+
/**
|
|
5102
|
+
* VAST (Video Ad Serving Template) tag for third-party video ad serving
|
|
5103
|
+
*/
|
|
5104
|
+
export type HTTPMethod = 'GET' | 'POST';
|
|
5105
|
+
/**
|
|
5106
|
+
* 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.
|
|
5107
|
+
*/
|
|
5108
|
+
export type WebhookResponseType = 'html' | 'json' | 'xml' | 'javascript';
|
|
5109
|
+
/**
|
|
5110
|
+
* Authentication method
|
|
5111
|
+
*/
|
|
5112
|
+
export type WebhookSecurityMethod = 'hmac_sha256' | 'api_key' | 'none';
|
|
5113
|
+
/**
|
|
5114
|
+
* DAAST (Digital Audio Ad Serving Template) tag for third-party audio ad serving
|
|
5115
|
+
*/
|
|
5116
|
+
export interface BuildCreativeRequest {
|
|
5117
|
+
/**
|
|
5118
|
+
* 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.
|
|
5119
|
+
*/
|
|
5120
|
+
message?: string;
|
|
5121
|
+
creative_manifest?: CreativeManifest;
|
|
5122
|
+
target_format_id: FormatID1;
|
|
5123
|
+
context?: ContextObject;
|
|
5124
|
+
ext?: ExtensionObject;
|
|
5125
|
+
}
|
|
5126
|
+
/**
|
|
5127
|
+
* Creative manifest to transform or generate from. For pure generation, this should include the target format_id and any required input assets (e.g., promoted_offerings for generative formats). For transformation (e.g., resizing, reformatting), this is the complete creative to adapt.
|
|
5128
|
+
*/
|
|
5129
|
+
export interface CreativeManifest {
|
|
5130
|
+
format_id: FormatID;
|
|
5131
|
+
/**
|
|
5132
|
+
* Product name or offering being advertised. Maps to promoted_offerings in create_media_buy request to associate creative with the product being promoted.
|
|
5133
|
+
*/
|
|
5134
|
+
promoted_offering?: string;
|
|
5135
|
+
/**
|
|
5136
|
+
* 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.
|
|
5137
|
+
*
|
|
5138
|
+
* 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.
|
|
5139
|
+
*/
|
|
5140
|
+
assets: {
|
|
5141
|
+
[k: string]: unknown | undefined;
|
|
5142
|
+
};
|
|
5143
|
+
ext?: ExtensionObject;
|
|
5144
|
+
[k: string]: unknown | undefined;
|
|
5145
|
+
}
|
|
5146
|
+
/**
|
|
5147
|
+
* Format identifier this manifest is for. Can be a template format (id only) or a deterministic format (id + dimensions/duration). For dimension-specific creatives, include width/height/unit in the format_id to create a unique identifier (e.g., {id: 'display_static', width: 300, height: 250, unit: 'px'}).
|
|
5148
|
+
*/
|
|
5149
|
+
export interface WebhookAsset {
|
|
5150
|
+
/**
|
|
5151
|
+
* Webhook URL to call for dynamic content
|
|
5152
|
+
*/
|
|
5153
|
+
url: string;
|
|
5154
|
+
method?: HTTPMethod;
|
|
5155
|
+
/**
|
|
5156
|
+
* Maximum time to wait for response in milliseconds
|
|
3984
5157
|
*/
|
|
3985
5158
|
timeout_ms?: number;
|
|
3986
5159
|
/**
|
|
3987
|
-
* Universal macros that can be passed to webhook (e.g.,
|
|
5160
|
+
* Universal macros that can be passed to webhook (e.g., DEVICE_TYPE, COUNTRY). See docs/creative/universal-macros.mdx for full list.
|
|
3988
5161
|
*/
|
|
3989
|
-
supported_macros?: string[];
|
|
5162
|
+
supported_macros?: (UniversalMacro | string)[];
|
|
3990
5163
|
/**
|
|
3991
5164
|
* Universal macros that must be provided for webhook to function
|
|
3992
5165
|
*/
|
|
3993
|
-
required_macros?: string[];
|
|
5166
|
+
required_macros?: (UniversalMacro | string)[];
|
|
3994
5167
|
response_type: WebhookResponseType;
|
|
3995
5168
|
/**
|
|
3996
5169
|
* Security configuration for webhook calls
|
|
@@ -4045,7 +5218,7 @@ export type PreviewCreativeRequest = {
|
|
|
4045
5218
|
* Discriminator indicating this is a single preview request
|
|
4046
5219
|
*/
|
|
4047
5220
|
request_type: 'single';
|
|
4048
|
-
format_id
|
|
5221
|
+
format_id?: FormatID;
|
|
4049
5222
|
creative_manifest: CreativeManifest;
|
|
4050
5223
|
/**
|
|
4051
5224
|
* Array of input sets for generating multiple preview variants. Each input set defines macros and context values for one preview rendering. If not provided, creative agent will generate default previews.
|
|
@@ -4084,7 +5257,7 @@ export type PreviewCreativeRequest = {
|
|
|
4084
5257
|
* @maxItems 50
|
|
4085
5258
|
*/
|
|
4086
5259
|
requests: {
|
|
4087
|
-
format_id
|
|
5260
|
+
format_id?: FormatID2;
|
|
4088
5261
|
creative_manifest: CreativeManifest1;
|
|
4089
5262
|
/**
|
|
4090
5263
|
* Array of input sets for generating multiple preview variants
|
|
@@ -4114,6 +5287,22 @@ export type PreviewCreativeRequest = {
|
|
|
4114
5287
|
output_format?: PreviewOutputFormat2;
|
|
4115
5288
|
context?: ContextObject;
|
|
4116
5289
|
ext?: ExtensionObject;
|
|
5290
|
+
} | {
|
|
5291
|
+
/**
|
|
5292
|
+
* Discriminator indicating this is a variant preview request
|
|
5293
|
+
*/
|
|
5294
|
+
request_type: 'variant';
|
|
5295
|
+
/**
|
|
5296
|
+
* Platform-assigned variant identifier from get_creative_delivery response
|
|
5297
|
+
*/
|
|
5298
|
+
variant_id: string;
|
|
5299
|
+
/**
|
|
5300
|
+
* Creative identifier for context
|
|
5301
|
+
*/
|
|
5302
|
+
creative_id?: string;
|
|
5303
|
+
output_format?: PreviewOutputFormat3;
|
|
5304
|
+
context?: ContextObject;
|
|
5305
|
+
ext?: ExtensionObject;
|
|
4117
5306
|
};
|
|
4118
5307
|
/**
|
|
4119
5308
|
* VAST (Video Ad Serving Template) tag for third-party video ad serving
|
|
@@ -4128,7 +5317,11 @@ export type PreviewOutputFormat1 = 'url' | 'html';
|
|
|
4128
5317
|
*/
|
|
4129
5318
|
export type PreviewOutputFormat2 = 'url' | 'html';
|
|
4130
5319
|
/**
|
|
4131
|
-
*
|
|
5320
|
+
* Output format for the preview. 'url' returns preview_url (iframe-embeddable URL), 'html' returns preview_html (raw HTML for direct embedding).
|
|
5321
|
+
*/
|
|
5322
|
+
export type PreviewOutputFormat3 = 'url' | 'html';
|
|
5323
|
+
/**
|
|
5324
|
+
* Format identifier for rendering the preview. Optional — defaults to creative_manifest.format_id if omitted.
|
|
4132
5325
|
*/
|
|
4133
5326
|
export interface CreativeManifest1 {
|
|
4134
5327
|
format_id: FormatID1;
|
|
@@ -4139,7 +5332,7 @@ export interface CreativeManifest1 {
|
|
|
4139
5332
|
/**
|
|
4140
5333
|
* 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.
|
|
4141
5334
|
*
|
|
4142
|
-
* IMPORTANT:
|
|
5335
|
+
* 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.
|
|
4143
5336
|
*/
|
|
4144
5337
|
assets: {
|
|
4145
5338
|
[k: string]: unknown | undefined;
|
|
@@ -4150,7 +5343,7 @@ export interface CreativeManifest1 {
|
|
|
4150
5343
|
/**
|
|
4151
5344
|
* Response containing preview links for one or more creatives. Format matches the request: single preview response for single requests, batch results for batch requests.
|
|
4152
5345
|
*/
|
|
4153
|
-
export type PreviewCreativeResponse = PreviewCreativeSingleResponse | PreviewCreativeBatchResponse;
|
|
5346
|
+
export type PreviewCreativeResponse = PreviewCreativeSingleResponse | PreviewCreativeBatchResponse | PreviewCreativeVariantResponse;
|
|
4154
5347
|
/**
|
|
4155
5348
|
* A single rendered piece of a creative preview with discriminated output format
|
|
4156
5349
|
*/
|
|
@@ -4298,7 +5491,7 @@ export type PreviewRender = {
|
|
|
4298
5491
|
[k: string]: unknown | undefined;
|
|
4299
5492
|
};
|
|
4300
5493
|
/**
|
|
4301
|
-
*
|
|
5494
|
+
* VAST (Video Ad Serving Template) tag for third-party video ad serving
|
|
4302
5495
|
*/
|
|
4303
5496
|
export interface PreviewCreativeSingleResponse {
|
|
4304
5497
|
/**
|
|
@@ -4349,26 +5542,470 @@ export interface PreviewCreativeSingleResponse {
|
|
|
4349
5542
|
ext?: ExtensionObject;
|
|
4350
5543
|
}
|
|
4351
5544
|
/**
|
|
4352
|
-
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
5545
|
+
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
5546
|
+
*/
|
|
5547
|
+
export interface PreviewCreativeBatchResponse {
|
|
5548
|
+
/**
|
|
5549
|
+
* Discriminator indicating this is a batch preview response
|
|
5550
|
+
*/
|
|
5551
|
+
response_type: 'batch';
|
|
5552
|
+
/**
|
|
5553
|
+
* Array of preview results corresponding to each request in the same order. results[0] is the result for requests[0], results[1] for requests[1], etc. Order is guaranteed even when some requests fail. Each result contains either a successful preview response or an error.
|
|
5554
|
+
*/
|
|
5555
|
+
results: (PreviewBatchResultSuccess | PreviewBatchResultError)[];
|
|
5556
|
+
context?: ContextObject;
|
|
5557
|
+
ext?: ExtensionObject;
|
|
5558
|
+
}
|
|
5559
|
+
export interface PreviewBatchResultSuccess {
|
|
5560
|
+
success?: true;
|
|
5561
|
+
}
|
|
5562
|
+
export interface PreviewBatchResultError {
|
|
5563
|
+
success?: false;
|
|
5564
|
+
}
|
|
5565
|
+
/**
|
|
5566
|
+
* Variant preview response - shows what a specific creative variant looked like when served during delivery
|
|
5567
|
+
*/
|
|
5568
|
+
export interface PreviewCreativeVariantResponse {
|
|
5569
|
+
/**
|
|
5570
|
+
* Discriminator indicating this is a variant preview response
|
|
5571
|
+
*/
|
|
5572
|
+
response_type: 'variant';
|
|
5573
|
+
/**
|
|
5574
|
+
* Platform-assigned variant identifier
|
|
5575
|
+
*/
|
|
5576
|
+
variant_id: string;
|
|
5577
|
+
/**
|
|
5578
|
+
* Creative identifier this variant belongs to
|
|
5579
|
+
*/
|
|
5580
|
+
creative_id?: string;
|
|
5581
|
+
/**
|
|
5582
|
+
* Array of rendered pieces for this variant. Most formats render as a single piece.
|
|
5583
|
+
*/
|
|
5584
|
+
previews: {
|
|
5585
|
+
/**
|
|
5586
|
+
* Unique identifier for this preview
|
|
5587
|
+
*/
|
|
5588
|
+
preview_id: string;
|
|
5589
|
+
/**
|
|
5590
|
+
* Rendered pieces for this variant
|
|
5591
|
+
*/
|
|
5592
|
+
renders: PreviewRender[];
|
|
5593
|
+
}[];
|
|
5594
|
+
manifest?: CreativeManifest;
|
|
5595
|
+
/**
|
|
5596
|
+
* ISO 8601 timestamp when preview links expire
|
|
5597
|
+
*/
|
|
5598
|
+
expires_at?: string;
|
|
5599
|
+
context?: ContextObject;
|
|
5600
|
+
ext?: ExtensionObject;
|
|
5601
|
+
}
|
|
5602
|
+
/**
|
|
5603
|
+
* The rendered creative manifest for this variant — the actual output that was served, not the input assets
|
|
5604
|
+
*/
|
|
5605
|
+
/**
|
|
5606
|
+
* Request parameters for retrieving creative delivery data including variant-level metrics from a creative agent. At least one scoping filter (media_buy_ids, media_buy_buyer_refs, or creative_ids) is required.
|
|
5607
|
+
*/
|
|
5608
|
+
export type GetCreativeDeliveryRequest = {
|
|
5609
|
+
[k: string]: unknown | undefined;
|
|
5610
|
+
} & {
|
|
5611
|
+
/**
|
|
5612
|
+
* Account context for routing and scoping. Limits results to creatives within this account. Optional if the agent has a single account or can determine routing from the media buy identifiers.
|
|
5613
|
+
*/
|
|
5614
|
+
account_id?: string;
|
|
5615
|
+
/**
|
|
5616
|
+
* Filter to specific media buys by publisher ID. If omitted, returns creative delivery across all matching media buys.
|
|
5617
|
+
*/
|
|
5618
|
+
media_buy_ids?: string[];
|
|
5619
|
+
/**
|
|
5620
|
+
* Filter to specific media buys by buyer reference ID. Alternative to media_buy_ids when the buyer doesn't have the publisher's identifiers.
|
|
5621
|
+
*/
|
|
5622
|
+
media_buy_buyer_refs?: string[];
|
|
5623
|
+
/**
|
|
5624
|
+
* Filter to specific creatives by ID. If omitted, returns delivery for all creatives matching the other filters.
|
|
5625
|
+
*/
|
|
5626
|
+
creative_ids?: string[];
|
|
5627
|
+
/**
|
|
5628
|
+
* Start date for delivery period (YYYY-MM-DD). Interpreted in the platform's reporting timezone.
|
|
5629
|
+
*/
|
|
5630
|
+
start_date?: string;
|
|
5631
|
+
/**
|
|
5632
|
+
* End date for delivery period (YYYY-MM-DD). Interpreted in the platform's reporting timezone.
|
|
5633
|
+
*/
|
|
5634
|
+
end_date?: string;
|
|
5635
|
+
/**
|
|
5636
|
+
* 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.
|
|
5637
|
+
*/
|
|
5638
|
+
max_variants?: number;
|
|
5639
|
+
/**
|
|
5640
|
+
* Pagination parameters for the creatives array in the response. When omitted, the agent returns all matching creatives.
|
|
5641
|
+
*/
|
|
5642
|
+
pagination?: {
|
|
5643
|
+
/**
|
|
5644
|
+
* Maximum number of creatives to return
|
|
5645
|
+
*/
|
|
5646
|
+
limit?: number;
|
|
5647
|
+
/**
|
|
5648
|
+
* Number of creatives to skip
|
|
5649
|
+
*/
|
|
5650
|
+
offset?: number;
|
|
5651
|
+
};
|
|
5652
|
+
context?: ContextObject;
|
|
5653
|
+
ext?: ExtensionObject;
|
|
5654
|
+
};
|
|
5655
|
+
/**
|
|
5656
|
+
* Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.
|
|
5657
|
+
*/
|
|
5658
|
+
/**
|
|
5659
|
+
* The event type
|
|
5660
|
+
*/
|
|
5661
|
+
export type CreativeVariant = DeliveryMetrics1 & {
|
|
5662
|
+
/**
|
|
5663
|
+
* Platform-assigned identifier for this variant
|
|
5664
|
+
*/
|
|
5665
|
+
variant_id: string;
|
|
5666
|
+
manifest?: CreativeManifest;
|
|
5667
|
+
/**
|
|
5668
|
+
* Input signals that triggered generation of this variant (Tier 3). Describes why the platform created this specific variant. Platforms should provide summarized or anonymized signals rather than raw user input. For web contexts, may include page topic or URL. For conversational contexts, an anonymized content signal. For search, query category or intent. When the content context is managed through AdCP content standards, reference the artifact directly via the artifact field.
|
|
5669
|
+
*/
|
|
5670
|
+
generation_context?: {
|
|
5671
|
+
/**
|
|
5672
|
+
* Type of context that triggered generation (e.g., 'web_page', 'conversational', 'search', 'app', 'dooh')
|
|
5673
|
+
*/
|
|
5674
|
+
context_type?: string;
|
|
5675
|
+
/**
|
|
5676
|
+
* Reference to the content-standards artifact that provided the generation context. Links this variant to the specific piece of content (article, video, podcast segment, etc.) where the ad was placed.
|
|
5677
|
+
*/
|
|
5678
|
+
artifact?: {
|
|
5679
|
+
property_id: Identifier;
|
|
5680
|
+
/**
|
|
5681
|
+
* Artifact identifier within the property
|
|
5682
|
+
*/
|
|
5683
|
+
artifact_id: string;
|
|
5684
|
+
};
|
|
5685
|
+
ext?: ExtensionObject;
|
|
5686
|
+
[k: string]: unknown | undefined;
|
|
5687
|
+
};
|
|
5688
|
+
};
|
|
5689
|
+
/**
|
|
5690
|
+
* VAST (Video Ad Serving Template) tag for third-party video ad serving
|
|
5691
|
+
*/
|
|
5692
|
+
export type PropertyIdentifierTypes = 'domain' | 'subdomain' | 'network_id' | 'ios_bundle' | 'android_package' | 'apple_app_store_id' | 'google_play_id' | 'roku_store_id' | 'fire_tv_asin' | 'samsung_app_id' | 'apple_tv_bundle' | 'bundle_id' | 'venue_id' | 'screen_id' | 'openooh_venue_type' | 'rss_url' | 'apple_podcast_id' | 'spotify_show_id' | 'podcast_guid';
|
|
5693
|
+
/**
|
|
5694
|
+
* Response payload for get_creative_delivery task. Returns creative delivery data with variant-level breakdowns including manifests and metrics.
|
|
5695
|
+
*/
|
|
5696
|
+
export interface GetCreativeDeliveryResponse {
|
|
5697
|
+
/**
|
|
5698
|
+
* Account identifier. Present when the response spans or is scoped to a specific account.
|
|
5699
|
+
*/
|
|
5700
|
+
account_id?: string;
|
|
5701
|
+
/**
|
|
5702
|
+
* Publisher's media buy identifier. Present when the request was scoped to a single media buy.
|
|
5703
|
+
*/
|
|
5704
|
+
media_buy_id?: string;
|
|
5705
|
+
/**
|
|
5706
|
+
* Buyer's reference identifier for the media buy. Echoed back so the buyer can correlate without mapping publisher IDs.
|
|
5707
|
+
*/
|
|
5708
|
+
media_buy_buyer_ref?: string;
|
|
5709
|
+
/**
|
|
5710
|
+
* ISO 4217 currency code for monetary values in this response (e.g., 'USD', 'EUR')
|
|
5711
|
+
*/
|
|
5712
|
+
currency: string;
|
|
5713
|
+
/**
|
|
5714
|
+
* Date range for the report.
|
|
5715
|
+
*/
|
|
5716
|
+
reporting_period: {
|
|
5717
|
+
/**
|
|
5718
|
+
* ISO 8601 start timestamp
|
|
5719
|
+
*/
|
|
5720
|
+
start: string;
|
|
5721
|
+
/**
|
|
5722
|
+
* ISO 8601 end timestamp
|
|
5723
|
+
*/
|
|
5724
|
+
end: string;
|
|
5725
|
+
/**
|
|
5726
|
+
* IANA timezone identifier for the reporting period (e.g., 'America/New_York', 'UTC'). Platforms report in their native timezone.
|
|
5727
|
+
*/
|
|
5728
|
+
timezone?: string;
|
|
5729
|
+
};
|
|
5730
|
+
/**
|
|
5731
|
+
* Creative delivery data with variant breakdowns
|
|
5732
|
+
*/
|
|
5733
|
+
creatives: {
|
|
5734
|
+
/**
|
|
5735
|
+
* Creative identifier
|
|
5736
|
+
*/
|
|
5737
|
+
creative_id: string;
|
|
5738
|
+
/**
|
|
5739
|
+
* Publisher's media buy identifier for this creative. Present when the request spanned multiple media buys, so the buyer can correlate each creative to its media buy.
|
|
5740
|
+
*/
|
|
5741
|
+
media_buy_id?: string;
|
|
5742
|
+
format_id?: FormatID;
|
|
5743
|
+
totals?: DeliveryMetrics;
|
|
5744
|
+
/**
|
|
5745
|
+
* Total number of variants for this creative. When max_variants was specified in the request, this may exceed the number of items in the variants array.
|
|
5746
|
+
*/
|
|
5747
|
+
variant_count?: number;
|
|
5748
|
+
/**
|
|
5749
|
+
* Variant-level delivery breakdown. Each variant includes the rendered manifest and delivery metrics. For standard creatives, contains a single variant. For asset group optimization, one per combination. For generative creative, one per generated execution. Empty when a creative has no variants yet.
|
|
5750
|
+
*/
|
|
5751
|
+
variants: CreativeVariant[];
|
|
5752
|
+
}[];
|
|
5753
|
+
/**
|
|
5754
|
+
* Pagination information. Present when the request included pagination parameters.
|
|
5755
|
+
*/
|
|
5756
|
+
pagination?: {
|
|
5757
|
+
/**
|
|
5758
|
+
* Maximum number of creatives requested
|
|
5759
|
+
*/
|
|
5760
|
+
limit: number;
|
|
5761
|
+
/**
|
|
5762
|
+
* Number of creatives skipped
|
|
5763
|
+
*/
|
|
5764
|
+
offset: number;
|
|
5765
|
+
/**
|
|
5766
|
+
* Whether more creatives are available beyond this page
|
|
5767
|
+
*/
|
|
5768
|
+
has_more: boolean;
|
|
5769
|
+
/**
|
|
5770
|
+
* Total number of creatives matching the request filters
|
|
5771
|
+
*/
|
|
5772
|
+
total?: number;
|
|
5773
|
+
};
|
|
5774
|
+
/**
|
|
5775
|
+
* Task-specific errors and warnings
|
|
5776
|
+
*/
|
|
5777
|
+
errors?: Error[];
|
|
5778
|
+
context?: ContextObject;
|
|
5779
|
+
ext?: ExtensionObject;
|
|
5780
|
+
}
|
|
5781
|
+
/**
|
|
5782
|
+
* Format of this creative
|
|
5783
|
+
*/
|
|
5784
|
+
export interface DeliveryMetrics1 {
|
|
5785
|
+
/**
|
|
5786
|
+
* Impressions delivered
|
|
5787
|
+
*/
|
|
5788
|
+
impressions?: number;
|
|
5789
|
+
/**
|
|
5790
|
+
* Amount spent
|
|
5791
|
+
*/
|
|
5792
|
+
spend?: number;
|
|
5793
|
+
/**
|
|
5794
|
+
* Total clicks
|
|
5795
|
+
*/
|
|
5796
|
+
clicks?: number;
|
|
5797
|
+
/**
|
|
5798
|
+
* Click-through rate (clicks/impressions)
|
|
5799
|
+
*/
|
|
5800
|
+
ctr?: number;
|
|
5801
|
+
/**
|
|
5802
|
+
* Views at threshold (for CPV)
|
|
5803
|
+
*/
|
|
5804
|
+
views?: number;
|
|
5805
|
+
/**
|
|
5806
|
+
* 100% completions (for CPCV)
|
|
5807
|
+
*/
|
|
5808
|
+
completed_views?: number;
|
|
5809
|
+
/**
|
|
5810
|
+
* Completion rate (completed_views/impressions)
|
|
5811
|
+
*/
|
|
5812
|
+
completion_rate?: number;
|
|
5813
|
+
/**
|
|
5814
|
+
* Total conversions attributed to this delivery. When by_event_type is present, this equals the sum of all by_event_type[].count entries.
|
|
5815
|
+
*/
|
|
5816
|
+
conversions?: number;
|
|
5817
|
+
/**
|
|
5818
|
+
* Total monetary value of attributed conversions (in the reporting currency)
|
|
5819
|
+
*/
|
|
5820
|
+
conversion_value?: number;
|
|
5821
|
+
/**
|
|
5822
|
+
* Return on ad spend (conversion_value / spend)
|
|
5823
|
+
*/
|
|
5824
|
+
roas?: number;
|
|
5825
|
+
/**
|
|
5826
|
+
* Cost per conversion (spend / conversions)
|
|
5827
|
+
*/
|
|
5828
|
+
cost_per_acquisition?: number;
|
|
5829
|
+
/**
|
|
5830
|
+
* Fraction of conversions from first-time brand buyers (0 = none, 1 = all)
|
|
5831
|
+
*/
|
|
5832
|
+
new_to_brand_rate?: number;
|
|
5833
|
+
/**
|
|
5834
|
+
* Leads generated (convenience alias for by_event_type where event_type='lead')
|
|
5835
|
+
*/
|
|
5836
|
+
leads?: number;
|
|
5837
|
+
/**
|
|
5838
|
+
* Conversion metrics broken down by event type. Spend-derived metrics (ROAS, CPA) are only available at the package/totals level since spend cannot be attributed to individual event types.
|
|
5839
|
+
*/
|
|
5840
|
+
by_event_type?: {
|
|
5841
|
+
event_type: EventType;
|
|
5842
|
+
/**
|
|
5843
|
+
* Event source that produced these conversions (for disambiguation when multiple event sources are configured)
|
|
5844
|
+
*/
|
|
5845
|
+
event_source_id?: string;
|
|
5846
|
+
/**
|
|
5847
|
+
* Number of events of this type
|
|
5848
|
+
*/
|
|
5849
|
+
count: number;
|
|
5850
|
+
/**
|
|
5851
|
+
* Total monetary value of events of this type
|
|
5852
|
+
*/
|
|
5853
|
+
value?: number;
|
|
5854
|
+
[k: string]: unknown | undefined;
|
|
5855
|
+
}[];
|
|
5856
|
+
/**
|
|
5857
|
+
* Gross Rating Points delivered (for CPP)
|
|
5858
|
+
*/
|
|
5859
|
+
grps?: number;
|
|
5860
|
+
/**
|
|
5861
|
+
* Unique reach - units depend on measurement provider (e.g., individuals, households, devices, cookies). See delivery_measurement.provider for methodology.
|
|
5862
|
+
*/
|
|
5863
|
+
reach?: number;
|
|
5864
|
+
/**
|
|
5865
|
+
* Average frequency per individual (typically measured over campaign duration, but can vary by measurement provider)
|
|
5866
|
+
*/
|
|
5867
|
+
frequency?: number;
|
|
5868
|
+
/**
|
|
5869
|
+
* Video quartile completion data
|
|
5870
|
+
*/
|
|
5871
|
+
quartile_data?: {
|
|
5872
|
+
/**
|
|
5873
|
+
* 25% completion views
|
|
5874
|
+
*/
|
|
5875
|
+
q1_views?: number;
|
|
5876
|
+
/**
|
|
5877
|
+
* 50% completion views
|
|
5878
|
+
*/
|
|
5879
|
+
q2_views?: number;
|
|
5880
|
+
/**
|
|
5881
|
+
* 75% completion views
|
|
5882
|
+
*/
|
|
5883
|
+
q3_views?: number;
|
|
5884
|
+
/**
|
|
5885
|
+
* 100% completion views
|
|
5886
|
+
*/
|
|
5887
|
+
q4_views?: number;
|
|
5888
|
+
};
|
|
5889
|
+
/**
|
|
5890
|
+
* DOOH-specific metrics (only included for DOOH campaigns)
|
|
5891
|
+
*/
|
|
5892
|
+
dooh_metrics?: {
|
|
5893
|
+
/**
|
|
5894
|
+
* Number of times ad played in rotation
|
|
5895
|
+
*/
|
|
5896
|
+
loop_plays?: number;
|
|
5897
|
+
/**
|
|
5898
|
+
* Number of unique screens displaying the ad
|
|
5899
|
+
*/
|
|
5900
|
+
screens_used?: number;
|
|
5901
|
+
/**
|
|
5902
|
+
* Total display time in seconds
|
|
5903
|
+
*/
|
|
5904
|
+
screen_time_seconds?: number;
|
|
5905
|
+
/**
|
|
5906
|
+
* Actual share of voice delivered (0.0 to 1.0)
|
|
5907
|
+
*/
|
|
5908
|
+
sov_achieved?: number;
|
|
5909
|
+
/**
|
|
5910
|
+
* Explanation of how DOOH impressions were calculated
|
|
5911
|
+
*/
|
|
5912
|
+
calculation_notes?: string;
|
|
5913
|
+
/**
|
|
5914
|
+
* Per-venue performance breakdown
|
|
5915
|
+
*/
|
|
5916
|
+
venue_breakdown?: {
|
|
5917
|
+
/**
|
|
5918
|
+
* Venue identifier
|
|
5919
|
+
*/
|
|
5920
|
+
venue_id: string;
|
|
5921
|
+
/**
|
|
5922
|
+
* Human-readable venue name
|
|
5923
|
+
*/
|
|
5924
|
+
venue_name?: string;
|
|
5925
|
+
/**
|
|
5926
|
+
* Venue type (e.g., 'airport', 'transit', 'retail', 'billboard')
|
|
5927
|
+
*/
|
|
5928
|
+
venue_type?: string;
|
|
5929
|
+
/**
|
|
5930
|
+
* Impressions delivered at this venue
|
|
5931
|
+
*/
|
|
5932
|
+
impressions: number;
|
|
5933
|
+
/**
|
|
5934
|
+
* Loop plays at this venue
|
|
5935
|
+
*/
|
|
5936
|
+
loop_plays?: number;
|
|
5937
|
+
/**
|
|
5938
|
+
* Number of screens used at this venue
|
|
5939
|
+
*/
|
|
5940
|
+
screens_used?: number;
|
|
5941
|
+
[k: string]: unknown | undefined;
|
|
5942
|
+
}[];
|
|
5943
|
+
[k: string]: unknown | undefined;
|
|
5944
|
+
};
|
|
5945
|
+
/**
|
|
5946
|
+
* Viewability metrics. Viewable rate should be calculated as viewable_impressions / measurable_impressions (not total impressions), since some environments cannot measure viewability.
|
|
5947
|
+
*/
|
|
5948
|
+
viewability?: {
|
|
5949
|
+
/**
|
|
5950
|
+
* Impressions where viewability could be measured. Excludes environments without measurement capability (e.g., non-Intersection Observer browsers, certain app environments).
|
|
5951
|
+
*/
|
|
5952
|
+
measurable_impressions?: number;
|
|
5953
|
+
/**
|
|
5954
|
+
* Impressions that met the viewability threshold defined by the measurement standard.
|
|
5955
|
+
*/
|
|
5956
|
+
viewable_impressions?: number;
|
|
5957
|
+
/**
|
|
5958
|
+
* Viewable impression rate (viewable_impressions / measurable_impressions). Range 0.0 to 1.0.
|
|
5959
|
+
*/
|
|
5960
|
+
viewable_rate?: number;
|
|
5961
|
+
/**
|
|
5962
|
+
* Viewability measurement standard. 'mrc': 50% of pixels in view for 1 second (display) or 2 seconds (video), per MRC/IAB guidelines. 'groupm': 100% of pixels in view for the same durations. These are materially different thresholds and should not be compared across standards.
|
|
5963
|
+
*/
|
|
5964
|
+
standard?: 'mrc' | 'groupm';
|
|
5965
|
+
[k: string]: unknown | undefined;
|
|
5966
|
+
};
|
|
5967
|
+
/**
|
|
5968
|
+
* Platform-specific engagement rate (0.0 to 1.0). Definition varies by platform (e.g., likes+comments+shares/impressions on social, interactions/impressions on rich media).
|
|
5969
|
+
*/
|
|
5970
|
+
engagement_rate?: number;
|
|
5971
|
+
/**
|
|
5972
|
+
* Cost per click (spend / clicks)
|
|
5973
|
+
*/
|
|
5974
|
+
cost_per_click?: number;
|
|
5975
|
+
/**
|
|
5976
|
+
* Conversion metrics broken down by action source (website, app, in_store, etc.). Useful for omnichannel sellers where conversions occur across digital and physical channels.
|
|
5977
|
+
*/
|
|
5978
|
+
by_action_source?: {
|
|
5979
|
+
action_source: ActionSource;
|
|
5980
|
+
/**
|
|
5981
|
+
* Event source that produced these conversions (for disambiguation when multiple event sources are configured)
|
|
5982
|
+
*/
|
|
5983
|
+
event_source_id?: string;
|
|
5984
|
+
/**
|
|
5985
|
+
* Number of conversions from this action source
|
|
5986
|
+
*/
|
|
5987
|
+
count: number;
|
|
5988
|
+
/**
|
|
5989
|
+
* Total monetary value of conversions from this action source
|
|
5990
|
+
*/
|
|
5991
|
+
value?: number;
|
|
5992
|
+
[k: string]: unknown | undefined;
|
|
5993
|
+
}[];
|
|
5994
|
+
[k: string]: unknown | undefined;
|
|
5995
|
+
}
|
|
5996
|
+
/**
|
|
5997
|
+
* The rendered creative manifest for this variant — the actual output that was served, not the input assets. Contains format_id and the resolved assets (specific headline, image, video, etc. the platform selected or generated). For Tier 2, shows which asset combination was picked. For Tier 3, contains the generated assets which may differ entirely from the input brand manifest. Pass to preview_creative to re-render.
|
|
4353
5998
|
*/
|
|
4354
|
-
export interface
|
|
4355
|
-
|
|
4356
|
-
* Discriminator indicating this is a batch preview response
|
|
4357
|
-
*/
|
|
4358
|
-
response_type: 'batch';
|
|
5999
|
+
export interface Identifier {
|
|
6000
|
+
type: PropertyIdentifierTypes;
|
|
4359
6001
|
/**
|
|
4360
|
-
*
|
|
6002
|
+
* The identifier value. For domain type: 'example.com' matches base domain plus www and m subdomains; 'edition.example.com' matches that specific subdomain; '*.example.com' matches ALL subdomains but NOT base domain
|
|
4361
6003
|
*/
|
|
4362
|
-
|
|
4363
|
-
context?: ContextObject;
|
|
4364
|
-
ext?: ExtensionObject;
|
|
4365
|
-
}
|
|
4366
|
-
export interface PreviewBatchResultSuccess {
|
|
4367
|
-
success?: true;
|
|
4368
|
-
}
|
|
4369
|
-
export interface PreviewBatchResultError {
|
|
4370
|
-
success?: false;
|
|
6004
|
+
value: string;
|
|
4371
6005
|
}
|
|
6006
|
+
/**
|
|
6007
|
+
* Standard error structure for task-specific errors and warnings
|
|
6008
|
+
*/
|
|
4372
6009
|
/**
|
|
4373
6010
|
* Request parameters for discovering signals. Use signal_spec for natural language discovery, signal_ids for exact lookups, or both (signal_ids take precedence for exact matches, signal_spec provides additional discovery context).
|
|
4374
6011
|
*/
|
|
@@ -4401,6 +6038,7 @@ export type GetSignalsRequest = {
|
|
|
4401
6038
|
* Maximum number of results to return
|
|
4402
6039
|
*/
|
|
4403
6040
|
max_results?: number;
|
|
6041
|
+
pagination?: PaginationRequest;
|
|
4404
6042
|
context?: ContextObject;
|
|
4405
6043
|
ext?: ExtensionObject;
|
|
4406
6044
|
};
|
|
@@ -4446,12 +6084,16 @@ export type SignalCatalogType = 'marketplace' | 'custom' | 'owned';
|
|
|
4446
6084
|
export interface SignalFilters {
|
|
4447
6085
|
/**
|
|
4448
6086
|
* Filter by catalog type
|
|
6087
|
+
*
|
|
6088
|
+
* @minItems 1
|
|
4449
6089
|
*/
|
|
4450
|
-
catalog_types?: SignalCatalogType[];
|
|
6090
|
+
catalog_types?: [SignalCatalogType, ...SignalCatalogType[]];
|
|
4451
6091
|
/**
|
|
4452
6092
|
* Filter by specific data providers
|
|
6093
|
+
*
|
|
6094
|
+
* @minItems 1
|
|
4453
6095
|
*/
|
|
4454
|
-
data_providers?: string[];
|
|
6096
|
+
data_providers?: [string, ...string[]];
|
|
4455
6097
|
/**
|
|
4456
6098
|
* Maximum CPM price filter
|
|
4457
6099
|
*/
|
|
@@ -4463,7 +6105,7 @@ export interface SignalFilters {
|
|
|
4463
6105
|
[k: string]: unknown | undefined;
|
|
4464
6106
|
}
|
|
4465
6107
|
/**
|
|
4466
|
-
*
|
|
6108
|
+
* Standard cursor-based pagination parameters for list operations
|
|
4467
6109
|
*/
|
|
4468
6110
|
/**
|
|
4469
6111
|
* Universal signal identifier referencing the data provider's catalog. Use this to verify authorization and look up signal definitions.
|
|
@@ -4636,6 +6278,7 @@ export interface GetSignalsResponse {
|
|
|
4636
6278
|
* Task-specific errors and warnings (e.g., signal discovery or pricing issues)
|
|
4637
6279
|
*/
|
|
4638
6280
|
errors?: Error[];
|
|
6281
|
+
pagination?: PaginationResponse;
|
|
4639
6282
|
context?: ContextObject;
|
|
4640
6283
|
ext?: ExtensionObject;
|
|
4641
6284
|
}
|
|
@@ -4696,10 +6339,6 @@ export type BasePropertySource = PublisherTagsSource | PublisherPropertyIDsSourc
|
|
|
4696
6339
|
/**
|
|
4697
6340
|
* Tag for categorizing publisher properties. Must be lowercase alphanumeric with underscores only.
|
|
4698
6341
|
*/
|
|
4699
|
-
export type PropertyIdentifierTypes = 'domain' | 'subdomain' | 'network_id' | 'ios_bundle' | 'android_package' | 'apple_app_store_id' | 'google_play_id' | 'roku_store_id' | 'fire_tv_asin' | 'samsung_app_id' | 'apple_tv_bundle' | 'bundle_id' | 'venue_id' | 'screen_id' | 'openooh_venue_type' | 'rss_url' | 'apple_podcast_id' | 'spotify_show_id' | 'podcast_guid';
|
|
4700
|
-
/**
|
|
4701
|
-
* Standardized advertising media channels describing how buyers allocate budget. Channels are planning abstractions, not technical substrates. See the Media Channel Taxonomy specification for detailed definitions.
|
|
4702
|
-
*/
|
|
4703
6342
|
export type PropertyType = 'website' | 'mobile_app' | 'ctv_app' | 'desktop_app' | 'dooh' | 'podcast' | 'radio' | 'streaming_audio';
|
|
4704
6343
|
/**
|
|
4705
6344
|
* Type of asset. Note: Brand manifests typically contain basic media assets (image, video, audio, text). Code assets (html, javascript, css) and ad markup (vast, daast) are usually not part of brand asset libraries.
|
|
@@ -4778,37 +6417,37 @@ export interface DirectIdentifiersSource {
|
|
|
4778
6417
|
/**
|
|
4779
6418
|
* A property identifier with type and value. Used to identify properties across platforms (domains, app store IDs, etc.).
|
|
4780
6419
|
*/
|
|
4781
|
-
export interface Identifier {
|
|
4782
|
-
type: PropertyIdentifierTypes;
|
|
4783
|
-
/**
|
|
4784
|
-
* The identifier value. For domain type: 'example.com' matches base domain plus www and m subdomains; 'edition.example.com' matches that specific subdomain; '*.example.com' matches ALL subdomains but NOT base domain
|
|
4785
|
-
*/
|
|
4786
|
-
value: string;
|
|
4787
|
-
}
|
|
4788
|
-
/**
|
|
4789
|
-
* Dynamic filters to apply when resolving the list
|
|
4790
|
-
*/
|
|
4791
6420
|
export interface PropertyListFilters {
|
|
4792
6421
|
/**
|
|
4793
6422
|
* Property must have feature data for ALL listed countries (ISO codes). Required.
|
|
6423
|
+
*
|
|
6424
|
+
* @minItems 1
|
|
4794
6425
|
*/
|
|
4795
|
-
countries_all: string[];
|
|
6426
|
+
countries_all: [string, ...string[]];
|
|
4796
6427
|
/**
|
|
4797
6428
|
* Property must support ANY of the listed channels. Required.
|
|
6429
|
+
*
|
|
6430
|
+
* @minItems 1
|
|
4798
6431
|
*/
|
|
4799
|
-
channels_any: MediaChannel[];
|
|
6432
|
+
channels_any: [MediaChannel, ...MediaChannel[]];
|
|
4800
6433
|
/**
|
|
4801
6434
|
* Filter to these property types
|
|
6435
|
+
*
|
|
6436
|
+
* @minItems 1
|
|
4802
6437
|
*/
|
|
4803
|
-
property_types?: PropertyType[];
|
|
6438
|
+
property_types?: [PropertyType, ...PropertyType[]];
|
|
4804
6439
|
/**
|
|
4805
6440
|
* Feature-based requirements. Property must pass ALL requirements (AND logic).
|
|
6441
|
+
*
|
|
6442
|
+
* @minItems 1
|
|
4806
6443
|
*/
|
|
4807
|
-
feature_requirements?: FeatureRequirement[];
|
|
6444
|
+
feature_requirements?: [FeatureRequirement, ...FeatureRequirement[]];
|
|
4808
6445
|
/**
|
|
4809
6446
|
* Identifiers to always exclude from results
|
|
6447
|
+
*
|
|
6448
|
+
* @minItems 1
|
|
4810
6449
|
*/
|
|
4811
|
-
exclude_identifiers?: Identifier[];
|
|
6450
|
+
exclude_identifiers?: [Identifier, ...Identifier[]];
|
|
4812
6451
|
}
|
|
4813
6452
|
/**
|
|
4814
6453
|
* A feature-based requirement for property filtering. Use min_value/max_value for quantitative features, allowed_values for binary/categorical features.
|
|
@@ -4828,8 +6467,10 @@ export interface FeatureRequirement {
|
|
|
4828
6467
|
max_value?: number;
|
|
4829
6468
|
/**
|
|
4830
6469
|
* Values that pass the requirement (for binary/categorical features)
|
|
6470
|
+
*
|
|
6471
|
+
* @minItems 1
|
|
4831
6472
|
*/
|
|
4832
|
-
allowed_values?: unknown[];
|
|
6473
|
+
allowed_values?: [unknown, ...unknown[]];
|
|
4833
6474
|
/**
|
|
4834
6475
|
* How to handle properties where this feature is not covered. 'exclude' (default): property is removed from the list. 'include': property passes this requirement (fail-open).
|
|
4835
6476
|
*/
|
|
@@ -4954,13 +6595,18 @@ export interface GetPropertyListRequest {
|
|
|
4954
6595
|
*/
|
|
4955
6596
|
resolve?: boolean;
|
|
4956
6597
|
/**
|
|
4957
|
-
*
|
|
4958
|
-
*/
|
|
4959
|
-
max_results?: number;
|
|
4960
|
-
/**
|
|
4961
|
-
* Pagination cursor for large result sets
|
|
6598
|
+
* Pagination parameters. Uses higher limits than standard pagination because property lists can contain tens of thousands of identifiers.
|
|
4962
6599
|
*/
|
|
4963
|
-
|
|
6600
|
+
pagination?: {
|
|
6601
|
+
/**
|
|
6602
|
+
* Maximum number of identifiers to return per page
|
|
6603
|
+
*/
|
|
6604
|
+
max_results?: number;
|
|
6605
|
+
/**
|
|
6606
|
+
* Opaque cursor from a previous response to fetch the next page
|
|
6607
|
+
*/
|
|
6608
|
+
cursor?: string;
|
|
6609
|
+
};
|
|
4964
6610
|
context?: ContextObject;
|
|
4965
6611
|
ext?: ExtensionObject;
|
|
4966
6612
|
}
|
|
@@ -4976,27 +6622,7 @@ export interface GetPropertyListResponse {
|
|
|
4976
6622
|
* Resolved identifiers that passed filters (if resolve=true). Cache these locally for real-time use.
|
|
4977
6623
|
*/
|
|
4978
6624
|
identifiers?: Identifier[];
|
|
4979
|
-
|
|
4980
|
-
* Total number of identifiers in resolved list
|
|
4981
|
-
*/
|
|
4982
|
-
total_count?: number;
|
|
4983
|
-
/**
|
|
4984
|
-
* Number of identifiers returned in this response
|
|
4985
|
-
*/
|
|
4986
|
-
returned_count?: number;
|
|
4987
|
-
/**
|
|
4988
|
-
* Pagination information
|
|
4989
|
-
*/
|
|
4990
|
-
pagination?: {
|
|
4991
|
-
/**
|
|
4992
|
-
* Whether more results are available
|
|
4993
|
-
*/
|
|
4994
|
-
has_more?: boolean;
|
|
4995
|
-
/**
|
|
4996
|
-
* Cursor for next page
|
|
4997
|
-
*/
|
|
4998
|
-
cursor?: string;
|
|
4999
|
-
};
|
|
6625
|
+
pagination?: PaginationResponse;
|
|
5000
6626
|
/**
|
|
5001
6627
|
* When the list was resolved
|
|
5002
6628
|
*/
|
|
@@ -5028,19 +6654,12 @@ export interface ListPropertyListsRequest {
|
|
|
5028
6654
|
* Filter to lists whose name contains this string
|
|
5029
6655
|
*/
|
|
5030
6656
|
name_contains?: string;
|
|
5031
|
-
|
|
5032
|
-
* Maximum lists to return
|
|
5033
|
-
*/
|
|
5034
|
-
max_results?: number;
|
|
5035
|
-
/**
|
|
5036
|
-
* Pagination cursor
|
|
5037
|
-
*/
|
|
5038
|
-
cursor?: string;
|
|
6657
|
+
pagination?: PaginationRequest;
|
|
5039
6658
|
context?: ContextObject;
|
|
5040
6659
|
ext?: ExtensionObject;
|
|
5041
6660
|
}
|
|
5042
6661
|
/**
|
|
5043
|
-
*
|
|
6662
|
+
* Standard cursor-based pagination parameters for list operations
|
|
5044
6663
|
*/
|
|
5045
6664
|
/**
|
|
5046
6665
|
* A source of properties for a property list. Supports three selection patterns: publisher with tags, publisher with property IDs, or direct identifiers.
|
|
@@ -5050,27 +6669,7 @@ export interface ListPropertyListsResponse {
|
|
|
5050
6669
|
* Array of property lists (metadata only, not resolved properties)
|
|
5051
6670
|
*/
|
|
5052
6671
|
lists: PropertyList[];
|
|
5053
|
-
|
|
5054
|
-
* Total number of lists matching criteria
|
|
5055
|
-
*/
|
|
5056
|
-
total_count?: number;
|
|
5057
|
-
/**
|
|
5058
|
-
* Number of lists returned in this response
|
|
5059
|
-
*/
|
|
5060
|
-
returned_count?: number;
|
|
5061
|
-
/**
|
|
5062
|
-
* Pagination information
|
|
5063
|
-
*/
|
|
5064
|
-
pagination?: {
|
|
5065
|
-
/**
|
|
5066
|
-
* Whether more results are available
|
|
5067
|
-
*/
|
|
5068
|
-
has_more?: boolean;
|
|
5069
|
-
/**
|
|
5070
|
-
* Cursor for next page
|
|
5071
|
-
*/
|
|
5072
|
-
cursor?: string;
|
|
5073
|
-
};
|
|
6672
|
+
pagination?: PaginationResponse;
|
|
5074
6673
|
ext?: ExtensionObject;
|
|
5075
6674
|
}
|
|
5076
6675
|
/**
|
|
@@ -5123,11 +6722,12 @@ export interface ListContentStandardsRequest {
|
|
|
5123
6722
|
* Filter by ISO 3166-1 alpha-2 country codes
|
|
5124
6723
|
*/
|
|
5125
6724
|
countries?: string[];
|
|
6725
|
+
pagination?: PaginationRequest;
|
|
5126
6726
|
context?: ContextObject;
|
|
5127
6727
|
ext?: ExtensionObject;
|
|
5128
6728
|
}
|
|
5129
6729
|
/**
|
|
5130
|
-
*
|
|
6730
|
+
* Standard cursor-based pagination parameters for list operations
|
|
5131
6731
|
*/
|
|
5132
6732
|
/**
|
|
5133
6733
|
* Response payload with list of content standards configurations
|
|
@@ -5143,6 +6743,7 @@ export type ListContentStandardsResponse = {
|
|
|
5143
6743
|
errors?: {
|
|
5144
6744
|
[k: string]: unknown | undefined;
|
|
5145
6745
|
};
|
|
6746
|
+
pagination?: PaginationResponse;
|
|
5146
6747
|
context?: ContextObject;
|
|
5147
6748
|
ext?: ExtensionObject;
|
|
5148
6749
|
} | {
|
|
@@ -5242,12 +6843,16 @@ export interface ContentStandards {
|
|
|
5242
6843
|
name?: string;
|
|
5243
6844
|
/**
|
|
5244
6845
|
* ISO 3166-1 alpha-2 country codes. Standards apply in ALL listed countries (AND logic).
|
|
6846
|
+
*
|
|
6847
|
+
* @minItems 1
|
|
5245
6848
|
*/
|
|
5246
|
-
countries_all?: string[];
|
|
6849
|
+
countries_all?: [string, ...string[]];
|
|
5247
6850
|
/**
|
|
5248
6851
|
* Advertising channels. Standards apply to ANY of the listed channels (OR logic).
|
|
6852
|
+
*
|
|
6853
|
+
* @minItems 1
|
|
5249
6854
|
*/
|
|
5250
|
-
channels_any?: MediaChannel[];
|
|
6855
|
+
channels_any?: [MediaChannel, ...MediaChannel[]];
|
|
5251
6856
|
/**
|
|
5252
6857
|
* BCP 47 language tags (e.g., 'en', 'de', 'fr'). Standards apply to content in ANY of these languages (OR logic). Content in unlisted languages is not covered by these standards.
|
|
5253
6858
|
*
|
|
@@ -6056,6 +7661,10 @@ export type ValidateContentDeliveryResponse = {
|
|
|
6056
7661
|
* Request parameters for retrieving content artifacts from a media buy for validation
|
|
6057
7662
|
*/
|
|
6058
7663
|
export interface GetMediaBuyArtifactsRequest {
|
|
7664
|
+
/**
|
|
7665
|
+
* Filter artifacts to a specific account. When provided, only returns artifacts for media buys belonging to this account. When omitted, returns artifacts across all accessible accounts. Optional if the agent has a single account.
|
|
7666
|
+
*/
|
|
7667
|
+
account_id?: string;
|
|
6059
7668
|
/**
|
|
6060
7669
|
* Media buy to get artifacts from
|
|
6061
7670
|
*/
|
|
@@ -6091,13 +7700,18 @@ export interface GetMediaBuyArtifactsRequest {
|
|
|
6091
7700
|
end?: string;
|
|
6092
7701
|
};
|
|
6093
7702
|
/**
|
|
6094
|
-
*
|
|
6095
|
-
*/
|
|
6096
|
-
limit?: number;
|
|
6097
|
-
/**
|
|
6098
|
-
* Pagination cursor for fetching subsequent pages
|
|
7703
|
+
* Pagination parameters. Uses higher limits than standard pagination because artifact result sets can be very large.
|
|
6099
7704
|
*/
|
|
6100
|
-
|
|
7705
|
+
pagination?: {
|
|
7706
|
+
/**
|
|
7707
|
+
* Maximum number of artifacts to return per page
|
|
7708
|
+
*/
|
|
7709
|
+
max_results?: number;
|
|
7710
|
+
/**
|
|
7711
|
+
* Opaque cursor from a previous response to fetch the next page
|
|
7712
|
+
*/
|
|
7713
|
+
cursor?: string;
|
|
7714
|
+
};
|
|
6101
7715
|
context?: ContextObject;
|
|
6102
7716
|
ext?: ExtensionObject;
|
|
6103
7717
|
}
|
|
@@ -6176,19 +7790,7 @@ export type GetMediaBuyArtifactsResponse = {
|
|
|
6176
7790
|
*/
|
|
6177
7791
|
method?: 'random' | 'stratified' | 'recent' | 'failures_only';
|
|
6178
7792
|
};
|
|
6179
|
-
|
|
6180
|
-
* Pagination information for large result sets
|
|
6181
|
-
*/
|
|
6182
|
-
pagination?: {
|
|
6183
|
-
/**
|
|
6184
|
-
* Cursor for fetching the next page
|
|
6185
|
-
*/
|
|
6186
|
-
cursor?: string;
|
|
6187
|
-
/**
|
|
6188
|
-
* Whether more results are available
|
|
6189
|
-
*/
|
|
6190
|
-
has_more?: boolean;
|
|
6191
|
-
};
|
|
7793
|
+
pagination?: PaginationResponse;
|
|
6192
7794
|
/**
|
|
6193
7795
|
* Field must not be present in success response
|
|
6194
7796
|
*/
|
|
@@ -6862,6 +8464,10 @@ export interface GetAdCPCapabilitiesRequest {
|
|
|
6862
8464
|
/**
|
|
6863
8465
|
* Methods for verifying user age for compliance. Does not include 'inferred' as it is not accepted for regulatory compliance.
|
|
6864
8466
|
*/
|
|
8467
|
+
export type EventType1 = 'page_view' | 'view_content' | 'select_content' | 'select_item' | 'search' | 'share' | 'add_to_cart' | 'remove_from_cart' | 'viewed_cart' | 'add_to_wishlist' | 'initiate_checkout' | 'add_payment_info' | 'purchase' | 'refund' | 'lead' | 'qualify_lead' | 'close_convert_lead' | 'disqualify_lead' | 'complete_registration' | 'subscribe' | 'start_trial' | 'app_install' | 'app_launch' | 'contact' | 'schedule' | 'donate' | 'submit_application' | 'custom';
|
|
8468
|
+
/**
|
|
8469
|
+
* Standardized advertising media channels describing how buyers allocate budget. Channels are planning abstractions, not technical substrates. See the Media Channel Taxonomy specification for detailed definitions.
|
|
8470
|
+
*/
|
|
6865
8471
|
export interface GetAdCPCapabilitiesResponse {
|
|
6866
8472
|
/**
|
|
6867
8473
|
* Core AdCP protocol information
|
|
@@ -6876,6 +8482,31 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
6876
8482
|
* Which AdCP domain protocols this seller supports
|
|
6877
8483
|
*/
|
|
6878
8484
|
supported_protocols: ('media_buy' | 'signals' | 'governance' | 'sponsored_intelligence' | 'creative')[];
|
|
8485
|
+
/**
|
|
8486
|
+
* Account management capabilities. Describes how accounts are established, what billing models are supported, and whether an account is required before browsing products.
|
|
8487
|
+
*/
|
|
8488
|
+
account?: {
|
|
8489
|
+
/**
|
|
8490
|
+
* Whether the seller requires operator-level credentials. When false (default), the seller trusts the agent's identity claims — the agent authenticates once and declares brands/operators via sync_accounts. When true, each operator must authenticate independently with the seller, and the agent opens a per-operator session using the operator's credential.
|
|
8491
|
+
*/
|
|
8492
|
+
require_operator_auth?: boolean;
|
|
8493
|
+
/**
|
|
8494
|
+
* OAuth authorization endpoint for obtaining operator-level credentials. Present when the seller supports OAuth for operator authentication. The agent directs the operator to this URL to authenticate and obtain a bearer token. If absent and require_operator_auth is true, operators obtain credentials out-of-band (e.g., seller portal, API key).
|
|
8495
|
+
*/
|
|
8496
|
+
authorization_endpoint?: string;
|
|
8497
|
+
/**
|
|
8498
|
+
* Billing models this seller supports. brand: seller invoices the brand directly. operator: seller invoices the operator (agency). agent: agent consolidates billing.
|
|
8499
|
+
*/
|
|
8500
|
+
supported_billing: ('brand' | 'operator' | 'agent')[];
|
|
8501
|
+
/**
|
|
8502
|
+
* The billing model applied when the agent omits billing from a sync_accounts request. Must be one of the values in supported_billing.
|
|
8503
|
+
*/
|
|
8504
|
+
default_billing?: 'brand' | 'operator' | 'agent';
|
|
8505
|
+
/**
|
|
8506
|
+
* Whether an active account is required to call get_products. When true, the agent must establish an account via sync_accounts before browsing products. When false, get_products works without an account (account_id is optional for rate-card-specific pricing).
|
|
8507
|
+
*/
|
|
8508
|
+
required_for_products?: boolean;
|
|
8509
|
+
};
|
|
6879
8510
|
/**
|
|
6880
8511
|
* Media-buy protocol capabilities. Only present if media_buy is in supported_protocols.
|
|
6881
8512
|
*/
|
|
@@ -6989,24 +8620,59 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
6989
8620
|
*/
|
|
6990
8621
|
age_restriction?: {
|
|
6991
8622
|
/**
|
|
6992
|
-
* Whether
|
|
8623
|
+
* Whether seller supports age restrictions
|
|
6993
8624
|
*/
|
|
6994
8625
|
supported?: boolean;
|
|
6995
8626
|
/**
|
|
6996
|
-
* Age verification methods this
|
|
8627
|
+
* Age verification methods this seller supports
|
|
6997
8628
|
*/
|
|
6998
8629
|
verification_methods?: AgeVerificationMethod[];
|
|
6999
8630
|
};
|
|
7000
8631
|
/**
|
|
7001
|
-
* Whether
|
|
8632
|
+
* Whether seller supports device platform targeting (Sec-CH-UA-Platform values)
|
|
7002
8633
|
*/
|
|
7003
8634
|
device_platform?: boolean;
|
|
7004
8635
|
/**
|
|
7005
|
-
* Whether
|
|
8636
|
+
* Whether seller supports language targeting (ISO 639-1 codes)
|
|
7006
8637
|
*/
|
|
7007
8638
|
language?: boolean;
|
|
7008
8639
|
};
|
|
7009
8640
|
};
|
|
8641
|
+
/**
|
|
8642
|
+
* Seller-level conversion tracking capabilities. Only present when features.conversion_tracking is true.
|
|
8643
|
+
*/
|
|
8644
|
+
conversion_tracking?: {
|
|
8645
|
+
/**
|
|
8646
|
+
* Event types this seller can track and attribute. If omitted, all standard event types are supported.
|
|
8647
|
+
*/
|
|
8648
|
+
supported_event_types?: EventType[];
|
|
8649
|
+
/**
|
|
8650
|
+
* Universal ID types accepted for user matching
|
|
8651
|
+
*/
|
|
8652
|
+
supported_uid_types?: UIDType[];
|
|
8653
|
+
/**
|
|
8654
|
+
* Hashed PII types accepted for user matching. Buyers must hash before sending (SHA-256, normalized).
|
|
8655
|
+
*/
|
|
8656
|
+
supported_hashed_identifiers?: ('hashed_email' | 'hashed_phone')[];
|
|
8657
|
+
/**
|
|
8658
|
+
* Action sources this seller accepts events from
|
|
8659
|
+
*/
|
|
8660
|
+
supported_action_sources?: ActionSource[];
|
|
8661
|
+
/**
|
|
8662
|
+
* Attribution windows available from this seller. Single-element arrays indicate fixed windows; multi-element arrays indicate configurable options the buyer can choose from via optimization_goal.attribution_window on packages.
|
|
8663
|
+
*/
|
|
8664
|
+
attribution_windows?: {
|
|
8665
|
+
event_type?: EventType1;
|
|
8666
|
+
/**
|
|
8667
|
+
* Available click-through attribution windows (e.g. ["7d"], ["7d", "14d", "30d"])
|
|
8668
|
+
*/
|
|
8669
|
+
click_through: string[];
|
|
8670
|
+
/**
|
|
8671
|
+
* Available view-through attribution windows (e.g. ["1d"], ["1d", "7d", "14d"])
|
|
8672
|
+
*/
|
|
8673
|
+
view_through?: string[];
|
|
8674
|
+
}[];
|
|
8675
|
+
};
|
|
7010
8676
|
/**
|
|
7011
8677
|
* Information about the seller's media inventory portfolio
|
|
7012
8678
|
*/
|
|
@@ -7150,14 +8816,15 @@ export interface GetAdCPCapabilitiesResponse {
|
|
|
7150
8816
|
*/
|
|
7151
8817
|
export interface ListAccountsRequest {
|
|
7152
8818
|
/**
|
|
7153
|
-
* Filter accounts by status
|
|
8819
|
+
* Filter accounts by status. Omit to return accounts in all statuses.
|
|
7154
8820
|
*/
|
|
7155
|
-
status?: 'active' | '
|
|
8821
|
+
status?: 'active' | 'pending_approval' | 'payment_required' | 'suspended' | 'closed';
|
|
8822
|
+
pagination?: PaginationRequest;
|
|
7156
8823
|
context?: ContextObject;
|
|
7157
8824
|
ext?: ExtensionObject;
|
|
7158
8825
|
}
|
|
7159
8826
|
/**
|
|
7160
|
-
*
|
|
8827
|
+
* Standard cursor-based pagination parameters for list operations
|
|
7161
8828
|
*/
|
|
7162
8829
|
/**
|
|
7163
8830
|
* Response payload for list_accounts task
|
|
@@ -7171,10 +8838,157 @@ export interface ListAccountsResponse {
|
|
|
7171
8838
|
* Task-specific errors and warnings
|
|
7172
8839
|
*/
|
|
7173
8840
|
errors?: Error[];
|
|
8841
|
+
pagination?: PaginationResponse;
|
|
7174
8842
|
context?: ContextObject;
|
|
7175
8843
|
ext?: ExtensionObject;
|
|
7176
8844
|
}
|
|
7177
8845
|
/**
|
|
7178
8846
|
* A billing account representing the relationship between a buyer and seller. The account determines rate cards, payment terms, and billing entity.
|
|
7179
8847
|
*/
|
|
8848
|
+
/**
|
|
8849
|
+
* Authentication schemes for push notification endpoints
|
|
8850
|
+
*/
|
|
8851
|
+
export interface SyncAccountsRequest {
|
|
8852
|
+
/**
|
|
8853
|
+
* Advertiser accounts to sync
|
|
8854
|
+
*
|
|
8855
|
+
* @maxItems 1000
|
|
8856
|
+
*/
|
|
8857
|
+
accounts: {
|
|
8858
|
+
/**
|
|
8859
|
+
* House domain where brand.json is hosted (e.g., 'unilever.com', 'acme-corp.com'). This is the canonical identity anchor for the brand, resolved via /.well-known/brand.json. For single-brand houses, this alone identifies the brand.
|
|
8860
|
+
*/
|
|
8861
|
+
house: string;
|
|
8862
|
+
/**
|
|
8863
|
+
* Brand ID within the house portfolio (from brand.json). Required when the house has multiple brands (e.g., 'dove' under unilever.com, 'tide' under pg.com). Omit for single-brand houses.
|
|
8864
|
+
*/
|
|
8865
|
+
brand_id?: string;
|
|
8866
|
+
/**
|
|
8867
|
+
* Domain of the entity operating the seat (e.g., 'groupm.com', 'mindshare.com'). Verified against the brand's authorized_operators in brand.json. Omit if the brand operates its own seat.
|
|
8868
|
+
*/
|
|
8869
|
+
operator?: string;
|
|
8870
|
+
/**
|
|
8871
|
+
* Who should be invoiced. brand: seller invoices the brand directly. operator: seller invoices the operator (agency). agent: agent consolidates billing across brands. Omit to accept the seller's default.
|
|
8872
|
+
*/
|
|
8873
|
+
billing?: 'brand' | 'operator' | 'agent';
|
|
8874
|
+
}[];
|
|
8875
|
+
/**
|
|
8876
|
+
* When true, accounts previously synced by this agent but not included in this request will be deactivated. Scoped to the authenticated agent — does not affect accounts managed by other agents. Use with caution.
|
|
8877
|
+
*/
|
|
8878
|
+
delete_missing?: boolean;
|
|
8879
|
+
/**
|
|
8880
|
+
* When true, preview what would change without applying. Returns what would be created/updated/deactivated.
|
|
8881
|
+
*/
|
|
8882
|
+
dry_run?: boolean;
|
|
8883
|
+
push_notification_config?: PushNotificationConfig;
|
|
8884
|
+
context?: ContextObject;
|
|
8885
|
+
ext?: ExtensionObject;
|
|
8886
|
+
}
|
|
8887
|
+
/**
|
|
8888
|
+
* Optional webhook for async notifications when account status changes (e.g., pending_approval transitions to active).
|
|
8889
|
+
*/
|
|
8890
|
+
/**
|
|
8891
|
+
* Response from account sync operation. Returns per-account results with status and billing, or operation-level errors on complete failure.
|
|
8892
|
+
*/
|
|
8893
|
+
export type SyncAccountsResponse = SyncAccountsSuccess | SyncAccountsError;
|
|
8894
|
+
/**
|
|
8895
|
+
* Sync operation processed accounts (individual accounts may be pending or have action=failed)
|
|
8896
|
+
*/
|
|
8897
|
+
export interface SyncAccountsSuccess {
|
|
8898
|
+
/**
|
|
8899
|
+
* Whether this was a dry run (no actual changes made)
|
|
8900
|
+
*/
|
|
8901
|
+
dry_run?: boolean;
|
|
8902
|
+
/**
|
|
8903
|
+
* Results for each account processed
|
|
8904
|
+
*/
|
|
8905
|
+
accounts: {
|
|
8906
|
+
/**
|
|
8907
|
+
* Seller-assigned account identifier. When billing is 'agent', multiple brands may share the same account_id.
|
|
8908
|
+
*/
|
|
8909
|
+
account_id?: string;
|
|
8910
|
+
/**
|
|
8911
|
+
* House domain, echoed from the request
|
|
8912
|
+
*/
|
|
8913
|
+
house: string;
|
|
8914
|
+
/**
|
|
8915
|
+
* Brand ID within the house portfolio, echoed from request
|
|
8916
|
+
*/
|
|
8917
|
+
brand_id?: string;
|
|
8918
|
+
/**
|
|
8919
|
+
* Operator domain, echoed from request
|
|
8920
|
+
*/
|
|
8921
|
+
operator?: string;
|
|
8922
|
+
/**
|
|
8923
|
+
* Human-readable account name assigned by the seller
|
|
8924
|
+
*/
|
|
8925
|
+
name?: string;
|
|
8926
|
+
/**
|
|
8927
|
+
* Action taken for this account. created: new account provisioned. updated: existing account modified. unchanged: no changes needed. failed: could not process (see errors).
|
|
8928
|
+
*/
|
|
8929
|
+
action: 'created' | 'updated' | 'unchanged' | 'failed';
|
|
8930
|
+
/**
|
|
8931
|
+
* Account status. active: ready for use. pending_approval: seller reviewing (credit, legal). payment_required: credit limit reached or funds depleted. suspended: was active, now paused. closed: terminated.
|
|
8932
|
+
*/
|
|
8933
|
+
status: 'active' | 'pending_approval' | 'payment_required' | 'suspended' | 'closed';
|
|
8934
|
+
/**
|
|
8935
|
+
* Who is invoiced on this account. May differ from the requested billing if the seller doesn't support it.
|
|
8936
|
+
*/
|
|
8937
|
+
billing?: 'brand' | 'operator' | 'agent';
|
|
8938
|
+
/**
|
|
8939
|
+
* Parent account ID when this account is a sub-account under a shared billing account
|
|
8940
|
+
*/
|
|
8941
|
+
parent_account_id?: string;
|
|
8942
|
+
/**
|
|
8943
|
+
* Setup information for pending accounts. Provides the agent (or human) with next steps to complete account activation.
|
|
8944
|
+
*/
|
|
8945
|
+
setup?: {
|
|
8946
|
+
/**
|
|
8947
|
+
* URL where the human can complete the required action (credit application, legal agreement, add funds)
|
|
8948
|
+
*/
|
|
8949
|
+
url?: string;
|
|
8950
|
+
/**
|
|
8951
|
+
* Human-readable description of what's needed
|
|
8952
|
+
*/
|
|
8953
|
+
message: string;
|
|
8954
|
+
/**
|
|
8955
|
+
* When this setup link expires
|
|
8956
|
+
*/
|
|
8957
|
+
expires_at?: string;
|
|
8958
|
+
};
|
|
8959
|
+
/**
|
|
8960
|
+
* Rate card applied to this account
|
|
8961
|
+
*/
|
|
8962
|
+
rate_card?: string;
|
|
8963
|
+
/**
|
|
8964
|
+
* Payment terms (e.g., 'net_30', 'prepay')
|
|
8965
|
+
*/
|
|
8966
|
+
payment_terms?: string;
|
|
8967
|
+
credit_limit?: {
|
|
8968
|
+
amount: number;
|
|
8969
|
+
currency: string;
|
|
8970
|
+
};
|
|
8971
|
+
/**
|
|
8972
|
+
* Per-account errors (only present when action is 'failed')
|
|
8973
|
+
*/
|
|
8974
|
+
errors?: Error[];
|
|
8975
|
+
/**
|
|
8976
|
+
* Non-fatal warnings about this account
|
|
8977
|
+
*/
|
|
8978
|
+
warnings?: string[];
|
|
8979
|
+
}[];
|
|
8980
|
+
context?: ContextObject;
|
|
8981
|
+
ext?: ExtensionObject;
|
|
8982
|
+
}
|
|
8983
|
+
/**
|
|
8984
|
+
* Standard error structure for task-specific errors and warnings
|
|
8985
|
+
*/
|
|
8986
|
+
export interface SyncAccountsError {
|
|
8987
|
+
/**
|
|
8988
|
+
* Operation-level errors (e.g., authentication failure, service unavailable)
|
|
8989
|
+
*/
|
|
8990
|
+
errors: Error[];
|
|
8991
|
+
context?: ContextObject;
|
|
8992
|
+
ext?: ExtensionObject;
|
|
8993
|
+
}
|
|
7180
8994
|
//# sourceMappingURL=tools.generated.d.ts.map
|