@adcp/client 3.5.2 → 3.7.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 (35) hide show
  1. package/bin/adcp.js +309 -33
  2. package/dist/lib/core/AsyncHandler.js.map +1 -1
  3. package/dist/lib/index.d.ts +1 -0
  4. package/dist/lib/index.d.ts.map +1 -1
  5. package/dist/lib/index.js +14 -2
  6. package/dist/lib/index.js.map +1 -1
  7. package/dist/lib/testing/client.d.ts.map +1 -1
  8. package/dist/lib/testing/client.js +23 -9
  9. package/dist/lib/testing/client.js.map +1 -1
  10. package/dist/lib/testing/formatter.d.ts.map +1 -1
  11. package/dist/lib/testing/formatter.js +14 -1
  12. package/dist/lib/testing/formatter.js.map +1 -1
  13. package/dist/lib/testing/types.d.ts +1 -0
  14. package/dist/lib/testing/types.d.ts.map +1 -1
  15. package/dist/lib/types/core.generated.d.ts +68 -7
  16. package/dist/lib/types/core.generated.d.ts.map +1 -1
  17. package/dist/lib/types/core.generated.js +2 -2
  18. package/dist/lib/types/schemas.generated.d.ts +865 -2445
  19. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  20. package/dist/lib/types/schemas.generated.js +234 -210
  21. package/dist/lib/types/schemas.generated.js.map +1 -1
  22. package/dist/lib/types/tools.generated.d.ts +165 -17
  23. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  24. package/dist/lib/types/tools.generated.js.map +1 -1
  25. package/dist/lib/utils/format-assets.d.ts +112 -0
  26. package/dist/lib/utils/format-assets.d.ts.map +1 -0
  27. package/dist/lib/utils/format-assets.js +145 -0
  28. package/dist/lib/utils/format-assets.js.map +1 -0
  29. package/dist/lib/utils/index.d.ts +1 -0
  30. package/dist/lib/utils/index.d.ts.map +1 -1
  31. package/dist/lib/utils/index.js +12 -1
  32. package/dist/lib/utils/index.js.map +1 -1
  33. package/dist/lib/version.d.ts +5 -5
  34. package/dist/lib/version.js +5 -5
  35. package/package.json +2 -2
@@ -165,6 +165,7 @@ export interface BrandManifest {
165
165
  metadata?: {
166
166
  [k: string]: unknown;
167
167
  };
168
+ [k: string]: unknown;
168
169
  }[];
169
170
  /**
170
171
  * Product catalog information for e-commerce advertisers. Enables SKU-level creative generation and product selection.
@@ -190,6 +191,7 @@ export interface BrandManifest {
190
191
  * How frequently the product catalog is updated
191
192
  */
192
193
  update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly';
194
+ [k: string]: unknown;
193
195
  };
194
196
  /**
195
197
  * Legal disclaimers or required text that must appear in creatives
@@ -246,6 +248,7 @@ export interface BrandManifest {
246
248
  */
247
249
  version?: string;
248
250
  };
251
+ [k: string]: unknown;
249
252
  }
250
253
  /**
251
254
  * Structured filters for product discovery
@@ -294,6 +297,7 @@ export interface ProductFilters {
294
297
  * Filter by advertising channels (e.g., ['display', 'video', 'dooh'])
295
298
  */
296
299
  channels?: AdvertisingChannels[];
300
+ [k: string]: unknown;
297
301
  }
298
302
  /**
299
303
  * 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.
@@ -319,6 +323,7 @@ export interface FormatID {
319
323
  * Duration in milliseconds for time-based formats (video, audio). When specified, creates a parameterized format ID. Omit to reference a template format without parameters.
320
324
  */
321
325
  duration_ms?: number;
326
+ [k: string]: unknown;
322
327
  }
323
328
  /**
324
329
  * 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.
@@ -344,6 +349,7 @@ export type PublisherPropertySelector = {
344
349
  * Discriminator indicating all properties from this publisher are included
345
350
  */
346
351
  selection_type: 'all';
352
+ [k: string]: unknown;
347
353
  } | {
348
354
  /**
349
355
  * Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')
@@ -359,6 +365,7 @@ export type PublisherPropertySelector = {
359
365
  * @minItems 1
360
366
  */
361
367
  property_ids: [PropertyID, ...PropertyID[]];
368
+ [k: string]: unknown;
362
369
  } | {
363
370
  /**
364
371
  * Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')
@@ -374,6 +381,7 @@ export type PublisherPropertySelector = {
374
381
  * @minItems 1
375
382
  */
376
383
  property_tags: [PropertyTag, ...PropertyTag[]];
384
+ [k: string]: unknown;
377
385
  };
