@adcp/client 3.18.0 → 3.20.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.
Files changed (41) hide show
  1. package/dist/lib/agents/index.generated.d.ts +9 -1
  2. package/dist/lib/agents/index.generated.d.ts.map +1 -1
  3. package/dist/lib/agents/index.generated.js +12 -0
  4. package/dist/lib/agents/index.generated.js.map +1 -1
  5. package/dist/lib/index.d.ts +3 -3
  6. package/dist/lib/index.d.ts.map +1 -1
  7. package/dist/lib/index.js +6 -4
  8. package/dist/lib/index.js.map +1 -1
  9. package/dist/lib/testing/agent-tester.d.ts +3 -2
  10. package/dist/lib/testing/agent-tester.d.ts.map +1 -1
  11. package/dist/lib/testing/agent-tester.js +15 -1
  12. package/dist/lib/testing/agent-tester.js.map +1 -1
  13. package/dist/lib/testing/index.d.ts +1 -1
  14. package/dist/lib/testing/index.d.ts.map +1 -1
  15. package/dist/lib/testing/index.js +9 -1
  16. package/dist/lib/testing/index.js.map +1 -1
  17. package/dist/lib/testing/orchestrator.d.ts +60 -0
  18. package/dist/lib/testing/orchestrator.d.ts.map +1 -0
  19. package/dist/lib/testing/orchestrator.js +196 -0
  20. package/dist/lib/testing/orchestrator.js.map +1 -0
  21. package/dist/lib/testing/scenarios/media-buy.d.ts.map +1 -1
  22. package/dist/lib/testing/scenarios/media-buy.js +2 -1
  23. package/dist/lib/testing/scenarios/media-buy.js.map +1 -1
  24. package/dist/lib/testing/scenarios/sponsored-intelligence.js +6 -5
  25. package/dist/lib/testing/scenarios/sponsored-intelligence.js.map +1 -1
  26. package/dist/lib/testing/types.d.ts +20 -0
  27. package/dist/lib/testing/types.d.ts.map +1 -1
  28. package/dist/lib/types/compat.d.ts +49 -7
  29. package/dist/lib/types/compat.d.ts.map +1 -1
  30. package/dist/lib/types/compat.js +30 -7
  31. package/dist/lib/types/compat.js.map +1 -1
  32. package/dist/lib/types/core.generated.d.ts +335 -522
  33. package/dist/lib/types/core.generated.d.ts.map +1 -1
  34. package/dist/lib/types/core.generated.js +1 -1
  35. package/dist/lib/types/schemas.generated.d.ts +4224 -3331
  36. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  37. package/dist/lib/types/schemas.generated.js +511 -614
  38. package/dist/lib/types/schemas.generated.js.map +1 -1
  39. package/dist/lib/types/tools.generated.d.ts +758 -1070
  40. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  41. package/package.json +2 -2
@@ -13,18 +13,10 @@ export type MetroAreaSystem = 'nielsen_dma' | 'uk_itl1' | 'uk_itl2' | 'eurostat_
13
13
  /**
14
14
  * Metro area classification system (e.g., 'nielsen_dma', 'uk_itl2')
15
15
  */
16
- export type MetroAreaSystem1 = 'nielsen_dma' | 'uk_itl1' | 'uk_itl2' | 'eurostat_nuts2' | 'custom';
17
- /**
18
- * Postal code system (e.g., 'us_zip', 'gb_outward'). System name encodes country and precision.
19
- */
20
16
  export type PostalCodeSystem = 'us_zip' | 'us_zip_plus_four' | 'gb_outward' | 'gb_full' | 'ca_fsa' | 'ca_full' | 'de_plz' | 'fr_code_postal' | 'au_postcode';
21
17
  /**
22
18
  * Postal code system (e.g., 'us_zip', 'gb_outward'). System name encodes country and precision.
23
19
  */
24
- export type PostalCodeSystem1 = 'us_zip' | 'us_zip_plus_four' | 'gb_outward' | 'gb_full' | 'ca_fsa' | 'ca_full' | 'de_plz' | 'fr_code_postal' | 'au_postcode';
25
- /**
26
- * Days of the week for daypart targeting
27
- */
28
20
  export type DayOfWeek = 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday';
29
21
  /**
30
22
  * Methods for verifying user age for compliance. Does not include 'inferred' as it is not accepted for regulatory compliance.
@@ -50,12 +42,12 @@ export interface MediaBuy {
50
42
  * Buyer's reference identifier for this media buy
51
43
  */
52
44
  buyer_ref?: string;
53
- account?: Account;
54
- status: MediaBuyStatus;
55
45
  /**
56
- * Description of advertiser and what is being promoted
46
+ * Buyer's campaign reference label. Groups related operations under a single campaign for CRM and ad server correlation.
57
47
  */
58
- promoted_offering: string;
48
+ campaign_ref?: string;
49
+ account?: Account;
50
+ status: MediaBuyStatus;
59
51
  /**
60
52
  * Total budget amount
61
53
  */