378
386
  /**
379
387
  * Identifier for a publisher property. Must be lowercase alphanumeric with underscores only.
@@ -500,6 +508,7 @@ export interface Product {
500
508
  manifest: {
501
509
  [k: string]: unknown;
502
510
  };
511
+ [k: string]: unknown;
503
512
  };
504
513
  /**
505
514
  * Optional detailed card with carousel and full specifications. Provides rich product presentation similar to media kit pages.
@@ -512,8 +521,10 @@ export interface Product {
512
521
  manifest: {
513
522
  [k: string]: unknown;
514
523
  };
524
+ [k: string]: unknown;
515
525
  };
516
526
  ext?: ExtensionObject;
527
+ [k: string]: unknown;
517
528
  }
518
529
  /**
519
530
  * 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.
@@ -537,6 +548,7 @@ export interface Placement {
537
548
  * @minItems 1
538
549
  */
539
550
  format_ids?: [FormatID, ...FormatID[]];
551
+ [k: string]: unknown;
540
552
  }
541
553
  /**
542
554
  * Cost Per Mille (cost per 1,000 impressions) with guaranteed fixed rate - common for direct/guaranteed deals
@@ -566,6 +578,7 @@ export interface CPMFixedRatePricingOption {
566
578
  * Minimum spend requirement per package using this pricing option, in the specified currency
567
579
  */
568
580
  min_spend_per_package?: number;
581
+ [k: string]: unknown;
569
582
  }
570
583
  /**
571
584
  * Cost Per Mille (cost per 1,000 impressions) with auction-based pricing - common for programmatic/non-guaranteed inventory
@@ -616,6 +629,7 @@ export interface CPMAuctionPricingOption {
616
629
  * Minimum spend requirement per package using this pricing option, in the specified currency
617
630
  */
618
631
  min_spend_per_package?: number;
632
+ [k: string]: unknown;
619
633
  }
620
634
  /**
621
635
  * Viewable Cost Per Mille (cost per 1,000 viewable impressions) with guaranteed fixed rate - impressions meeting MRC viewability standard (50% pixels in-view for 1 second for display, 2 seconds for video)
@@ -645,6 +659,7 @@ export interface VCPMFixedRatePricingOption {
645
659
  * Minimum spend requirement per package using this pricing option, in the specified currency
646
660
  */
647
661
  min_spend_per_package?: number;
662
+ [k: string]: unknown;
648
663
  }
649
664
  /**
650
665
  * Viewable Cost Per Mille (cost per 1,000 viewable impressions) with auction-based pricing - impressions meeting MRC viewability standard (50% pixels in-view for 1 second for display, 2 seconds for video)
@@ -695,6 +710,7 @@ export interface VCPMAuctionPricingOption {
695
710
  * Minimum spend requirement per package using this pricing option, in the specified currency
696
711
  */
697
712
  min_spend_per_package?: number;
713
+ [k: string]: unknown;
698
714
  }
699
715
  /**
700
716
  * Cost Per Click fixed-rate pricing for performance-driven advertising campaigns
@@ -724,6 +740,7 @@ export interface CPCPricingOption {
724
740
  * Minimum spend requirement per package using this pricing option, in the specified currency
725
741
  */
726
742
  min_spend_per_package?: number;
743
+ [k: string]: unknown;
727
744
  }
728
745
  /**
729
746
  * Cost Per Completed View (100% video/audio completion) fixed-rate pricing
@@ -753,6 +770,7 @@ export interface CPCVPricingOption {
753
770
  * Minimum spend requirement per package using this pricing option, in the specified currency
754
771
  */
755
772
  min_spend_per_package?: number;
773
+ [k: string]: unknown;
756
774
  }
757
775
  /**
758
776
  * Cost Per View (at publisher-defined threshold) fixed-rate pricing for video/audio
@@ -787,12 +805,15 @@ export interface CPVPricingOption {
787
805
  * Seconds of viewing required (e.g., 30 for YouTube-style '30 seconds = view')
788
806
  */
789
807
  duration_seconds: number;
808
+ [k: string]: unknown;
790
809
  };
810
+ [k: string]: unknown;
791
811
  };
792
812
  /**
793
813
  * Minimum spend requirement per package using this pricing option, in the specified currency
794
814
  */
795
815
  min_spend_per_package?: number;
816
+ [k: string]: unknown;
796
817
  }
797
818
  /**
798
819
  * Cost Per Point (Gross Rating Point) fixed-rate pricing for TV and audio campaigns requiring demographic measurement
@@ -830,11 +851,13 @@ export interface CPPPricingOption {
830
851
  * Minimum GRPs/TRPs required for this pricing option
831
852
  */
832
853
  min_points?: number;
854
+ [k: string]: unknown;
833
855
  };
834
856
  /**
835
857
  * Minimum spend requirement per package using this pricing option, in the specified currency
836
858
  */
837
859
  min_spend_per_package?: number;
860
+ [k: string]: unknown;
838
861
  }
839
862
  /**
840
863
  * Flat rate pricing for DOOH, sponsorships, and time-based campaigns - fixed cost regardless of delivery volume
@@ -892,11 +915,13 @@ export interface FlatRatePricingOption {
892
915
  * Specific daypart for time-based pricing (e.g., 'morning_commute', 'evening_prime', 'overnight')
893
916
  */
894
917
  daypart?: string;
918
+ [k: string]: unknown;
895
919
  };
896
920
  /**
897
921
  * Minimum spend requirement per package using this pricing option, in the specified currency
898
922
  */
899
923
  min_spend_per_package?: number;
924
+ [k: string]: unknown;
900
925
  }
901
926
  /**
902
927
  * Measurement capabilities included with a product
@@ -918,6 +943,7 @@ export interface Measurement {
918
943
  * Reporting frequency and format
919
944
  */
920
945
  reporting: string;
946
+ [k: string]: unknown;
921
947
  }
922
948
  /**
923
949
  * Reporting capabilities available for a product
@@ -945,6 +971,7 @@ export interface ReportingCapabilities {
945
971
  * Metrics available in reporting. Impressions and spend are always implicitly included.
946
972
  */
947
973
  available_metrics: AvailableMetric[];
974
+ [k: string]: unknown;
948
975
  }
949
976
  /**
950
977
  * Creative requirements and restrictions for a product
@@ -956,6 +983,7 @@ export interface CreativePolicy {
956
983
  * Whether creative templates are provided
957
984
  */
958
985
  templates_available: boolean;
986
+ [k: string]: unknown;
959
987
  }
960
988
  /**
961
989
  * 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.
@@ -981,6 +1009,7 @@ export interface FormatID1 {
981
1009
  * Duration in milliseconds for time-based formats (video, audio). When specified, creates a parameterized format ID. Omit to reference a template format without parameters.
982
1010
  */
983
1011
  duration_ms?: number;
1012
+ [k: string]: unknown;
984
1013
  }
985
1014
  /**
986
1015
  * 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.
@@ -1006,6 +1035,7 @@ export interface FormatID2 {
1006
1035
  * Duration in milliseconds for time-based formats (video, audio). When specified, creates a parameterized format ID. Omit to reference a template format without parameters.
1007
1036
  */
1008
1037
  duration_ms?: number;
1038
+ [k: string]: unknown;
1009
1039
  }
1010
1040
  /**
1011
1041
  * 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.
@@ -1037,6 +1067,7 @@ export interface Error {
1037
1067
  details?: {
1038
1068
  [k: string]: unknown;
1039
1069
  };
1070
+ [k: string]: unknown;
1040
1071
  }
1041
1072
  /**
1042
1073
  * 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.
@@ -1092,6 +1123,14 @@ export type FormatIDParameter = 'dimensions' | 'duration';
1092
1123
  * Type of asset
1093
1124
  */
1094
1125
  export type AssetContentType1 = 'image' | 'video' | 'audio' | 'text' | 'markdown' | 'html' | 'css' | 'javascript' | 'vast' | 'daast' | 'promoted_offerings' | 'url' | 'webhook';
1126
+ /**
1127
+ * Type of asset
1128
+ */
1129
+ export type AssetContentType2 = 'image' | 'video' | 'audio' | 'text' | 'markdown' | 'html' | 'css' | 'javascript' | 'vast' | 'daast' | 'promoted_offerings' | 'url' | 'webhook';
1130
+ /**
1131
+ * Type of asset
1132
+ */
1133
+ export type AssetContentType3 = 'image' | 'video' | 'audio' | 'text' | 'markdown' | 'html' | 'css' | 'javascript' | 'vast' | 'daast' | 'promoted_offerings' | 'url' | 'webhook';
1095
1134
  /**
1096
1135
  * Capabilities supported by creative agents for format handling
1097
1136
  */