@@ -256,7 +248,7 @@ export interface TargetingOverlay {
256
248
  */
257
249
  geo_metros_exclude?: [
258
250
  {
259
- system: MetroAreaSystem1;
251
+ system: MetroAreaSystem;
260
252
  /**
261
253
  * Metro codes to exclude within the system (e.g., ['501', '602'] for Nielsen DMAs)
262
254
  *
@@ -265,7 +257,7 @@ export interface TargetingOverlay {
265
257
  values: [string, ...string[]];
266
258
  },
267
259
  ...{
268
- system: MetroAreaSystem1;
260
+ system: MetroAreaSystem;
269
261
  /**
270
262
  * Metro codes to exclude within the system (e.g., ['501', '602'] for Nielsen DMAs)
271
263
  *
@@ -306,7 +298,7 @@ export interface TargetingOverlay {
306
298
  */
307
299
  geo_postal_areas_exclude?: [
308
300
  {
309
- system: PostalCodeSystem1;
301
+ system: PostalCodeSystem;
310
302
  /**
311
303
  * Postal codes to exclude within the system (e.g., ['10001', '10002'] for us_zip)
312
304
  *
@@ -315,7 +307,7 @@ export interface TargetingOverlay {
315
307
  values: [string, ...string[]];
316
308
  },
317
309
  ...{
318
- system: PostalCodeSystem1;
310
+ system: PostalCodeSystem;
319
311
  /**
320
312
  * Postal codes to exclude within the system (e.g., ['10001', '10002'] for us_zip)
321
313
  *
@@ -377,6 +369,51 @@ export interface TargetingOverlay {
377
369
  * @minItems 1
378
370
  */
379
371
  device_platform?: [DevicePlatform, ...DevicePlatform[]];
372
+ /**
373
+ * Target users within store catchment areas from a synced store catalog. Each entry references a store-type catalog and optionally narrows to specific stores or catchment zones.
374
+ *
375
+ * @minItems 1
376
+ */
377
+ store_catchments?: [
378
+ {
379
+ /**
380
+ * Synced store-type catalog ID from sync_catalogs.
381
+ */
382
+ catalog_id: string;
383
+ /**
384
+ * Filter to specific stores within the catalog. Omit to target all stores.
385
+ *
386
+ * @minItems 1
387
+ */
388
+ store_ids?: [string, ...string[]];
389
+ /**
390
+ * Catchment zone IDs to target (e.g., 'walk', 'drive'). Omit to target all catchment zones.
391
+ *
392
+ * @minItems 1
393
+ */
394
+ catchment_ids?: [string, ...string[]];
395
+ [k: string]: unknown | undefined;
396
+ },
397
+ ...{
398
+ /**
399
+ * Synced store-type catalog ID from sync_catalogs.
400
+ */
401
+ catalog_id: string;
402
+ /**
403
+ * Filter to specific stores within the catalog. Omit to target all stores.
404
+ *
405
+ * @minItems 1
406
+ */
407
+ store_ids?: [string, ...string[]];
408
+ /**
409
+ * Catchment zone IDs to target (e.g., 'walk', 'drive'). Omit to target all catchment zones.
410
+ *
411
+ * @minItems 1
412
+ */
413
+ catchment_ids?: [string, ...string[]];
414
+ [k: string]: unknown | undefined;
415
+ }[]
416
+ ];
380
417
  /**
381
418
  * Restrict to users with specific language preferences. ISO 639-1 codes (e.g., 'en', 'es', 'fr').
382
419
  *
@@ -514,6 +551,22 @@ export interface OptimizationGoal {
514
551
  };
515
552
  [k: string]: unknown | undefined;
516
553
  }
554
+ /**
555
+ * Catalog type. Structural types: 'offering' (AdCP Offering objects), 'product' (ecommerce entries), 'inventory' (stock per location), 'store' (physical locations), 'promotion' (deals and pricing). Vertical types: 'hotel', 'flight', 'job', 'vehicle', 'real_estate', 'education', 'destination', 'app' — each with an industry-specific item schema.
556
+ */
557
+ export type CatalogType = 'offering' | 'product' | 'inventory' | 'store' | 'promotion' | 'hotel' | 'flight' | 'job' | 'vehicle' | 'real_estate' | 'education' | 'destination' | 'app';
558
+ /**
559
+ * Format of the external feed at url. Required when url points to a non-AdCP feed (e.g., Google Merchant Center XML, Meta Product Catalog). Omit for offering-type catalogs where the feed is native AdCP JSON.
560
+ */
561
+ export type FeedFormat = 'google_merchant_center' | 'facebook_catalog' | 'shopify' | 'linkedin_jobs' | 'custom';
562
+ /**
563
+ * How often the platform should re-fetch the feed from url. Only applicable when url is provided. Platforms may use this as a hint for polling schedules.
564
+ */
565
+ export type UpdateFrequency = 'realtime' | 'hourly' | 'daily' | 'weekly';
566
+ /**
567
+ * Standard marketing event types for event logging, aligned with IAB ECAPI
568
+ */
569
+ export type ContentIDType = 'sku' | 'gtin' | 'offering_id' | 'job_id' | 'hotel_id' | 'flight_id' | 'vehicle_id' | 'listing_id' | 'store_id' | 'program_id' | 'destination_id' | 'app_id';
517
570
  /**
518
571
  * JavaScript module type
519
572
  */
@@ -561,7 +614,7 @@ export type VASTAsset = {
561
614
  * Inline VAST XML content
562
615
  */
563
616
  content: string;
564
- vast_version?: VASTVersion1;
617
+ vast_version?: VASTVersion;
565
618
  /**
566
619
  * Whether VPAID (Video Player-Ad Interface Definition) is supported
567
620
  */
@@ -595,10 +648,6 @@ export type VASTTrackingEvent = 'start' | 'firstQuartile' | 'midpoint' | 'thirdQ
595
648
  /**
596
649
  * VAST specification version
597
650
  */
598
- export type VASTVersion1 = '2.0' | '3.0' | '4.0' | '4.1' | '4.2';
599
- /**
600
- * DAAST (Digital Audio Ad Serving Template) tag for third-party audio ad serving
601
- */
602
651
  export type DAASTAsset = {
603
652
  /**
604
653
  * Discriminator indicating DAAST is delivered via URL endpoint
@@ -635,7 +684,7 @@ export type DAASTAsset = {
635
684
  * Inline DAAST XML content
636
685
  */
637
686
  content: string;
638
- daast_version?: DAASTVersion1;
687
+ daast_version?: DAASTVersion;
639
688
  /**
640
689
  * Expected audio duration in milliseconds (if known)
641
690
  */
@@ -665,14 +714,6 @@ export type DAASTTrackingEvent = 'start' | 'firstQuartile' | 'midpoint' | 'third
665
714
  /**
666
715
  * DAAST specification version
667
716
  */
668
- export type DAASTVersion1 = '1.0' | '1.1';
669
- /**
670
- * Brand identifier within the house portfolio. Optional for single-brand domains.
671
- */
672
- export type BrandID = string;
673
- /**
674
- * Type of URL asset: 'clickthrough' for user click destination (landing page), 'tracker_pixel' for impression/event tracking via HTTP request (fires GET, expects pixel/204 response), 'tracker_script' for measurement SDKs that must load as <script> tag (OMID verification, native event trackers using method:2)
675
- */
676
717
  export type URLAssetType = 'clickthrough' | 'tracker_pixel' | 'tracker_script';
677
718
  /**
678
719
  * For generative creatives: set to 'approved' to finalize, 'rejected' to request regeneration with updated assets/message. Omit for non-generative creatives (system will set based on processing state).
@@ -691,6 +732,10 @@ export interface CreativeAsset {
691
732
  */
692
733
  name: string;
693
734
  format_id: FormatID;
735
+ /**
736
+ * Catalogs this creative renders. Each entry satisfies one of the format's catalog_requirements, matched by type. Each catalog can be inline (with items), a reference to a synced catalog (by catalog_id), or a URL to an external feed.
737
+ */
738
+ catalogs?: Catalog[];
694
739
  /**
695
740
  * Assets required by the format, keyed by asset_role
696
741
  */
@@ -699,7 +744,7 @@ export interface CreativeAsset {
699
744
  * This interface was referenced by `undefined`'s JSON-Schema definition
700
745
  * via the `patternProperty` "^[a-zA-Z0-9_-]+$".
701
746
  */
702
- [k: string]: ImageAsset | VideoAsset | AudioAsset | TextAsset | HTMLAsset | CSSAsset | JavaScriptAsset | VASTAsset | DAASTAsset | PromotedOfferings | URLAsset;
747
+ [k: string]: ImageAsset | VideoAsset | AudioAsset | TextAsset | HTMLAsset | CSSAsset | JavaScriptAsset | VASTAsset | DAASTAsset | URLAsset;
703
748
  };
704
749
  /**
705
750
  * Preview contexts for generative formats - defines what scenarios to generate previews for
@@ -737,6 +782,66 @@ export interface CreativeAsset {
737
782
  /**
738
783
  * Format identifier specifying which format this creative conforms to. Can be: (1) concrete format_id referencing a format with fixed dimensions, (2) template format_id referencing a template format, or (3) parameterized format_id with dimensions/duration parameters for template formats.
739
784
  */
785
+ export interface Catalog {
786
+ /**
787
+ * Buyer's identifier for this catalog. Required when syncing via sync_catalogs. When used in creatives, references a previously synced catalog on the account.
788
+ */
789
+ catalog_id?: string;
790
+ /**
791
+ * Human-readable name for this catalog (e.g., 'Summer Products 2025', 'Amsterdam Store Locations').
792
+ */
793
+ name?: string;
794
+ type: CatalogType;
795
+ /**
796
+ * URL to an external catalog feed. The platform fetches and resolves items from this URL. For offering-type catalogs, the feed contains an array of Offering objects. For other types, the feed format is determined by feed_format. When omitted with type 'product', the platform uses its synced copy of the brand's product catalog.
797
+ */
798
+ url?: string;
799
+ feed_format?: FeedFormat;
800
+ update_frequency?: UpdateFrequency;
801
+ /**
802
+ * Inline catalog data. The item schema depends on the catalog type: Offering objects for 'offering', StoreItem for 'store', HotelItem for 'hotel', FlightItem for 'flight', JobItem for 'job', VehicleItem for 'vehicle', RealEstateItem for 'real_estate', EducationItem for 'education', DestinationItem for 'destination', AppItem for 'app', or freeform objects for 'product', 'inventory', and 'promotion'. Mutually exclusive with url — provide one or the other, not both. Implementations should validate items against the type-specific schema.
803
+ *
804
+ * @minItems 1
805
+ */
806
+ items?: [{}, ...{}[]];
807
+ /**
808
+ * Filter catalog to specific item IDs. For offering-type catalogs, these are offering_id values. For product-type catalogs, these are SKU identifiers.
809
+ *
810
+ * @minItems 1
811
+ */
812
+ ids?: [string, ...string[]];
813
+ /**
814
+ * Filter product-type catalogs by GTIN identifiers for cross-retailer catalog matching. Accepts standard GTIN formats (GTIN-8, UPC-A/GTIN-12, EAN-13/GTIN-13, GTIN-14). Only applicable when type is 'product'.
815
+ *
816
+ * @minItems 1
817
+ */
818
+ gtins?: [string, ...string[]];
819
+ /**
820
+ * Filter catalog to items with these tags. Tags are matched using OR logic — items matching any tag are included.
821
+ *
822
+ * @minItems 1
823
+ */
824
+ tags?: [string, ...string[]];
825
+ /**
826
+ * Filter catalog to items in this category (e.g., 'beverages/soft-drinks', 'chef-positions').
827
+ */
828
+ category?: string;
829
+ /**
830
+ * Natural language filter for catalog items (e.g., 'all pasta sauces under $5', 'amsterdam vacancies').
831
+ */
832
+ query?: string;
833
+ /**
834
+ * Event types that represent conversions for items in this catalog. Declares what events the platform should attribute to catalog items — e.g., a job catalog converts via submit_application, a product catalog via purchase. The event's content_ids field carries the item IDs that connect back to catalog items. Use content_id_type to declare what identifier type content_ids values represent.
835
+ *
836
+ * @minItems 1
837
+ */
838
+ conversion_events?: [EventType, ...EventType[]];
839
+ content_id_type?: ContentIDType;
840
+ [k: string]: unknown | undefined;
841
+ }
842
+ /**
843
+ * Image asset with URL and dimensions
844
+ */
740
845
  export interface ImageAsset {
741
846
  /**
742
847
  * URL to the image asset
@@ -1032,134 +1137,7 @@ export interface JavaScriptAsset {
1032
1137
  [k: string]: unknown | undefined;
1033
1138
  }
1034
1139
  /**
1035
- * Complete offering specification combining brand reference, product selectors, and optional SI agent endpoint. Provides all context needed for creative generation and/or conversational experiences about what is being promoted. When si_agent_url is present, hosts can connect users to conversational experiences about any of the offerings.
1036
- */
1037
- export interface PromotedOfferings {
1038
- brand: BrandReference;
1039
- /**
1040
- * MCP endpoint URL for the brand's SI agent. When present, hosts can connect users to conversational experiences about any of the offerings. The agent handles si_get_offering lookups and full conversations.
1041
- */
1042
- si_agent_url?: string;
1043
- product_selectors?: PromotedProducts;
1044
- /**
1045
- * Offerings available for promotion. Each offering can include creative assets (via portfolio_ref or inline assets) for traditional ads. When si_agent_url is set at the parent level, hosts can offer conversational experiences about any of these offerings.
1046
- */
1047
- offerings?: Offering[];
1048
- /**
1049
- * Selectors to choose specific assets from the brand's asset library
1050
- */
1051
- asset_selectors?: {
1052
- /**
1053
- * Select assets with specific tags (e.g., ['holiday', 'premium'])
1054
- */
1055
- tags?: string[];
1056
- /**
1057
- * Filter by asset type (e.g., ['image', 'video'])
1058
- */
1059
- asset_types?: ('image' | 'video' | 'audio' | 'vast' | 'daast' | 'text' | 'url' | 'html' | 'css' | 'javascript' | 'webhook')[];
1060
- /**
1061
- * Exclude assets with these tags
1062
- */
1063
- exclude_tags?: string[];
1064
- [k: string]: unknown | undefined;
1065
- };
1066
- [k: string]: unknown | undefined;
1067
- }
1068
- /**
1069
- * Brand reference. Resolved to full brand identity (logos, colors, tone, assets) at execution time for creative generation.
1070
- */
1071
- export interface BrandReference {
1072
- /**
1073
- * Domain where /.well-known/brand.json is hosted, or the brand's operating domain
1074
- */
1075
- domain: string;
1076
- brand_id?: BrandID;
1077
- }
1078
- /**
1079
- * Selectors to choose which products/offerings from the brand's product catalog to promote
1080
- */
1081
- export interface PromotedProducts {
1082
- /**
1083
- * GTIN product identifiers for cross-retailer catalog matching. Accepts standard GTIN formats (GTIN-8, UPC-A/GTIN-12, EAN-13/GTIN-13, GTIN-14).
1084
- */
1085
- manifest_gtins?: string[];
1086
- /**
1087
- * Direct product SKU references from the brand's product catalog
1088
- */
1089
- manifest_skus?: string[];
1090
- /**
1091
- * Select products by tags from the brand's product catalog (e.g., 'organic', 'sauces', 'holiday')
1092
- */
1093
- manifest_tags?: string[];
1094
- /**
1095
- * Select products from a specific category in the brand's product catalog (e.g., 'beverages/soft-drinks', 'food/sauces')
1096
- */
1097
- manifest_category?: string;
1098
- /**
1099
- * Natural language query to select products from the brand's catalog (e.g., 'all pasta sauces', 'organic products under $20')
1100
- */
1101
- manifest_query?: string;
1102
- [k: string]: unknown | undefined;
1103
- }
1104
- /**
1105
- * 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).
1106
- */
1107
- export interface Offering {
1108
- /**
1109
- * Unique identifier for this offering. Used by hosts to reference specific offerings in si_get_offering calls.
1110
- */
1111
- offering_id: string;
1112
- /**
1113
- * Human-readable offering name (e.g., 'Winter Sale', 'Free Trial', 'Enterprise Platform')
1114
- */
1115
- name: string;
1116
- /**
1117
- * Description of what's being offered
1118
- */
1119
- description?: string;
1120
- /**
1121
- * Short promotional tagline for the offering
1122
- */
1123
- tagline?: string;
1124
- /**
1125
- * When the offering becomes available. If not specified, offering is immediately available.
1126
- */
1127
- valid_from?: string;
1128
- /**
1129
- * When the offering expires. If not specified, offering has no expiration.
1130
- */
1131
- valid_to?: string;
1132
- /**
1133
- * URL for checkout/purchase flow when the brand doesn't support agentic checkout.
1134
- */
1135
- checkout_url?: string;
1136
- /**
1137
- * Landing page URL for this offering.
1138
- */
1139
- landing_url?: string;
1140
- /**
1141
- * Assets specific to this offering (images, videos, copy)
1142
- */
1143
- assets?: {
1144
- [k: string]: unknown | undefined;
1145
- }[];
1146
- /**
1147
- * Reference to a creative portfolio for this offering. Portfolios contain organized creative assets across formats, enabling consistent ad delivery for this specific offering.
1148
- */
1149
- portfolio_ref?: string;
1150
- /**
1151
- * Keywords for matching this offering to user intent. Hosts use these for retrieval/relevance scoring.
1152
- */
1153
- keywords?: string[];
1154
- /**
1155
- * Categories this offering belongs to (e.g., 'measurement', 'identity', 'programmatic')
1156
- */
1157
- categories?: string[];
1158
- ext?: ExtensionObject;
1159
- [k: string]: unknown | undefined;
1160
- }
1161
- /**
1162
- * 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.
1140
+ * URL reference asset
1163
1141
  */
1164
1142
  export interface URLAsset {
1165
1143
  /**
@@ -1254,10 +1232,6 @@ export type ForecastMethod = 'estimate' | 'modeled' | 'guaranteed';
1254
1232
  /**
1255
1233
  * Measurement system for the demographic field. Ensures buyer and seller agree on demographic notation.
1256
1234
  */
1257
- export type DemographicSystem1 = 'nielsen' | 'barb' | 'agf' | 'oztam' | 'mediametrie' | 'custom';
1258
- /**
1259
- * Unit of measurement for reach and audience_size metrics in this forecast. Required for cross-channel forecast comparison.
1260
- */
1261
1235
  export type ReachUnit = 'individuals' | 'households' | 'devices' | 'accounts' | 'cookies' | 'custom';
1262
1236
  /**
1263
1237
  * Available frequencies for delivery reports and metrics updates
@@ -1322,7 +1296,7 @@ export type DataProviderSignalSelector = {
1322
1296
  [k: string]: unknown | undefined;
1323
1297
  };
1324
1298
  /**
1325
- * Where the conversion event originated
1299
+ * The type of catalog feed. Determines the item schema and how the platform resolves catalog items. Multiple catalog types can be synced to the same account and referenced together in creatives.
1326
1300
  */
1327
1301
  export type ActionSource = 'website' | 'app' | 'offline' | 'phone_call' | 'chat' | 'email' | 'in_store' | 'system_generated' | 'other';
1328
1302
  /**
@@ -1395,6 +1369,10 @@ export interface Product {
1395
1369
  * 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.
1396
1370
  */
1397
1371
  signal_targeting_allowed?: boolean;
1372
+ /**
1373
+ * Catalog types this product supports for catalog-driven campaigns. A sponsored product listing declares ["product"], a job board declares ["job", "offering"]. Buyers match synced catalogs to products via this field.
1374
+ */
1375
+ catalog_types?: CatalogType[];
1398
1376
  /**
1399
1377
  * 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.
1400
1378
  */
@@ -1413,19 +1391,23 @@ export interface Product {
1413
1391
  platform_managed?: boolean;
1414
1392
  };
1415
1393
  /**
1416
- * When the buyer provides a brand 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.
1394
+ * When the buyer provides a catalog on get_products, indicates which catalog items are eligible for this product. Only present for products where catalog matching is relevant (e.g., sponsored product listings, job boards, hotel ads).
1417
1395
  */
1418
1396
  catalog_match?: {
1419
1397
  /**
1420
- * 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).
1398
+ * GTINs from the buyer's catalog that are eligible on this product's inventory. Standard GTIN formats (GTIN-8 through GTIN-14). Only present for product-type catalogs with GTIN matching.
1421
1399
  */
1422
1400
  matched_gtins?: string[];
1423
1401
  /**
1424
- * 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.
1402
+ * Item IDs from the buyer's catalog that matched this product's inventory. The ID type depends on the catalog type and content_id_type (e.g., SKUs for product catalogs, job_ids for job catalogs, offering_ids for offering catalogs).
1425
1403
  */
1426
- matched_skus?: string[];
1404
+ matched_ids?: string[];
1427
1405
  /**
1428
- * Total catalog items evaluated from the buyer's feed.
1406
+ * Number of catalog items that matched this product's inventory.
1407
+ */
1408
+ matched_count?: number;
1409
+ /**
1410
+ * Total catalog items evaluated from the buyer's catalog.
1429
1411
  */
1430
1412
  submitted_count: number;
1431
1413
  };
@@ -1441,7 +1423,7 @@ export interface Product {
1441
1423
  * Optional standard visual card (300x400px) for displaying this product in user interfaces. Can be rendered via preview_creative or pre-generated.
1442
1424
  */
1443
1425
  product_card?: {
1444
- format_id: FormatID1;
1426
+ format_id: FormatID;
1445
1427
  /**
1446
1428
  * Asset manifest for rendering the card, structure defined by the format
1447
1429
  */
@@ -1451,7 +1433,7 @@ export interface Product {
1451
1433
  * Optional detailed card with carousel and full specifications. Provides rich product presentation similar to media kit pages.
1452
1434
  */
1453
1435
  product_card_detailed?: {
1454
- format_id: FormatID2;
1436
+ format_id: FormatID;
1455
1437
  /**
1456
1438
  * Asset manifest for rendering the detailed card, structure defined by the format
1457
1439
  */
@@ -1560,7 +1542,7 @@ export interface VCPMPricingOption {
1560
1542
  * Minimum acceptable bid for auction pricing (mutually exclusive with fixed_price). Bids below this value will be rejected.
1561
1543
  */
1562
1544
  floor_price?: number;
1563
- price_guidance?: PriceGuidance1;
1545
+ price_guidance?: PriceGuidance;
1564
1546
  /**
1565
1547
  * Minimum spend requirement per package using this pricing option, in the specified currency
1566
1548
  */
@@ -1570,28 +1552,6 @@ export interface VCPMPricingOption {
1570
1552
  /**
1571
1553
  * Optional pricing guidance for auction-based bidding
1572
1554
  */
1573
- export interface PriceGuidance1 {
1574
- /**
1575
- * 25th percentile of recent winning bids
1576
- */
1577
- p25?: number;
1578
- /**
1579
- * Median of recent winning bids
1580
- */
1581
- p50?: number;
1582
- /**
1583
- * 75th percentile of recent winning bids
1584
- */
1585
- p75?: number;
1586
- /**
1587
- * 90th percentile of recent winning bids
1588
- */
1589
- p90?: number;
1590
- [k: string]: unknown | undefined;
1591
- }
1592
- /**
1593
- * Cost Per Click pricing. If fixed_price is present, it's fixed pricing. If absent, it's auction-based.
1594
- */
1595
1555
  export interface CPCPricingOption {
1596
1556
  /**
1597
1557
  * Unique identifier for this pricing option within the product
@@ -1613,7 +1573,7 @@ export interface CPCPricingOption {
1613
1573
  * Minimum acceptable bid for auction pricing (mutually exclusive with fixed_price). Bids below this value will be rejected.
1614
1574
  */
1615
1575
  floor_price?: number;
1616
- price_guidance?: PriceGuidance2;
1576
+ price_guidance?: PriceGuidance;
1617
1577
  /**
1618
1578
  * Minimum spend requirement per package using this pricing option, in the specified currency
1619
1579
  */
@@ -1623,28 +1583,6 @@ export interface CPCPricingOption {
1623
1583
  /**
1624
1584
  * Optional pricing guidance for auction-based bidding
1625
1585
  */
1626
- export interface PriceGuidance2 {
1627
- /**
1628
- * 25th percentile of recent winning bids
1629
- */
1630
- p25?: number;
1631
- /**
1632
- * Median of recent winning bids
1633
- */
1634
- p50?: number;
1635
- /**
1636
- * 75th percentile of recent winning bids
1637
- */
1638
- p75?: number;
1639
- /**
1640
- * 90th percentile of recent winning bids
1641
- */
1642
- p90?: number;
1643
- [k: string]: unknown | undefined;
1644
- }
1645
- /**
1646
- * Cost Per Completed View (100% video/audio completion) pricing. If fixed_price is present, it's fixed pricing. If absent, it's auction-based.
1647
- */
1648
1586
  export interface CPCVPricingOption {
1649
1587
  /**
1650
1588
  * Unique identifier for this pricing option within the product
@@ -1666,7 +1604,7 @@ export interface CPCVPricingOption {
1666
1604
  * Minimum acceptable bid for auction pricing (mutually exclusive with fixed_price). Bids below this value will be rejected.
1667
1605
  */
1668
1606
  floor_price?: number;
1669
- price_guidance?: PriceGuidance3;
1607
+ price_guidance?: PriceGuidance;
1670
1608
  /**
1671
1609
  * Minimum spend requirement per package using this pricing option, in the specified currency
1672
1610
  */
@@ -1676,28 +1614,6 @@ export interface CPCVPricingOption {
1676
1614
  /**
1677
1615
  * Optional pricing guidance for auction-based bidding
1678
1616
  */
1679
- export interface PriceGuidance3 {
1680
- /**
1681
- * 25th percentile of recent winning bids
1682
- */
1683
- p25?: number;
1684
- /**
1685
- * Median of recent winning bids
1686
- */
1687
- p50?: number;
1688
- /**
1689
- * 75th percentile of recent winning bids
1690
- */
1691
- p75?: number;
1692
- /**
1693
- * 90th percentile of recent winning bids
1694
- */
1695
- p90?: number;
1696
- [k: string]: unknown | undefined;
1697
- }
1698
- /**
1699
- * Cost Per View (at publisher-defined threshold) pricing for video/audio. If fixed_price is present, it's fixed pricing. If absent, it's auction-based.
1700
- */
1701
1617
  export interface CPVPricingOption {
1702
1618
  /**
1703
1619
  * Unique identifier for this pricing option within the product
@@ -1719,7 +1635,7 @@ export interface CPVPricingOption {
1719
1635
  * Minimum acceptable bid for auction pricing (mutually exclusive with fixed_price). Bids below this value will be rejected.
1720
1636
  */
1721
1637
  floor_price?: number;
1722
- price_guidance?: PriceGuidance4;
1638
+ price_guidance?: PriceGuidance;
1723
1639
  /**
1724
1640
  * CPV-specific parameters defining the view threshold
1725
1641
  */
@@ -1742,50 +1658,28 @@ export interface CPVPricingOption {
1742
1658
  /**
1743
1659
  * Optional pricing guidance for auction-based bidding
1744
1660
  */
1745
- export interface PriceGuidance4 {
1661
+ export interface CPPPricingOption {
1746
1662
  /**
1747
- * 25th percentile of recent winning bids
1663
+ * Unique identifier for this pricing option within the product
1748
1664
  */
1749
- p25?: number;
1665
+ pricing_option_id: string;
1750
1666
  /**
1751
- * Median of recent winning bids
1667
+ * Cost per Gross Rating Point
1752
1668
  */
1753
- p50?: number;
1669
+ pricing_model: 'cpp';
1754
1670
  /**
1755
- * 75th percentile of recent winning bids
1671
+ * ISO 4217 currency code
1756
1672
  */
1757
- p75?: number;
1673
+ currency: string;
1758
1674
  /**
1759
- * 90th percentile of recent winning bids
1760
- */
1761
- p90?: number;
1762
- [k: string]: unknown | undefined;
1763
- }
1764
- /**
1765
- * Cost Per Point (Gross Rating Point) pricing for TV and audio campaigns. If fixed_price is present, it's fixed pricing. If absent, it's auction-based.
1766
- */
1767
- export interface CPPPricingOption {
1768
- /**
1769
- * Unique identifier for this pricing option within the product
1770
- */
1771
- pricing_option_id: string;
1772
- /**
1773
- * Cost per Gross Rating Point
1774
- */
1775
- pricing_model: 'cpp';
1776
- /**
1777
- * ISO 4217 currency code
1778
- */
1779
- currency: string;
1780
- /**
1781
- * Fixed price per rating point. If present, this is fixed pricing. If absent, auction-based.
1675
+ * Fixed price per rating point. If present, this is fixed pricing. If absent, auction-based.
1782
1676
  */
1783
1677
  fixed_price?: number;
1784
1678
  /**
1785
1679
  * Minimum acceptable bid for auction pricing (mutually exclusive with fixed_price). Bids below this value will be rejected.
1786
1680
  */
1787
1681
  floor_price?: number;
1788
- price_guidance?: PriceGuidance5;
1682
+ price_guidance?: PriceGuidance;
1789
1683
  /**
1790
1684
  * CPP-specific parameters for demographic targeting
1791
1685
  */
@@ -1810,28 +1704,6 @@ export interface CPPPricingOption {
1810
1704
  /**
1811
1705
  * Optional pricing guidance for auction-based bidding
1812
1706
  */
1813
- export interface PriceGuidance5 {
1814
- /**
1815
- * 25th percentile of recent winning bids
1816
- */
1817
- p25?: number;
1818
- /**
1819
- * Median of recent winning bids
1820
- */
1821
- p50?: number;
1822
- /**
1823
- * 75th percentile of recent winning bids
1824
- */
1825
- p75?: number;
1826
- /**
1827
- * 90th percentile of recent winning bids
1828
- */
1829
- p90?: number;
1830
- [k: string]: unknown | undefined;
1831
- }
1832
- /**
1833
- * 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).
1834
- */
1835
1707
  export interface CPAPricingOption {
1836
1708
  /**
1837
1709
  * Unique identifier for this pricing option within the product
@@ -1891,7 +1763,7 @@ export interface FlatRatePricingOption {
1891
1763
  * Minimum acceptable bid for auction pricing (mutually exclusive with fixed_price). Bids below this value will be rejected.
1892
1764
  */
1893
1765
  floor_price?: number;
1894
- price_guidance?: PriceGuidance6;
1766
+ price_guidance?: PriceGuidance;
1895
1767
  /**
1896
1768
  * Flat rate parameters for DOOH and time-based campaigns
1897
1769
  */
@@ -1935,28 +1807,6 @@ export interface FlatRatePricingOption {
1935
1807
  /**
1936
1808
  * Optional pricing guidance for auction-based bidding
1937
1809
  */
1938
- export interface PriceGuidance6 {
1939
- /**
1940
- * 25th percentile of recent winning bids
1941
- */
1942
- p25?: number;
1943
- /**
1944
- * Median of recent winning bids
1945
- */
1946
- p50?: number;
1947
- /**
1948
- * 75th percentile of recent winning bids
1949
- */
1950
- p75?: number;
1951
- /**
1952
- * 90th percentile of recent winning bids
1953
- */
1954
- p90?: number;
1955
- [k: string]: unknown | undefined;
1956
- }
1957
- /**
1958
- * 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.
1959
- */
1960
1810
  export interface TimeBasedPricingOption {
1961
1811
  /**
1962
1812
  * Unique identifier for this pricing option within the product
@@ -1978,7 +1828,7 @@ export interface TimeBasedPricingOption {
1978
1828
  * Minimum acceptable bid per time unit for auction pricing (mutually exclusive with fixed_price). Bids below this value will be rejected.
1979
1829
  */
1980
1830
  floor_price?: number;
1981
- price_guidance?: PriceGuidance7;
1831
+ price_guidance?: PriceGuidance;
1982
1832
  /**
1983
1833
  * Time-based pricing parameters
1984
1834
  */
@@ -2006,28 +1856,6 @@ export interface TimeBasedPricingOption {
2006
1856
  /**
2007
1857
  * Optional pricing guidance for auction-based bidding
2008
1858
  */
2009
- export interface PriceGuidance7 {
2010
- /**
2011
- * 25th percentile of recent winning bids
2012
- */
2013
- p25?: number;
2014
- /**
2015
- * Median of recent winning bids
2016
- */
2017
- p50?: number;
2018
- /**
2019
- * 75th percentile of recent winning bids
2020
- */
2021
- p75?: number;
2022
- /**
2023
- * 90th percentile of recent winning bids
2024
- */
2025
- p90?: number;
2026
- [k: string]: unknown | undefined;
2027
- }
2028
- /**
2029
- * Forecasted delivery metrics for this product. Gives buyers an estimate of expected performance before requesting a proposal.
2030
- */
2031
1859
  export interface DeliveryForecast {
2032
1860
  /**
2033
1861
  * 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.
@@ -2041,7 +1869,7 @@ export interface DeliveryForecast {
2041
1869
  * ISO 4217 currency code for monetary values in this forecast (spend, budget)
2042
1870
  */
2043
1871
  currency: string;
2044
- demographic_system?: DemographicSystem1;
1872
+ demographic_system?: DemographicSystem;
2045
1873
  /**
2046
1874
  * 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.
2047
1875
  */
@@ -2165,61 +1993,6 @@ export interface CreativePolicy {
2165
1993
  /**
2166
1994
  * 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.
2167
1995
  */
2168
- export interface FormatID1 {
2169
- /**
2170
- * URL of the agent that defines this format (e.g., 'https://creatives.adcontextprotocol.org' for standard formats, or 'https://publisher.com/.well-known/adcp/sales' for custom formats)
2171
- */
2172
- agent_url: string;
2173
- /**
2174
- * Format identifier within the agent's namespace (e.g., 'display_static', 'video_hosted', 'audio_standard'). When used alone, references a template format. When combined with dimension/duration fields, creates a parameterized format ID for a specific variant.
2175
- */
2176
- id: string;
2177
- /**
2178
- * Width in pixels for visual formats. When specified, height must also be specified. Both fields together create a parameterized format ID for dimension-specific variants.
2179
- */
2180
- width?: number;
2181
- /**
2182
- * Height in pixels for visual formats. When specified, width must also be specified. Both fields together create a parameterized format ID for dimension-specific variants.
2183
- */
2184
- height?: number;
2185
- /**
2186
- * Duration in milliseconds for time-based formats (video, audio). When specified, creates a parameterized format ID. Omit to reference a template format without parameters.
2187
- */
2188
- duration_ms?: number;
2189
- [k: string]: unknown | undefined;
2190
- }
2191
- /**
2192
- * 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.
2193
- */
2194
- export interface FormatID2 {
2195
- /**
2196
- * URL of the agent that defines this format (e.g., 'https://creatives.adcontextprotocol.org' for standard formats, or 'https://publisher.com/.well-known/adcp/sales' for custom formats)
2197
- */
2198
- agent_url: string;
2199
- /**
2200
- * Format identifier within the agent's namespace (e.g., 'display_static', 'video_hosted', 'audio_standard'). When used alone, references a template format. When combined with dimension/duration fields, creates a parameterized format ID for a specific variant.
2201
- */
2202
- id: string;
2203
- /**
2204
- * Width in pixels for visual formats. When specified, height must also be specified. Both fields together create a parameterized format ID for dimension-specific variants.
2205
- */
2206
- width?: number;
2207
- /**
2208
- * Height in pixels for visual formats. When specified, width must also be specified. Both fields together create a parameterized format ID for dimension-specific variants.
2209
- */
2210
- height?: number;
2211
- /**
2212
- * Duration in milliseconds for time-based formats (video, audio). When specified, creates a parameterized format ID. Omit to reference a template format without parameters.
2213
- */
2214
- duration_ms?: number;
2215
- [k: string]: unknown | undefined;
2216
- }
2217
- /**
2218
- * Metro area classification system (e.g., 'nielsen_dma', 'uk_itl2')
2219
- */
2220
- /**
2221
- * Unique identifier for this property (optional). Enables referencing properties by ID instead of repeating full objects.
2222
- */
2223
1996
  export type PropertyType = 'website' | 'mobile_app' | 'ctv_app' | 'desktop_app' | 'dooh' | 'podcast' | 'radio' | 'streaming_audio';
2224
1997
  /**
2225
1998
  * Type of identifier for this property
@@ -2261,7 +2034,7 @@ export interface Property {
2261
2034
  /**
2262
2035
  * Type of AdCP operation that triggered this webhook. Enables webhook handlers to route to appropriate processing logic.
2263
2036
  */
2264
- export type TaskType = 'create_media_buy' | 'update_media_buy' | 'sync_creatives' | 'activate_signal' | 'get_signals' | 'create_property_list' | 'update_property_list' | 'get_property_list' | 'list_property_lists' | 'delete_property_list' | 'sync_accounts' | 'get_creative_delivery' | 'sync_event_sources' | 'sync_audiences' | 'log_event';
2037
+ export type TaskType = 'create_media_buy' | 'update_media_buy' | 'sync_creatives' | 'activate_signal' | 'get_signals' | 'create_property_list' | 'update_property_list' | 'get_property_list' | 'list_property_lists' | 'delete_property_list' | 'sync_accounts' | 'get_creative_delivery' | 'sync_event_sources' | 'sync_audiences' | 'sync_catalogs' | 'log_event';
2265
2038
  /**
2266
2039
  * AdCP domain this task belongs to. Helps classify the operation type at a high level.
2267
2040
  */
@@ -2273,7 +2046,7 @@ export type TaskStatus = 'submitted' | 'working' | 'input-required' | 'completed
2273
2046
  /**
2274
2047
  * Task-specific payload matching the status. For completed/failed, contains the full task response. For working/input-required/submitted, contains status-specific data. This is the data layer that AdCP specs - same structure used in A2A status.message.parts[].data.
2275
2048
  */
2276
- export type AdCPAsyncResponseData = GetProductsResponse | GetProductsAsyncWorking | GetProductsAsyncInputRequired | GetProductsAsyncSubmitted | CreateMediaBuyResponse | CreateMediaBuyAsyncWorking | CreateMediaBuyAsyncInputRequired | CreateMediaBuyAsyncSubmitted | UpdateMediaBuyResponse | UpdateMediaBuyAsyncWorking | UpdateMediaBuyAsyncInputRequired | UpdateMediaBuyAsyncSubmitted | SyncCreativesResponse | SyncCreativesAsyncWorking | SyncCreativesAsyncInputRequired | SyncCreativesAsyncSubmitted;
2049
+ export type AdCPAsyncResponseData = GetProductsResponse | GetProductsAsyncWorking | GetProductsAsyncInputRequired | GetProductsAsyncSubmitted | CreateMediaBuyResponse | CreateMediaBuyAsyncWorking | CreateMediaBuyAsyncInputRequired | CreateMediaBuyAsyncSubmitted | UpdateMediaBuyResponse | UpdateMediaBuyAsyncWorking | UpdateMediaBuyAsyncInputRequired | UpdateMediaBuyAsyncSubmitted | SyncCreativesResponse | SyncCreativesAsyncWorking | SyncCreativesAsyncInputRequired | SyncCreativesAsyncSubmitted | SyncCatalogsResponse | SyncCatalogsAsyncWorking | SyncCatalogsAsyncInputRequired | SyncCatalogsAsyncSubmitted;
2277
2050
  /**
2278
2051
  * Selects properties from a publisher's adagents.json. Used for both product definitions and agent authorization. Supports three selection patterns: all properties, specific IDs, or by tags.
2279
2052
  */
@@ -2281,10 +2054,6 @@ export type CreateMediaBuyResponse = CreateMediaBuySuccess | CreateMediaBuyError
2281
2054
  /**
2282
2055
  * Budget pacing strategy
2283
2056
  */
2284
- 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';
2285
- /**
2286
- * Response for completed or failed update_media_buy
2287
- */
2288
2057
  export type UpdateMediaBuyResponse = UpdateMediaBuySuccess | UpdateMediaBuyError;
2289
2058
  /**
2290
2059
  * Response for completed or failed sync_creatives
@@ -2294,6 +2063,18 @@ export type SyncCreativesResponse = SyncCreativesSuccess | SyncCreativesError;
2294
2063
  * Action taken for this creative
2295
2064
  */
2296
2065
  export type CreativeAction = 'created' | 'updated' | 'unchanged' | 'failed' | 'deleted';
2066
+ /**
2067
+ * Response for completed or failed sync_catalogs
2068
+ */
2069
+ export type SyncCatalogsResponse = SyncCatalogsSuccess | SyncCatalogsError;
2070
+ /**
2071
+ * Action taken for this catalog
2072
+ */
2073
+ export type CatalogAction = 'created' | 'updated' | 'unchanged' | 'failed' | 'deleted';
2074
+ /**
2075
+ * Item review status
2076
+ */
2077
+ export type CatalogItemStatus = 'approved' | 'pending' | 'rejected' | 'warning';
2297
2078
  /**
2298
2079
  * Standard envelope for HTTP-based push notifications (MCP). This defines the wire format sent to the URL configured in `pushNotificationConfig`. NOTE: This envelope is NOT used in A2A integration, which uses native Task/TaskStatusUpdateEvent messages with the AdCP payload nested in `status.message.parts[].data`.
2299
2080
  */
@@ -2344,9 +2125,9 @@ export interface GetProductsResponse {
2344
2125
  */
2345
2126
  property_list_applied?: boolean;
2346
2127
  /**
2347
- * 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.
2128
+ * Whether the seller filtered results based on the provided catalog. True if the seller matched catalog items against its inventory. Absent or false if no catalog was provided or the seller does not support catalog matching.
2348
2129
  */
2349
- product_selectors_applied?: boolean;
2130
+ catalog_applied?: boolean;
2350
2131
  pagination?: PaginationResponse;
2351
2132
  /**
2352
2133
  * When true, this response contains simulated data from sandbox mode.
@@ -2408,7 +2189,7 @@ export interface Proposal {
2408
2189
  * Explanation of how this proposal aligns with the campaign brief
2409
2190
  */
2410
2191
  brief_alignment?: string;
2411
- forecast?: DeliveryForecast2;
2192
+ forecast?: DeliveryForecast;
2412
2193
  ext?: ExtensionObject;
2413
2194
  [k: string]: unknown | undefined;
2414
2195
  }
@@ -2446,79 +2227,13 @@ export interface ProductAllocation {
2446
2227
  * @minItems 1
2447
2228
  */
2448
2229
  daypart_targets?: [DaypartTarget, ...DaypartTarget[]];
2449
- forecast?: DeliveryForecast1;
2230
+ forecast?: DeliveryForecast;
2450
2231
  ext?: ExtensionObject;
2451
2232
  [k: string]: unknown | undefined;
2452
2233
  }
2453
2234
  /**
2454
2235
  * 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.
2455
2236
  */
2456
- export interface DeliveryForecast1 {
2457
- /**
2458
- * 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.
2459
- *
2460
- * @minItems 1
2461
- */
2462
- points: [ForecastPoint, ...ForecastPoint[]];
2463
- forecast_range_unit?: ForecastRangeUnit;
2464
- method: ForecastMethod;
2465
- /**
2466
- * ISO 4217 currency code for monetary values in this forecast (spend, budget)
2467
- */
2468
- currency: string;
2469
- demographic_system?: DemographicSystem1;
2470
- /**
2471
- * 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.
2472
- */
2473
- demographic?: string;
2474
- reach_unit?: ReachUnit;
2475
- /**
2476
- * When this forecast was computed
2477
- */
2478
- generated_at?: string;
2479
- /**
2480
- * When this forecast expires. After this time, the forecast should be refreshed. Forecast expiry does not affect proposal executability.
2481
- */
2482
- valid_until?: string;
2483
- ext?: ExtensionObject;
2484
- [k: string]: unknown | undefined;
2485
- }
2486
- /**
2487
- * 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.
2488
- */
2489
- export interface DeliveryForecast2 {
2490
- /**
2491
- * 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.
2492
- *
2493
- * @minItems 1
2494
- */
2495
- points: [ForecastPoint, ...ForecastPoint[]];
2496
- forecast_range_unit?: ForecastRangeUnit;
2497
- method: ForecastMethod;
2498
- /**
2499
- * ISO 4217 currency code for monetary values in this forecast (spend, budget)
2500
- */
2501
- currency: string;
2502
- demographic_system?: DemographicSystem1;
2503
- /**
2504
- * 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.
2505
- */
2506
- demographic?: string;
2507
- reach_unit?: ReachUnit;
2508
- /**
2509
- * When this forecast was computed
2510
- */
2511
- generated_at?: string;
2512
- /**
2513
- * When this forecast expires. After this time, the forecast should be refreshed. Forecast expiry does not affect proposal executability.
2514
- */
2515
- valid_until?: string;
2516
- ext?: ExtensionObject;
2517
- [k: string]: unknown | undefined;
2518
- }
2519
- /**
2520
- * Standard error structure for task-specific errors and warnings
2521
- */
2522
2237
  export interface Error {
2523
2238
  /**
2524
2239
  * Error code for programmatic handling
@@ -2639,6 +2354,10 @@ export interface CreateMediaBuySuccess {
2639
2354
  * Buyer's reference identifier for this media buy
2640
2355
  */
2641
2356
  buyer_ref: string;
2357
+ /**
2358
+ * Buyer's campaign reference label, echoed from the request
2359
+ */
2360
+ campaign_ref?: string;
2642
2361
  account?: Account;
2643
2362
  /**
2644
2363
  * ISO 8601 timestamp for creative upload deadline
@@ -2820,7 +2539,7 @@ export interface SyncCreativesSuccess {
2820
2539
  * Creative ID from the request
2821
2540
  */
2822
2541
  creative_id: string;
2823
- account?: Account1;
2542
+ account?: Account;
2824
2543
  action: CreativeAction;
2825
2544
  /**
2826
2545
  * Platform-specific ID assigned to the creative
@@ -2869,71 +2588,157 @@ export interface SyncCreativesSuccess {
2869
2588
  /**
2870
2589
  * Account that owns this creative
2871
2590
  */
2872
- export interface Account1 {
2873
- /**
2874
- * Unique identifier for this account
2875
- */
2876
- account_id: string;
2877
- /**
2878
- * Human-readable account name (e.g., 'Acme', 'Acme c/o Pinnacle')
2879
- */
2880
- name: string;
2591
+ export interface SyncCreativesError {
2881
2592
  /**
2882
- * The advertiser whose rates apply to this account
2593
+ * Operation-level errors that prevented processing any creatives (e.g., authentication failure, service unavailable, invalid request format)
2594
+ *
2595
+ * @minItems 1
2883
2596
  */
2884
- advertiser?: string;
2597
+ errors: [Error, ...Error[]];
2598
+ context?: ContextObject;
2599
+ ext?: ExtensionObject;
2600
+ [k: string]: unknown | undefined;
2601
+ }
2602
+ /**
2603
+ * Progress data for working sync_creatives
2604
+ */
2605
+ export interface SyncCreativesAsyncWorking {
2885
2606
  /**
2886
- * Optional intermediary who receives invoices on behalf of the advertiser (e.g., agency)
2607
+ * Completion percentage (0-100)
2887
2608
  */
2888
- billing_proxy?: string;
2609
+ percentage?: number;
2889
2610
  /**
2890
- * Account status. pending_approval: seller reviewing (credit, contracts). payment_required: credit limit reached or funds depleted. suspended: was active, now paused. closed: terminated.
2611
+ * Current step or phase of the operation
2891
2612
  */
2892
- status: 'active' | 'pending_approval' | 'payment_required' | 'suspended' | 'closed';
2613
+ current_step?: string;
2893
2614
  /**
2894
- * House domain where brand.json is hosted. Canonical identity anchor for the brand.
2615
+ * Total number of steps in the operation
2895
2616
  */
2896
- house?: string;
2617
+ total_steps?: number;
2897
2618
  /**
2898
- * Brand ID within the house portfolio (from brand.json)
2619
+ * Current step number
2899
2620
  */
2900
- brand_id?: string;
2621
+ step_number?: number;
2901
2622
  /**
2902
- * Domain of the entity operating this account
2623
+ * Number of creatives processed so far
2903
2624
  */
2904
- operator?: string;
2625
+ creatives_processed?: number;
2905
2626
  /**
2906
- * Who is invoiced on this account. brand: seller invoices the brand directly. operator: seller invoices the operator (agency). agent: agent consolidates billing.
2627
+ * Total number of creatives to process
2907
2628
  */
2908
- billing?: 'brand' | 'operator' | 'agent';
2629
+ creatives_total?: number;
2630
+ context?: ContextObject;
2631
+ ext?: ExtensionObject;
2632
+ [k: string]: unknown | undefined;
2633
+ }
2634
+ /**
2635
+ * Input requirements for sync_creatives needing user input
2636
+ */
2637
+ export interface SyncCreativesAsyncInputRequired {
2909
2638
  /**
2910
- * Identifier for the rate card applied to this account
2639
+ * Reason code indicating why buyer input is needed
2911
2640
  */
2912
- rate_card?: string;
2641
+ reason?: 'APPROVAL_REQUIRED' | 'ASSET_CONFIRMATION' | 'FORMAT_CLARIFICATION';
2642
+ context?: ContextObject;
2643
+ ext?: ExtensionObject;
2644
+ [k: string]: unknown | undefined;
2645
+ }
2646
+ /**
2647
+ * Acknowledgment for submitted sync_creatives
2648
+ */
2649
+ export interface SyncCreativesAsyncSubmitted {
2650
+ context?: ContextObject;
2651
+ ext?: ExtensionObject;
2652
+ [k: string]: unknown | undefined;
2653
+ }
2654
+ /**
2655
+ * Success response - sync operation processed catalogs (may include per-catalog failures)
2656
+ */
2657
+ export interface SyncCatalogsSuccess {
2913
2658
  /**
2914
- * Payment terms (e.g., 'net_30', 'prepay')
2659
+ * Whether this was a dry run (no actual changes made)
2915
2660
  */
2916
- payment_terms?: string;
2661
+ dry_run?: boolean;
2917
2662
  /**
2918
- * Maximum outstanding balance allowed
2663
+ * Results for each catalog processed. Items with action='failed' indicate per-catalog validation/processing failures, not operation-level failures.
2919
2664
  */
2920
- credit_limit?: {
2921
- amount: number;
2922
- currency: string;
2923
- };
2665
+ catalogs: {
2666
+ /**
2667
+ * Catalog ID from the request
2668
+ */
2669
+ catalog_id: string;
2670
+ action: CatalogAction;
2671
+ /**
2672
+ * Platform-specific ID assigned to the catalog
2673
+ */
2674
+ platform_id?: string;
2675
+ /**
2676
+ * Total number of items in the catalog after sync
2677
+ */
2678
+ item_count?: number;
2679
+ /**
2680
+ * Number of items approved by the platform. Populated when the platform performs item-level review.
2681
+ */
2682
+ items_approved?: number;
2683
+ /**
2684
+ * Number of items pending platform review. Common for product catalogs where items must pass content policy checks.
2685
+ */
2686
+ items_pending?: number;
2687
+ /**
2688
+ * Number of items rejected by the platform. Check item_issues for rejection reasons.
2689
+ */
2690
+ items_rejected?: number;
2691
+ /**
2692
+ * Per-item issues reported by the platform (rejections, warnings). Only present when the platform performs item-level review.
2693
+ */
2694
+ item_issues?: {
2695
+ /**
2696
+ * ID of the catalog item with an issue
2697
+ */
2698
+ item_id: string;
2699
+ status: CatalogItemStatus;
2700
+ /**
2701
+ * Reasons for rejection or warning
2702
+ */
2703
+ reasons?: string[];
2704
+ [k: string]: unknown | undefined;
2705
+ }[];
2706
+ /**
2707
+ * ISO 8601 timestamp of when the most recent sync was accepted by the platform
2708
+ */
2709
+ last_synced_at?: string;
2710
+ /**
2711
+ * ISO 8601 timestamp of when the platform will next fetch the feed URL. Only present for URL-based catalogs with update_frequency.
2712
+ */
2713
+ next_fetch_at?: string;
2714
+ /**
2715
+ * Field names that were modified (only present when action='updated')
2716
+ */
2717
+ changes?: string[];
2718
+ /**
2719
+ * Validation or processing errors (only present when action='failed')
2720
+ */
2721
+ errors?: string[];
2722
+ /**
2723
+ * Non-fatal warnings about this catalog
2724
+ */
2725
+ warnings?: string[];
2726
+ [k: string]: unknown | undefined;
2727
+ }[];
2924
2728
  /**
2925
- * When true, this is a sandbox account. All requests using this account_id are treated as sandbox — no real platform calls, no real spend.
2729
+ * When true, this response contains simulated data from sandbox mode.
2926
2730
  */
2927
2731
  sandbox?: boolean;
2732
+ context?: ContextObject;
2928
2733
  ext?: ExtensionObject;
2929
2734
  [k: string]: unknown | undefined;
2930
2735
  }
2931
2736
  /**
2932
- * Error response - operation failed completely, no creatives were processed
2737
+ * Error response - operation failed completely, no catalogs were processed
2933
2738
  */
2934
- export interface SyncCreativesError {
2739
+ export interface SyncCatalogsError {
2935
2740
  /**
2936
- * Operation-level errors that prevented processing any creatives (e.g., authentication failure, service unavailable, invalid request format)
2741
+ * Operation-level errors that prevented processing any catalogs (e.g., authentication failure, service unavailable, invalid request format)
2937
2742
  *
2938
2743
  * @minItems 1
2939
2744
  */
@@ -2943,15 +2748,15 @@ export interface SyncCreativesError {
2943
2748
  [k: string]: unknown | undefined;
2944
2749
  }
2945
2750
  /**
2946
- * Progress data for working sync_creatives
2751
+ * Progress data for working sync_catalogs
2947
2752
  */
2948
- export interface SyncCreativesAsyncWorking {
2753
+ export interface SyncCatalogsAsyncWorking {
2949
2754
  /**
2950
2755
  * Completion percentage (0-100)
2951
2756
  */
2952
2757
  percentage?: number;
2953
2758
  /**
2954
- * Current step or phase of the operation
2759
+ * Current step or phase of the operation (e.g., 'Fetching product feed', 'Validating items', 'Platform review')
2955
2760
  */
2956
2761
  current_step?: string;
2957
2762
  /**
@@ -2963,33 +2768,41 @@ export interface SyncCreativesAsyncWorking {
2963
2768
  */
2964
2769
  step_number?: number;
2965
2770
  /**
2966
- * Number of creatives processed so far
2771
+ * Number of catalogs processed so far
2967
2772
  */
2968
- creatives_processed?: number;
2773
+ catalogs_processed?: number;
2969
2774
  /**
2970
- * Total number of creatives to process
2775
+ * Total number of catalogs to process
2971
2776
  */
2972
- creatives_total?: number;
2777
+ catalogs_total?: number;
2778
+ /**
2779
+ * Total number of catalog items processed across all catalogs
2780
+ */
2781
+ items_processed?: number;
2782
+ /**
2783
+ * Total number of catalog items to process across all catalogs
2784
+ */
2785
+ items_total?: number;
2973
2786
  context?: ContextObject;
2974
2787
  ext?: ExtensionObject;
2975
2788
  [k: string]: unknown | undefined;
2976
2789
  }
2977
2790
  /**
2978
- * Input requirements for sync_creatives needing user input
2791
+ * Input requirements for sync_catalogs needing buyer input
2979
2792
  */
2980
- export interface SyncCreativesAsyncInputRequired {
2793
+ export interface SyncCatalogsAsyncInputRequired {
2981
2794
  /**
2982
- * Reason code indicating why buyer input is needed
2795
+ * Reason code indicating why buyer input is needed. APPROVAL_REQUIRED: platform requires explicit approval before activating the catalog. FEED_VALIDATION: feed URL returned unexpected format or schema errors. ITEM_REVIEW: platform flagged items for manual review. FEED_ACCESS: platform cannot access the feed URL (authentication, CORS, etc.).
2983
2796
  */
2984
- reason?: 'APPROVAL_REQUIRED' | 'ASSET_CONFIRMATION' | 'FORMAT_CLARIFICATION';
2797
+ reason?: 'APPROVAL_REQUIRED' | 'FEED_VALIDATION' | 'ITEM_REVIEW' | 'FEED_ACCESS';
2985
2798
  context?: ContextObject;
2986
2799
  ext?: ExtensionObject;
2987
2800
  [k: string]: unknown | undefined;
2988
2801
  }
2989
2802
  /**
2990
- * Acknowledgment for submitted sync_creatives
2803
+ * Acknowledgment for submitted sync_catalogs
2991
2804
  */
2992
- export interface SyncCreativesAsyncSubmitted {
2805
+ export interface SyncCatalogsAsyncSubmitted {
2993
2806
  context?: ContextObject;
2994
2807
  ext?: ExtensionObject;
2995
2808
  [k: string]: unknown | undefined;