@@ -1172,7 +1211,8 @@ export interface Format {
1172
1211
  })[]
1173
1212
  ];
1174
1213
  /**
1175
- * Array of required assets or asset groups for this format. Each asset is identified by its asset_id, which must be used as the key in creative manifests. Can contain individual assets or repeatable asset sequences (e.g., carousel products, slideshow frames).
1214
+ * @deprecated
1215
+ * DEPRECATED: Use 'assets' instead. Array of required assets or asset groups for this format. Each asset is identified by its asset_id, which must be used as the key in creative manifests. Can contain individual assets or repeatable asset sequences (e.g., carousel products, slideshow frames). This field is maintained for backward compatibility; new implementations should use 'assets' with the 'required' boolean on each asset.
1176
1216
  */
1177
1217
  assets_required?: ({
1178
1218
  /**
@@ -1240,6 +1280,79 @@ export interface Format {
1240
1280
  };
1241
1281
  }[];
1242
1282
  })[];
1283
+ /**
1284
+ * Array of all assets supported for this format. Each asset is identified by its asset_id, which must be used as the key in creative manifests. Use the 'required' boolean on each asset to indicate whether it's mandatory. This field replaces the deprecated 'assets_required' and enables full asset discovery for buyers and AI agents.
1285
+ */
1286
+ assets?: ({
1287
+ /**
1288
+ * Discriminator indicating this is an individual asset
1289
+ */
1290
+ item_type: 'individual';
1291
+ /**
1292
+ * Unique identifier for this asset. Creative manifests MUST use this exact value as the key in the assets object.
1293
+ */
1294
+ asset_id: string;
1295
+ asset_type: AssetContentType2;
1296
+ /**
1297
+ * Optional descriptive label for this asset's purpose (e.g., 'hero_image', 'logo', 'third_party_tracking'). Not used for referencing assets in manifests—use asset_id instead. This field is for human-readable documentation and UI display only.
1298
+ */
1299
+ asset_role?: string;
1300
+ /**
1301
+ * Whether this asset is required (true) or optional (false). Required assets must be provided for a valid creative. Optional assets enhance the creative but are not mandatory.
1302
+ */
1303
+ required: boolean;
1304
+ /**
1305
+ * Technical requirements for this asset (dimensions, file size, duration, etc.). For template formats, use parameters_from_format_id: true to indicate asset parameters must match the format_id parameters (width/height/unit and/or duration_ms).
1306
+ */
1307
+ requirements?: {
1308
+ [k: string]: unknown;
1309
+ };
1310
+ } | {
1311
+ /**
1312
+ * Discriminator indicating this is a repeatable asset group
1313
+ */
1314
+ item_type: 'repeatable_group';
1315
+ /**
1316
+ * Identifier for this asset group (e.g., 'product', 'slide', 'card')
1317
+ */
1318
+ asset_group_id: string;
1319
+ /**
1320
+ * Whether this asset group is required. If true, at least min_count repetitions must be provided.
1321
+ */
1322
+ required: boolean;
1323
+ /**
1324
+ * Minimum number of repetitions required (if group is required) or allowed (if optional)
1325
+ */
1326
+ min_count: number;
1327
+ /**
1328
+ * Maximum number of repetitions allowed
1329
+ */
1330
+ max_count: number;
1331
+ /**
1332
+ * Assets within each repetition of this group
1333
+ */
1334
+ assets: {
1335
+ /**
1336
+ * Identifier for this asset within the group
1337
+ */
1338
+ asset_id: string;
1339
+ asset_type: AssetContentType3;
1340
+ /**
1341
+ * Optional descriptive label for this asset's purpose. Not used for referencing assets in manifests—use asset_id instead. This field is for human-readable documentation and UI display only.
1342
+ */
1343
+ asset_role?: string;
1344
+ /**
1345
+ * Whether this asset is required within each repetition of the group
1346
+ */
1347
+ required: boolean;
1348
+ /**
1349
+ * Technical requirements for this asset. For template formats, use parameters_from_format_id: true to indicate asset parameters must match the format_id parameters (width/height/unit and/or duration_ms).
1350
+ */
1351
+ requirements?: {
1352
+ [k: string]: unknown;
1353
+ };
1354
+ }[];
1355
+ })[];
1243
1356
  /**
1244
1357
  * Delivery method specifications (e.g., hosted, VAST, third-party tags)
1245
1358
  */
@@ -1265,6 +1378,7 @@ export interface Format {
1265
1378
  manifest: {
1266
1379
  [k: string]: unknown;
1267
1380
  };
1381
+ [k: string]: unknown;
1268
1382
  };
1269
1383
  /**
1270
1384
  * Optional detailed card with carousel and full specifications. Provides rich format documentation similar to ad spec pages.
@@ -1277,7 +1391,9 @@ export interface Format {
1277
1391
  manifest: {
1278
1392
  [k: string]: unknown;
1279
1393
  };
1394
+ [k: string]: unknown;
1280
1395
  };
1396
+ [k: string]: unknown;
1281
1397
  }
1282
1398
  /**
1283
1399
  * Structured format identifier with agent URL and format name
@@ -1303,6 +1419,7 @@ export interface FormatID3 {
1303
1419
  * Duration in milliseconds for time-based formats (video, audio). When specified, creates a parameterized format ID. Omit to reference a template format without parameters.
1304
1420
  */
1305
1421
  duration_ms?: number;
1422
+ [k: string]: unknown;
1306
1423
  }
1307
1424
  /**
1308
1425
  * Standard error structure for task-specific errors and warnings
@@ -1340,6 +1457,7 @@ export type VASTAsset = {
1340
1457
  * Tracking events supported by this VAST tag
1341
1458
  */
1342
1459
  tracking_events?: VASTTrackingEvent[];
1460
+ [k: string]: unknown;
1343
1461
  } | {
1344
1462
  /**
1345
1463
  * Discriminator indicating VAST is delivered as inline XML content
@@ -1362,6 +1480,7 @@ export type VASTAsset = {
1362
1480
  * Tracking events supported by this VAST tag
1363
1481
  */
1364
1482
  tracking_events?: VASTTrackingEvent[];
1483
+ [k: string]: unknown;
1365
1484
  };
1366
1485
  /**
1367
1486
  * VAST specification version
@@ -1400,6 +1519,7 @@ export type DAASTAsset = {
1400
1519
  * Whether companion display ads are included
1401
1520
  */
1402
1521
  companion_ads?: boolean;
1522
+ [k: string]: unknown;
1403
1523
  } | {
1404
1524
  /**
1405
1525
  * Discriminator indicating DAAST is delivered as inline XML content
@@ -1422,6 +1542,7 @@ export type DAASTAsset = {
1422
1542
  * Whether companion display ads are included
1423
1543
  */
1424
1544
  companion_ads?: boolean;
1545
+ [k: string]: unknown;
1425
1546
  };
1426
1547
  /**
1427
1548
  * DAAST specification version
@@ -1555,6 +1676,7 @@ export interface PackageRequest {
1555
1676
  */
1556
1677
  creatives?: CreativeAsset[];
1557
1678
  ext?: ExtensionObject;
1679
+ [k: string]: unknown;
1558
1680
  }
1559
1681
  /**
1560
1682
  * 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.
@@ -1585,6 +1707,7 @@ export interface TargetingOverlay {
1585
1707
  */
1586
1708
  axe_exclude_segment?: string;
1587
1709
  frequency_cap?: FrequencyCap;
1710
+ [k: string]: unknown;
1588
1711
  }
1589
1712
  /**
1590
1713
  * Frequency capping settings for package-level application
@@ -1594,6 +1717,7 @@ export interface FrequencyCap {
1594
1717
  * Minutes to suppress after impression
1595
1718
  */
1596
1719
  suppress_minutes: number;
1720
+ [k: string]: unknown;
1597
1721
  }
1598
1722
  /**
1599
1723
  * Creative asset for upload to library - supports static assets, generative formats, and third-party snippets
@@ -1612,11 +1736,7 @@ export interface CreativeAsset {
1612
1736
  * Assets required by the format, keyed by asset_role
1613
1737
  */
1614
1738
  assets: {
1615
- /**
1616
- * This interface was referenced by `undefined`'s JSON-Schema definition
1617
- * via the `patternProperty` "^[a-zA-Z0-9_-]+$".
1618
- */
1619
- [k: string]: ImageAsset | VideoAsset | AudioAsset | TextAsset | HTMLAsset | CSSAsset | JavaScriptAsset | VASTAsset | DAASTAsset | PromotedOfferings | URLAsset;
1739
+ [k: string]: unknown;
1620
1740
  };
1621
1741
  /**
1622
1742
  * Preview contexts for generative formats - defines what scenarios to generate previews for
@@ -1636,6 +1756,7 @@ export interface CreativeAsset {
1636
1756
  * Natural language description of the context for AI-generated content
1637
1757
  */
1638
1758
  context_description?: string;
1759
+ [k: string]: unknown;
1639
1760
  }[];
1640
1761
  /**
1641
1762
  * User-defined tags for organization and searchability
@@ -1655,6 +1776,7 @@ export interface CreativeAsset {
1655
1776
  * @minItems 1
1656
1777
  */
1657
1778
  placement_ids?: [string, ...string[]];
1779
+ [k: string]: unknown;
1658
1780
  }
1659
1781
  /**
1660
1782
  * 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.
@@ -1680,6 +1802,7 @@ export interface ImageAsset {
1680
1802
  * Alternative text for accessibility
1681
1803
  */
1682
1804
  alt_text?: string;
1805
+ [k: string]: unknown;
1683
1806
  }
1684
1807
  /**
1685
1808
  * Video asset with URL and specifications
@@ -1709,6 +1832,7 @@ export interface VideoAsset {
1709
1832
  * Video bitrate in kilobits per second
1710
1833
  */
1711
1834
  bitrate_kbps?: number;
1835
+ [k: string]: unknown;
1712
1836
  }
1713
1837
  /**
1714
1838
  * Audio asset with URL and specifications
@@ -1730,6 +1854,7 @@ export interface AudioAsset {
1730
1854
  * Audio bitrate in kilobits per second
1731
1855
  */
1732
1856
  bitrate_kbps?: number;
1857
+ [k: string]: unknown;
1733
1858
  }
1734
1859
  /**
1735
1860
  * Text content asset
@@ -1743,6 +1868,7 @@ export interface TextAsset {
1743
1868
  * Language code (e.g., 'en', 'es', 'fr')
1744
1869
  */
1745
1870
  language?: string;
1871
+ [k: string]: unknown;
1746
1872
  }
1747
1873
  /**
1748
1874
  * HTML content asset
@@ -1756,6 +1882,7 @@ export interface HTMLAsset {
1756
1882
  * HTML version (e.g., 'HTML5')
1757
1883
  */
1758
1884
  version?: string;
1885
+ [k: string]: unknown;
1759
1886
  }
1760
1887
  /**
1761
1888
  * CSS stylesheet asset
@@ -1769,6 +1896,7 @@ export interface CSSAsset {
1769
1896
  * CSS media query context (e.g., 'screen', 'print')
1770
1897
  */
1771
1898
  media?: string;
1899
+ [k: string]: unknown;
1772
1900
  }
1773
1901
  /**
1774
1902
  * JavaScript code asset
@@ -1779,6 +1907,7 @@ export interface JavaScriptAsset {
1779
1907
  */
1780
1908
  content: string;
1781
1909
  module_type?: JavaScriptModuleType;
1910
+ [k: string]: unknown;
1782
1911
  }
1783
1912
  /**
1784
1913
  * Complete offering specification combining brand manifest, product selectors, and asset filters. Provides all context needed for creative generation about what is being promoted.
@@ -1804,6 +1933,7 @@ export interface PromotedOfferings {
1804
1933
  assets?: {
1805
1934
  [k: string]: unknown;
1806
1935
  }[];
1936
+ [k: string]: unknown;
1807
1937
  }[];
1808
1938
  /**
1809
1939
  * Selectors to choose specific assets from the brand manifest
@@ -1821,7 +1951,9 @@ export interface PromotedOfferings {
1821
1951
  * Exclude assets with these tags
1822
1952
  */
1823
1953
  exclude_tags?: string[];
1954
+ [k: string]: unknown;
1824
1955
  };
1956
+ [k: string]: unknown;
1825
1957
  }
1826
1958
  /**
1827
1959
  * Inline brand manifest object
@@ -1843,6 +1975,7 @@ export interface PromotedProducts {
1843
1975
  * Natural language query to select products from the brand manifest (e.g., 'all Kraft Heinz pasta sauces', 'organic products under $20')
1844
1976
  */
1845
1977
  manifest_query?: string;
1978
+ [k: string]: unknown;
1846
1979
  }
1847
1980
  /**
1848
1981
  * URL reference asset
@@ -1857,6 +1990,7 @@ export interface URLAsset {
1857
1990
  * Description of what this URL points to
1858
1991
  */
1859
1992
  description?: string;
1993
+ [k: string]: unknown;
1860
1994
  }
1861
1995
  /**
1862
1996
  * 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.
@@ -1935,6 +2069,7 @@ export interface Package {
1935
2069
  */
1936
2070
  paused?: boolean;
1937
2071
  ext?: ExtensionObject;
2072
+ [k: string]: unknown;
1938
2073
  }
1939
2074
  /**
1940
2075
  * Optional geographic refinements for media buys. Most targeting should be expressed in the brief and handled by the publisher. These fields are primarily for geographic restrictions (RCT testing, regulatory compliance).
@@ -1954,6 +2089,7 @@ export interface CreativeAssignment {
1954
2089
  * @minItems 1
1955
2090
  */
1956
2091
  placement_ids?: [string, ...string[]];
2092
+ [k: string]: unknown;
1957
2093
  }
1958
2094
  /**
1959
2095
  * 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.
@@ -2264,6 +2400,7 @@ export interface CreativeFilters {
2264
2400
  * Filter creatives that have performance data when true
2265
2401
  */
2266
2402
  has_performance_data?: boolean;
2403
+ [k: string]: unknown;
2267
2404
  }
2268
2405
  /**
2269
2406
  * 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.
@@ -2288,6 +2425,7 @@ export type SubAsset = {
2288
2425
  * URL for media assets (images, videos, etc.)
2289
2426
  */
2290
2427
  content_uri: string;
2428
+ [k: string]: unknown;
2291
2429
  } | {
2292
2430
  /**
2293
2431
  * Discriminator indicating this is a text asset with content
@@ -2305,6 +2443,7 @@ export type SubAsset = {
2305
2443
  * Text content for text-based assets like headlines, body text, CTA text, etc.
2306
2444
  */
2307
2445
  content: string | string[];
2446
+ [k: string]: unknown;
2308
2447
  };
2309
2448
  /**
2310
2449
  * Response from creative library query with filtered results, metadata, and optional enriched data
@@ -2902,7 +3041,9 @@ export interface DeliveryMetrics {
2902
3041
  * Number of screens used at this venue
2903
3042
  */
2904
3043
  screens_used?: number;
3044
+ [k: string]: unknown;
2905
3045
  }[];
3046
+ [k: string]: unknown;
2906
3047
  };
2907
3048
  [k: string]: unknown;
2908
3049
  }
@@ -3084,13 +3225,10 @@ export interface CreativeManifest {
3084
3225
  * 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.
3085
3226
  */
3086
3227
  assets: {
3087
- /**
3088
- * This interface was referenced by `undefined`'s JSON-Schema definition
3089
- * via the `patternProperty` "^[a-z0-9_]+$".
3090
- */
3091
- [k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset | PromotedOfferings;
3228
+ [k: string]: unknown;
3092
3229
  };
3093
3230
  ext?: ExtensionObject;
3231
+ [k: string]: unknown;
3094
3232
  }
3095
3233
  /**
3096
3234
  * 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'}).
@@ -3128,6 +3266,7 @@ export interface WebhookAsset {
3128
3266
  */
3129
3267
  api_key_header?: string;
3130
3268
  };
3269
+ [k: string]: unknown;
3131
3270
  }
3132
3271
  /**
3133
3272
  * CSS stylesheet asset
@@ -3177,7 +3316,7 @@ export type PreviewCreativeRequest = {
3177
3316
  */
3178
3317
  name: string;
3179
3318
  /**
3180
- * Macro values to use for this preview. Supports all universal macros from the format's supported_macros list. See docs/media-buy/creatives/universal-macros.md for available macros.
3319
+ * Macro values to use for this preview. Supports all universal macros from the format's supported_macros list. See docs/creative/universal-macros.md for available macros.
3181
3320
  */
3182
3321
  macros?: {
3183
3322
  [k: string]: string;
@@ -3263,13 +3402,10 @@ export interface CreativeManifest1 {
3263
3402
  * 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.
3264
3403
  */
3265
3404
  assets: {
3266
- /**
3267
- * This interface was referenced by `undefined`'s JSON-Schema definition
3268
- * via the `patternProperty` "^[a-z0-9_]+$".
3269
- */
3270
- [k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset | PromotedOfferings;
3405
+ [k: string]: unknown;
3271
3406
  };
3272
3407
  ext?: ExtensionObject;
3408
+ [k: string]: unknown;
3273
3409
  }
3274
3410
  /**
3275
3411
  * Response containing preview links for one or more creatives. Format matches the request: single preview response for single requests, batch results for batch requests.
@@ -3323,6 +3459,7 @@ export type PreviewRender = {
3323
3459
  */
3324
3460
  csp_policy?: string;
3325
3461
  };
3462
+ [k: string]: unknown;
3326
3463
  } | {
3327
3464
  /**
3328
3465
  * Unique identifier for this rendered piece within the variant
@@ -3368,6 +3505,7 @@ export type PreviewRender = {
3368
3505
  */
3369
3506
  csp_policy?: string;
3370
3507
  };
3508
+ [k: string]: unknown;
3371
3509
  } | {
3372
3510
  /**
3373
3511
  * Unique identifier for this rendered piece within the variant
@@ -3417,6 +3555,7 @@ export type PreviewRender = {
3417
3555
  */
3418
3556
  csp_policy?: string;
3419
3557
  };
3558
+ [k: string]: unknown;
3420
3559
  };
3421
3560
  /**
3422
3561
  * Single preview response - each preview URL returns an HTML page that can be embedded in an iframe
@@ -3506,6 +3645,7 @@ export type Destination = {
3506
3645
  * Optional account identifier on the platform
3507
3646
  */
3508
3647
  account?: string;
3648
+ [k: string]: unknown;
3509
3649
  } | {
3510
3650
  /**
3511
3651
  * Discriminator indicating this is an agent URL-based deployment
@@ -3519,6 +3659,7 @@ export type Destination = {
3519
3659
  * Optional account identifier on the agent
3520
3660
  */
3521
3661
  account?: string;
3662
+ [k: string]: unknown;
3522
3663
  };
3523
3664
  /**
3524
3665
  * Types of signal catalogs available for audience targeting
@@ -3573,6 +3714,7 @@ export interface SignalFilters {
3573
3714
  * Minimum coverage requirement
3574
3715
  */
3575
3716
  min_coverage_percentage?: number;
3717
+ [k: string]: unknown;
3576
3718
  }
3577
3719
  /**
3578
3720
  * 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.
@@ -3606,6 +3748,7 @@ export type Deployment = {
3606
3748
  * Timestamp when activation completed (if is_live=true)
3607
3749
  */
3608
3750
  deployed_at?: string;
3751
+ [k: string]: unknown;
3609
3752
  } | {
3610
3753
  /**
3611
3754
  * Discriminator indicating this is an agent URL-based deployment
@@ -3632,6 +3775,7 @@ export type Deployment = {
3632
3775
  * Timestamp when activation completed (if is_live=true)
3633
3776
  */
3634
3777
  deployed_at?: string;
3778
+ [k: string]: unknown;
3635
3779
  };
3636
3780
  /**
3637
3781
  * The key to use for targeting. Only present if is_live=true AND requester has access to this deployment.
@@ -3645,6 +3789,7 @@ export type ActivationKey = {
3645
3789
  * The platform-specific segment identifier to use in campaign targeting
3646
3790
  */
3647
3791
  segment_id: string;
3792
+ [k: string]: unknown;
3648
3793
  } | {
3649
3794
  /**
3650
3795
  * Key-value pair based targeting
@@ -3658,6 +3803,7 @@ export type ActivationKey = {
3658
3803
  * The targeting parameter value
3659
3804
  */
3660
3805
  value: string;
3806
+ [k: string]: unknown;
3661
3807
  };
3662
3808
  /**
3663
3809
  * The key to use for targeting. Only present if is_live=true AND requester has access to this deployment.
@@ -3671,6 +3817,7 @@ export type ActivationKey1 = {
3671
3817
  * The platform-specific segment identifier to use in campaign targeting
3672
3818
  */
3673
3819
  segment_id: string;
3820
+ [k: string]: unknown;
3674
3821
  } | {
3675
3822
  /**
3676
3823
  * Key-value pair based targeting
@@ -3684,6 +3831,7 @@ export type ActivationKey1 = {
3684
3831
  * The targeting parameter value
3685
3832
  */
3686
3833
  value: string;
3834
+ [k: string]: unknown;
3687
3835
  };
3688
3836
  /**
3689
3837
  * Response payload for get_signals task