@adcp/client 3.0.3 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/README.md +3 -0
  2. package/dist/lib/agents/index.generated.d.ts +27 -50
  3. package/dist/lib/agents/index.generated.d.ts.map +1 -1
  4. package/dist/lib/agents/index.generated.js +12 -24
  5. package/dist/lib/agents/index.generated.js.map +1 -1
  6. package/dist/lib/auth/index.d.ts +8 -3
  7. package/dist/lib/auth/index.d.ts.map +1 -1
  8. package/dist/lib/auth/index.js +32 -6
  9. package/dist/lib/auth/index.js.map +1 -1
  10. package/dist/lib/core/ADCPMultiAgentClient.d.ts +150 -41
  11. package/dist/lib/core/ADCPMultiAgentClient.d.ts.map +1 -1
  12. package/dist/lib/core/ADCPMultiAgentClient.js +150 -41
  13. package/dist/lib/core/ADCPMultiAgentClient.js.map +1 -1
  14. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  15. package/dist/lib/core/ConfigurationManager.d.ts.map +1 -1
  16. package/dist/lib/core/ConfigurationManager.js +14 -1
  17. package/dist/lib/core/ConfigurationManager.js.map +1 -1
  18. package/dist/lib/core/CreativeAgentClient.d.ts.map +1 -1
  19. package/dist/lib/core/CreativeAgentClient.js +6 -1
  20. package/dist/lib/core/CreativeAgentClient.js.map +1 -1
  21. package/dist/lib/core/ResponseValidator.d.ts.map +1 -1
  22. package/dist/lib/core/ResponseValidator.js +5 -6
  23. package/dist/lib/core/ResponseValidator.js.map +1 -1
  24. package/dist/lib/core/SingleAgentClient.d.ts +6 -0
  25. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  26. package/dist/lib/core/SingleAgentClient.js +15 -7
  27. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  28. package/dist/lib/core/TaskExecutor.d.ts +1 -1
  29. package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
  30. package/dist/lib/core/TaskExecutor.js +60 -61
  31. package/dist/lib/core/TaskExecutor.js.map +1 -1
  32. package/dist/lib/index.d.ts +30 -15
  33. package/dist/lib/index.d.ts.map +1 -1
  34. package/dist/lib/index.js +86 -26
  35. package/dist/lib/index.js.map +1 -1
  36. package/dist/lib/protocols/a2a.d.ts +2 -1
  37. package/dist/lib/protocols/a2a.d.ts.map +1 -1
  38. package/dist/lib/protocols/a2a.js +12 -4
  39. package/dist/lib/protocols/a2a.js.map +1 -1
  40. package/dist/lib/protocols/index.d.ts +12 -1
  41. package/dist/lib/protocols/index.d.ts.map +1 -1
  42. package/dist/lib/protocols/index.js +29 -14
  43. package/dist/lib/protocols/index.js.map +1 -1
  44. package/dist/lib/types/adcp.d.ts +3 -58
  45. package/dist/lib/types/adcp.d.ts.map +1 -1
  46. package/dist/lib/types/core.generated.d.ts +268 -211
  47. package/dist/lib/types/core.generated.d.ts.map +1 -1
  48. package/dist/lib/types/core.generated.js +2 -2
  49. package/dist/lib/types/schemas.generated.d.ts +3191 -2687
  50. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  51. package/dist/lib/types/schemas.generated.js +562 -480
  52. package/dist/lib/types/schemas.generated.js.map +1 -1
  53. package/dist/lib/types/tools.generated.d.ts +790 -654
  54. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  55. package/dist/lib/types/tools.generated.js +1 -1
  56. package/dist/lib/types/tools.generated.js.map +1 -1
  57. package/dist/lib/utils/index.d.ts +3 -0
  58. package/dist/lib/utils/index.d.ts.map +1 -1
  59. package/dist/lib/utils/index.js +10 -1
  60. package/dist/lib/utils/index.js.map +1 -1
  61. package/dist/lib/utils/preview-utils.d.ts.map +1 -1
  62. package/dist/lib/utils/preview-utils.js +2 -0
  63. package/dist/lib/utils/preview-utils.js.map +1 -1
  64. package/dist/lib/utils/response-unwrapper.d.ts +36 -0
  65. package/dist/lib/utils/response-unwrapper.d.ts.map +1 -0
  66. package/dist/lib/utils/response-unwrapper.js +331 -0
  67. package/dist/lib/utils/response-unwrapper.js.map +1 -0
  68. package/dist/lib/version.d.ts +13 -5
  69. package/dist/lib/version.d.ts.map +1 -1
  70. package/dist/lib/version.js +19 -5
  71. package/dist/lib/version.js.map +1 -1
  72. package/package.json +6 -7
@@ -3,16 +3,21 @@
3
3
  */
4
4
  export type BrandManifestReference = BrandManifest | string;
5
5
  /**
6
- * Inline brand manifest object
6
+ * Type of asset. Note: Brand manifests typically contain basic media assets (image, video, audio, text). Code assets (html, javascript, css) and ad markup (vast, daast) are usually not part of brand asset libraries.
7
7
  */
8
- export type BrandManifest = BrandManifest1 & BrandManifest2;
9
- export type BrandManifest1 = {
10
- [k: string]: unknown;
11
- };
8
+ export type AssetContentType = 'image' | 'video' | 'audio' | 'text' | 'markdown' | 'html' | 'css' | 'javascript' | 'vast' | 'daast' | 'promoted_offerings' | 'url' | 'webhook';
12
9
  /**
13
10
  * Type of inventory delivery
14
11
  */
15
12
  export type DeliveryType = 'guaranteed' | 'non_guaranteed';
13
+ /**
14
+ * High-level categories for creative formats based on media type and delivery channel. Describes WHERE and HOW a creative displays, not what content it contains.
15
+ */
16
+ export type FormatCategory = 'audio' | 'video' | 'display' | 'native' | 'dooh' | 'rich_media' | 'universal';
17
+ /**
18
+ * Standard advertising channels supported by AdCP
19
+ */
20
+ export type AdvertisingChannels = 'display' | 'video' | 'audio' | 'native' | 'dooh' | 'ctv' | 'podcast' | 'retail' | 'social';
16
21
  /**
17
22
  * Request parameters for discovering available advertising products
18
23
  */
@@ -22,38 +27,14 @@ export interface GetProductsRequest {
22
27
  */
23
28
  brief?: string;
24
29
  brand_manifest?: BrandManifestReference;
25
- /**
26
- * Structured filters for product discovery
27
- */
28
- filters?: {
29
- delivery_type?: DeliveryType;
30
- /**
31
- * Filter for fixed price vs auction products
32
- */
33
- is_fixed_price?: boolean;
34
- /**
35
- * Filter by format types
36
- */
37
- format_types?: ('video' | 'display' | 'audio')[];
38
- /**
39
- * Filter by specific format IDs
40
- */
41
- format_ids?: FormatID[];
42
- /**
43
- * Only return products accepting IAB standard formats
44
- */
45
- standard_formats_only?: boolean;
46
- /**
47
- * Minimum exposures/impressions needed for measurement validity
48
- */
49
- min_exposures?: number;
50
- };
51
- /**
52
- * Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.
53
- */
54
- context?: {};
30
+ filters?: ProductFilters;
31
+ context?: ContextObject;
32
+ ext?: ExtensionObject;
55
33
  }
56
- export interface BrandManifest2 {
34
+ /**
35
+ * Inline brand manifest object
36
+ */
37
+ export interface BrandManifest {
57
38
  /**
58
39
  * Primary brand URL for context and asset discovery. Creative agents can infer brand information from this URL.
59
40
  */
@@ -61,7 +42,7 @@ export interface BrandManifest2 {
61
42
  /**
62
43
  * Brand or business name
63
44
  */
64
- name?: string;
45
+ name: string;
65
46
  /**
66
47
  * Brand logo assets with semantic tags for different use cases
67
48
  */
@@ -141,10 +122,7 @@ export interface BrandManifest2 {
141
122
  * Unique identifier for this asset
142
123
  */
143
124
  asset_id: string;
144
- /**
145
- * Type of asset
146
- */
147
- asset_type: 'image' | 'video' | 'audio' | 'text';
125
+ asset_type: AssetContentType;
148
126
  /**
149
127
  * URL to CDN-hosted asset file
150
128
  */
@@ -270,7 +248,55 @@ export interface BrandManifest2 {
270
248
  };
271
249
  }
272
250
  /**
273
- * Structured format identifier with agent URL and format name
251
+ * Structured filters for product discovery
252
+ */
253
+ export interface ProductFilters {
254
+ delivery_type?: DeliveryType;
255
+ /**
256
+ * Filter for fixed price vs auction products
257
+ */
258
+ is_fixed_price?: boolean;
259
+ /**
260
+ * Filter by format types
261
+ */
262
+ format_types?: FormatCategory[];
263
+ /**
264
+ * Filter by specific format IDs
265
+ */
266
+ format_ids?: FormatID[];
267
+ /**
268
+ * Only return products accepting IAB standard formats
269
+ */
270
+ standard_formats_only?: boolean;
271
+ /**
272
+ * Minimum exposures/impressions needed for measurement validity
273
+ */
274
+ min_exposures?: number;
275
+ /**
276
+ * Campaign start date (ISO 8601 date format: YYYY-MM-DD) for availability checks
277
+ */
278
+ start_date?: string;
279
+ /**
280
+ * Campaign end date (ISO 8601 date format: YYYY-MM-DD) for availability checks
281
+ */
282
+ end_date?: string;
283
+ /**
284
+ * Budget range to filter appropriate products
285
+ */
286
+ budget_range?: {
287
+ [k: string]: unknown;
288
+ };
289
+ /**
290
+ * Filter by target countries using ISO 3166-1 alpha-2 country codes (e.g., ['US', 'CA', 'GB'])
291
+ */
292
+ countries?: string[];
293
+ /**
294
+ * Filter by advertising channels (e.g., ['display', 'video', 'dooh'])
295
+ */
296
+ channels?: AdvertisingChannels[];
297
+ }
298
+ /**
299
+ * 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.
274
300
  */
275
301
  export interface FormatID {
276
302
  /**
@@ -278,14 +304,105 @@ export interface FormatID {
278
304
  */
279
305
  agent_url: string;
280
306
  /**
281
- * Format identifier within the agent's namespace (e.g., 'display_300x250', 'video_standard_30s')
307
+ * 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.
282
308
  */
283
309
  id: string;
310
+ /**
311
+ * 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.
312
+ */
313
+ width?: number;
314
+ /**
315
+ * 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.
316
+ */
317
+ height?: number;
318
+ /**
319
+ * 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
+ */
321
+ duration_ms?: number;
284
322
  }
323
+ /**
324
+ * 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.
325
+ */
326
+ export interface ContextObject {
327
+ [k: string]: unknown;
328
+ }
329
+ /**
330
+ * 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.
331
+ */
332
+ export interface ExtensionObject {
333
+ [k: string]: unknown;
334
+ }
335
+ /**
336
+ * 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.
337
+ */
338
+ export type PublisherPropertySelector = {
339
+ /**
340
+ * Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')
341
+ */
342
+ publisher_domain: string;
343
+ /**
344
+ * Discriminator indicating all properties from this publisher are included
345
+ */
346
+ selection_type: 'all';
347
+ } | {
348
+ /**
349
+ * Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')
350
+ */
351
+ publisher_domain: string;
352
+ /**
353
+ * Discriminator indicating selection by specific property IDs
354
+ */
355
+ selection_type: 'by_id';
356
+ /**
357
+ * Specific property IDs from the publisher's adagents.json
358
+ *
359
+ * @minItems 1
360
+ */
361
+ property_ids: [PropertyID, ...PropertyID[]];
362
+ } | {
363
+ /**
364
+ * Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')
365
+ */
366
+ publisher_domain: string;
367
+ /**
368
+ * Discriminator indicating selection by property tags
369
+ */
370
+ selection_type: 'by_tag';
371
+ /**
372
+ * Property tags from the publisher's adagents.json. Selector covers all properties with these tags
373
+ *
374
+ * @minItems 1
375
+ */
376
+ property_tags: [PropertyTag, ...PropertyTag[]];
377
+ };
378
+ /**
379
+ * Identifier for a publisher property. Must be lowercase alphanumeric with underscores only.
380
+ */
381
+ export type PropertyID = string;
382
+ /**
383
+ * Tag for categorizing publisher properties. Must be lowercase alphanumeric with underscores only.
384
+ */
385
+ export type PropertyTag = string;
285
386
  /**
286
387
  * Type of inventory delivery
287
388
  */
288
389
  export type PricingOption = CPMFixedRatePricingOption | CPMAuctionPricingOption | VCPMFixedRatePricingOption | VCPMAuctionPricingOption | CPCPricingOption | CPCVPricingOption | CPVPricingOption | CPPPricingOption | FlatRatePricingOption;
390
+ /**
391
+ * Available frequencies for delivery reports and metrics updates
392
+ */
393
+ export type ReportingFrequency = 'hourly' | 'daily' | 'monthly';
394
+ /**
395
+ * Standard delivery and performance metrics available for reporting
396
+ */
397
+ export type AvailableMetric = 'impressions' | 'spend' | 'clicks' | 'ctr' | 'video_completions' | 'completion_rate' | 'conversions' | 'viewability' | 'engagement_rate';
398
+ /**
399
+ * Co-branding requirement
400
+ */
401
+ export type CoBrandingRequirement = 'required' | 'optional' | 'none';
402
+ /**
403
+ * Landing page requirements
404
+ */
405
+ export type LandingPageRequirement = 'any' | 'retailer_site_only' | 'must_include_retailer';
289
406
  /**
290
407
  * Response payload for get_products task
291
408
  */
@@ -298,10 +415,8 @@ export interface GetProductsResponse {
298
415
  * Task-specific errors and warnings (e.g., product filtering issues)
299
416
  */
300
417
  errors?: Error[];
301
- /**
302
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
303
- */
304
- context?: {};
418
+ context?: ContextObject;
419
+ ext?: ExtensionObject;
305
420
  }
306
421
  /**
307
422
  * Represents available advertising inventory
@@ -320,48 +435,11 @@ export interface Product {
320
435
  */
321
436
  description: string;
322
437
  /**
323
- * Publisher properties covered by this product. Buyers fetch actual property definitions from each publisher's adagents.json and validate agent authorization.
438
+ * Publisher properties covered by this product. Buyers fetch actual property definitions from each publisher's adagents.json and validate agent authorization. Selection patterns mirror the authorization patterns in adagents.json for consistency.
324
439
  *
325
440
  * @minItems 1
326
441
  */
327
- publisher_properties: [
328
- {
329
- /**
330
- * Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')
331
- */
332
- publisher_domain: string;
333
- /**
334
- * Specific property IDs from the publisher's adagents.json. Mutually exclusive with property_tags.
335
- *
336
- * @minItems 1
337
- */
338
- property_ids?: [string, ...string[]];
339
- /**
340
- * Property tags from the publisher's adagents.json. Product covers all properties with these tags. Mutually exclusive with property_ids.
341
- *
342
- * @minItems 1
343
- */
344
- property_tags?: [string, ...string[]];
345
- },
346
- ...{
347
- /**
348
- * Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')
349
- */
350
- publisher_domain: string;
351
- /**
352
- * Specific property IDs from the publisher's adagents.json. Mutually exclusive with property_tags.
353
- *
354
- * @minItems 1
355
- */
356
- property_ids?: [string, ...string[]];
357
- /**
358
- * Property tags from the publisher's adagents.json. Product covers all properties with these tags. Mutually exclusive with property_ids.
359
- *
360
- * @minItems 1
361
- */
362
- property_tags?: [string, ...string[]];
363
- }[]
364
- ];
442
+ publisher_properties: [PublisherPropertySelector, ...PublisherPropertySelector[]];
365
443
  /**
366
444
  * Array of supported creative format IDs - structured format_id objects with agent_url and id
367
445
  */
@@ -435,9 +513,10 @@ export interface Product {
435
513
  [k: string]: unknown;
436
514
  };
437
515
  };
516
+ ext?: ExtensionObject;
438
517
  }
439
518
  /**
440
- * Structured format identifier with agent URL and format name
519
+ * 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.
441
520
  */
442
521
  export interface Placement {
443
522
  /**
@@ -453,7 +532,7 @@ export interface Placement {
453
532
  */
454
533
  description?: string;
455
534
  /**
456
- * Format IDs supported by this specific placement (subset of product's formats)
535
+ * Format IDs supported by this specific placement. Can include: (1) concrete format_ids (fixed dimensions), (2) template format_ids without parameters (accepts any dimensions/duration), or (3) parameterized format_ids (specific dimension/duration constraints).
457
536
  *
458
537
  * @minItems 1
459
538
  */
@@ -479,6 +558,10 @@ export interface CPMFixedRatePricingOption {
479
558
  * ISO 4217 currency code
480
559
  */
481
560
  currency: string;
561
+ /**
562
+ * Whether this is a fixed rate (true) or auction-based (false)
563
+ */
564
+ is_fixed: true;
482
565
  /**
483
566
  * Minimum spend requirement per package using this pricing option, in the specified currency
484
567
  */
@@ -500,6 +583,10 @@ export interface CPMAuctionPricingOption {
500
583
  * ISO 4217 currency code
501
584
  */
502
585
  currency: string;
586
+ /**
587
+ * Whether this is a fixed rate (true) or auction-based (false)
588
+ */
589
+ is_fixed: false;
503
590
  /**
504
591
  * Pricing guidance for auction-based CPM bidding
505
592
  */
@@ -550,6 +637,10 @@ export interface VCPMFixedRatePricingOption {
550
637
  * ISO 4217 currency code
551
638
  */
552
639
  currency: string;
640
+ /**
641
+ * Whether this is a fixed rate (true) or auction-based (false)
642
+ */
643
+ is_fixed: true;
553
644
  /**
554
645
  * Minimum spend requirement per package using this pricing option, in the specified currency
555
646
  */
@@ -571,6 +662,10 @@ export interface VCPMAuctionPricingOption {
571
662
  * ISO 4217 currency code
572
663
  */
573
664
  currency: string;
665
+ /**
666
+ * Whether this is a fixed rate (true) or auction-based (false)
667
+ */
668
+ is_fixed: false;
574
669
  /**
575
670
  * Statistical guidance for auction pricing
576
671
  */
@@ -621,6 +716,10 @@ export interface CPCPricingOption {
621
716
  * ISO 4217 currency code
622
717
  */
623
718
  currency: string;
719
+ /**
720
+ * Whether this is a fixed rate (true) or auction-based (false)
721
+ */
722
+ is_fixed: true;
624
723
  /**
625
724
  * Minimum spend requirement per package using this pricing option, in the specified currency
626
725
  */
@@ -646,6 +745,10 @@ export interface CPCVPricingOption {
646
745
  * ISO 4217 currency code
647
746
  */
648
747
  currency: string;
748
+ /**
749
+ * Whether this is a fixed rate (true) or auction-based (false)
750
+ */
751
+ is_fixed: true;
649
752
  /**
650
753
  * Minimum spend requirement per package using this pricing option, in the specified currency
651
754
  */
@@ -671,6 +774,10 @@ export interface CPVPricingOption {
671
774
  * ISO 4217 currency code
672
775
  */
673
776
  currency: string;
777
+ /**
778
+ * Whether this is a fixed rate (true) or auction-based (false)
779
+ */
780
+ is_fixed: true;
674
781
  /**
675
782
  * CPV-specific parameters defining the view threshold
676
783
  */
@@ -707,6 +814,10 @@ export interface CPPPricingOption {
707
814
  * ISO 4217 currency code
708
815
  */
709
816
  currency: string;
817
+ /**
818
+ * Whether this is a fixed rate (true) or auction-based (false)
819
+ */
820
+ is_fixed: true;
710
821
  /**
711
822
  * CPP-specific parameters for demographic targeting and GRP requirements
712
823
  */
@@ -817,7 +928,7 @@ export interface ReportingCapabilities {
817
928
  *
818
929
  * @minItems 1
819
930
  */
820
- available_reporting_frequencies: ['hourly' | 'daily' | 'monthly', ...('hourly' | 'daily' | 'monthly')[]];
931
+ available_reporting_frequencies: [ReportingFrequency, ...ReportingFrequency[]];
821
932
  /**
822
933
  * Expected delay in minutes before reporting data becomes available (e.g., 240 for 4-hour delay)
823
934
  */
@@ -833,27 +944,21 @@ export interface ReportingCapabilities {
833
944
  /**
834
945
  * Metrics available in reporting. Impressions and spend are always implicitly included.
835
946
  */
836
- available_metrics: ('impressions' | 'spend' | 'clicks' | 'ctr' | 'video_completions' | 'completion_rate' | 'conversions' | 'viewability' | 'engagement_rate')[];
947
+ available_metrics: AvailableMetric[];
837
948
  }
838
949
  /**
839
950
  * Creative requirements and restrictions for a product
840
951
  */
841
952
  export interface CreativePolicy {
842
- /**
843
- * Co-branding requirement
844
- */
845
- co_branding: 'required' | 'optional' | 'none';
846
- /**
847
- * Landing page requirements
848
- */
849
- landing_page: 'any' | 'retailer_site_only' | 'must_include_retailer';
953
+ co_branding: CoBrandingRequirement;
954
+ landing_page: LandingPageRequirement;
850
955
  /**
851
956
  * Whether creative templates are provided
852
957
  */
853
958
  templates_available: boolean;
854
959
  }
855
960
  /**
856
- * Structured format identifier with agent URL and format name
961
+ * 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.
857
962
  */
858
963
  export interface FormatID1 {
859
964
  /**
@@ -861,12 +966,24 @@ export interface FormatID1 {
861
966
  */
862
967
  agent_url: string;
863
968
  /**
864
- * Format identifier within the agent's namespace (e.g., 'display_300x250', 'video_standard_30s')
969
+ * 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.
865
970
  */
866
971
  id: string;
972
+ /**
973
+ * 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.
974
+ */
975
+ width?: number;
976
+ /**
977
+ * 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.
978
+ */
979
+ height?: number;
980
+ /**
981
+ * 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
+ */
983
+ duration_ms?: number;
867
984
  }
868
985
  /**
869
- * Structured format identifier with agent URL and format name
986
+ * 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.
870
987
  */
871
988
  export interface FormatID2 {
872
989
  /**
@@ -874,12 +991,24 @@ export interface FormatID2 {
874
991
  */
875
992
  agent_url: string;
876
993
  /**
877
- * Format identifier within the agent's namespace (e.g., 'display_300x250', 'video_standard_30s')
994
+ * 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.
878
995
  */
879
996
  id: string;
997
+ /**
998
+ * 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.
999
+ */
1000
+ width?: number;
1001
+ /**
1002
+ * 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.
1003
+ */
1004
+ height?: number;
1005
+ /**
1006
+ * 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
+ */
1008
+ duration_ms?: number;
880
1009
  }
881
1010
  /**
882
- * Standard error structure for task-specific errors and warnings
1011
+ * 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.
883
1012
  */
884
1013
  export interface Error {
885
1014
  /**
@@ -910,21 +1039,21 @@ export interface Error {
910
1039
  };
911
1040
  }
912
1041
  /**
913
- * Request parameters for discovering supported creative formats
1042
+ * 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.
1043
+ */
1044
+ /**
1045
+ * Filter by format type (technical categories with distinct requirements)
914
1046
  */
915
1047
  export interface ListCreativeFormatsRequest {
916
1048
  /**
917
1049
  * Return only these specific format IDs (e.g., from get_products response)
918
1050
  */
919
1051
  format_ids?: FormatID[];
920
- /**
921
- * Filter by format type (technical categories with distinct requirements)
922
- */
923
- type?: 'audio' | 'video' | 'display' | 'dooh';
1052
+ type?: FormatCategory;
924
1053
  /**
925
1054
  * Filter to formats that include these asset types. For third-party tags, search for 'html' or 'javascript'. E.g., ['image', 'text'] returns formats with images and text, ['javascript'] returns formats accepting JavaScript tags.
926
1055
  */
927
- asset_types?: ('image' | 'video' | 'audio' | 'text' | 'html' | 'javascript' | 'url')[];
1056
+ asset_types?: AssetContentType[];
928
1057
  /**
929
1058
  * Maximum width in pixels (inclusive). Returns formats where ANY render has width <= this value. For multi-render formats, matches if at least one render fits.
930
1059
  */
@@ -949,14 +1078,24 @@ export interface ListCreativeFormatsRequest {
949
1078
  * Search for formats by name (case-insensitive partial match)
950
1079
  */
951
1080
  name_search?: string;
952
- /**
953
- * Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.
954
- */
955
- context?: {};
1081
+ context?: ContextObject;
1082
+ ext?: ExtensionObject;
956
1083
  }
957
1084
  /**
958
- * Structured format identifier with agent URL and format name
1085
+ * 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.
1086
+ */
1087
+ /**
1088
+ * Media type of this format - determines rendering method and asset requirements
1089
+ */
1090
+ export type FormatIDParameter = 'dimensions' | 'duration';
1091
+ /**
1092
+ * Type of asset
1093
+ */
1094
+ export type AssetContentType1 = 'image' | 'video' | 'audio' | 'text' | 'markdown' | 'html' | 'css' | 'javascript' | 'vast' | 'daast' | 'promoted_offerings' | 'url' | 'webhook';
1095
+ /**
1096
+ * Capabilities supported by creative agents for format handling
959
1097
  */
1098
+ export type CreativeAgentCapability = 'validation' | 'assembly' | 'generation' | 'preview';
960
1099
  /**
961
1100
  * Response payload for list_creative_formats task
962
1101
  */
@@ -980,16 +1119,14 @@ export interface ListCreativeFormatsResponse {
980
1119
  /**
981
1120
  * Capabilities this creative agent provides
982
1121
  */
983
- capabilities?: ('validation' | 'assembly' | 'generation' | 'preview')[];
1122
+ capabilities?: CreativeAgentCapability[];
984
1123
  }[];
985
1124
  /**
986
1125
  * Task-specific errors and warnings (e.g., format availability issues)
987
1126
  */
988
1127
  errors?: Error[];
989
- /**
990
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
991
- */
992
- context?: {};
1128
+ context?: ContextObject;
1129
+ ext?: ExtensionObject;
993
1130
  }
994
1131
  /**
995
1132
  * Represents a creative format with its requirements
@@ -1012,129 +1149,41 @@ export interface Format {
1012
1149
  * Optional URL to showcase page with examples and interactive demos of this format
1013
1150
  */
1014
1151
  example_url?: string;
1152
+ type: FormatCategory;
1015
1153
  /**
1016
- * Media type of this format - determines rendering method and asset requirements
1154
+ * List of parameters this format accepts in format_id. Template formats define which parameters (dimensions, duration, etc.) can be specified when instantiating the format. Empty or omitted means this is a concrete format with fixed parameters.
1017
1155
  */
1018
- type: 'audio' | 'video' | 'display' | 'native' | 'dooh' | 'rich_media' | 'universal';
1156
+ accepts_parameters?: FormatIDParameter[];
1019
1157
  /**
1020
1158
  * Specification of rendered pieces for this format. Most formats produce a single render. Companion ad formats (video + banner), adaptive formats, and multi-placement formats produce multiple renders. Each render specifies its role and dimensions.
1021
1159
  *
1022
1160
  * @minItems 1
1023
1161
  */
1024
1162
  renders?: [
1025
- {
1026
- /**
1027
- * Semantic role of this rendered piece (e.g., 'primary', 'companion', 'mobile_variant')
1028
- */
1029
- role: string;
1030
- /**
1031
- * Dimensions for this rendered piece
1032
- */
1033
- dimensions: {
1034
- /**
1035
- * Fixed width in specified units
1036
- */
1037
- width?: number;
1038
- /**
1039
- * Fixed height in specified units
1040
- */
1041
- height?: number;
1042
- /**
1043
- * Minimum width for responsive renders
1044
- */
1045
- min_width?: number;
1046
- /**
1047
- * Minimum height for responsive renders
1048
- */
1049
- min_height?: number;
1050
- /**
1051
- * Maximum width for responsive renders
1052
- */
1053
- max_width?: number;
1054
- /**
1055
- * Maximum height for responsive renders
1056
- */
1057
- max_height?: number;
1058
- /**
1059
- * Indicates which dimensions are responsive/fluid
1060
- */
1061
- responsive?: {
1062
- width: boolean;
1063
- height: boolean;
1064
- };
1065
- /**
1066
- * Fixed aspect ratio constraint (e.g., '16:9', '4:3', '1:1')
1067
- */
1068
- aspect_ratio?: string;
1069
- /**
1070
- * Unit of measurement for dimensions
1071
- */
1072
- unit: 'px' | 'dp' | 'inches' | 'cm';
1073
- };
1074
- },
1075
- ...{
1076
- /**
1077
- * Semantic role of this rendered piece (e.g., 'primary', 'companion', 'mobile_variant')
1078
- */
1079
- role: string;
1080
- /**
1081
- * Dimensions for this rendered piece
1082
- */
1083
- dimensions: {
1084
- /**
1085
- * Fixed width in specified units
1086
- */
1087
- width?: number;
1088
- /**
1089
- * Fixed height in specified units
1090
- */
1091
- height?: number;
1092
- /**
1093
- * Minimum width for responsive renders
1094
- */
1095
- min_width?: number;
1096
- /**
1097
- * Minimum height for responsive renders
1098
- */
1099
- min_height?: number;
1100
- /**
1101
- * Maximum width for responsive renders
1102
- */
1103
- max_width?: number;
1104
- /**
1105
- * Maximum height for responsive renders
1106
- */
1107
- max_height?: number;
1108
- /**
1109
- * Indicates which dimensions are responsive/fluid
1110
- */
1111
- responsive?: {
1112
- width: boolean;
1113
- height: boolean;
1114
- };
1115
- /**
1116
- * Fixed aspect ratio constraint (e.g., '16:9', '4:3', '1:1')
1117
- */
1118
- aspect_ratio?: string;
1119
- /**
1120
- * Unit of measurement for dimensions
1121
- */
1122
- unit: 'px' | 'dp' | 'inches' | 'cm';
1123
- };
1124
- }[]
1163
+ ({
1164
+ [k: string]: unknown;
1165
+ } | {
1166
+ parameters_from_format_id: true;
1167
+ }),
1168
+ ...({
1169
+ [k: string]: unknown;
1170
+ } | {
1171
+ parameters_from_format_id: true;
1172
+ })[]
1125
1173
  ];
1126
1174
  /**
1127
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).
1128
1176
  */
1129
1177
  assets_required?: ({
1130
1178
  /**
1131
- * Unique identifier for this asset. Creative manifests MUST use this exact value as the key in the assets object.
1179
+ * Discriminator indicating this is an individual asset requirement
1132
1180
  */
1133
- asset_id: string;
1181
+ item_type: 'individual';
1134
1182
  /**
1135
- * Type of asset
1183
+ * Unique identifier for this asset. Creative manifests MUST use this exact value as the key in the assets object.
1136
1184
  */
1137
- asset_type: 'image' | 'video' | 'audio' | 'vast' | 'daast' | 'text' | 'markdown' | 'html' | 'css' | 'javascript' | 'url' | 'webhook' | 'promoted_offerings';
1185
+ asset_id: string;
1186
+ asset_type: AssetContentType;
1138
1187
  /**
1139
1188
  * Optional descriptive label for this asset's purpose (e.g., 'hero_image', 'logo'). Not used for referencing assets in manifests—use asset_id instead. This field is for human-readable documentation and UI display only.
1140
1189
  */
@@ -1144,20 +1193,20 @@ export interface Format {
1144
1193
  */
1145
1194
  required?: boolean;
1146
1195
  /**
1147
- * Technical requirements for this asset (dimensions, file size, duration, etc.)
1196
+ * 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).
1148
1197
  */
1149
1198
  requirements?: {
1150
1199
  [k: string]: unknown;
1151
1200
  };
1152
1201
  } | {
1153
1202
  /**
1154
- * Identifier for this asset group (e.g., 'product', 'slide', 'card')
1203
+ * Discriminator indicating this is a repeatable asset group
1155
1204
  */
1156
- asset_group_id: string;
1205
+ item_type: 'repeatable_group';
1157
1206
  /**
1158
- * Indicates this is a repeatable asset group
1207
+ * Identifier for this asset group (e.g., 'product', 'slide', 'card')
1159
1208
  */
1160
- repeatable: true;
1209
+ asset_group_id: string;
1161
1210
  /**
1162
1211
  * Minimum number of repetitions required
1163
1212
  */
@@ -1174,10 +1223,7 @@ export interface Format {
1174
1223
  * Identifier for this asset within the group
1175
1224
  */
1176
1225
  asset_id: string;
1177
- /**
1178
- * Type of asset
1179
- */
1180
- asset_type: 'image' | 'video' | 'audio' | 'vast' | 'daast' | 'text' | 'markdown' | 'html' | 'css' | 'javascript' | 'url' | 'webhook' | 'promoted_offerings';
1226
+ asset_type: AssetContentType1;
1181
1227
  /**
1182
1228
  * Optional descriptive label for this asset's purpose (e.g., 'hero_image', 'logo'). Not used for referencing assets in manifests—use asset_id instead. This field is for human-readable documentation and UI display only.
1183
1229
  */
@@ -1187,7 +1233,7 @@ export interface Format {
1187
1233
  */
1188
1234
  required?: boolean;
1189
1235
  /**
1190
- * Technical requirements for this asset
1236
+ * 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).
1191
1237
  */
1192
1238
  requirements?: {
1193
1239
  [k: string]: unknown;
@@ -1242,9 +1288,21 @@ export interface FormatID3 {
1242
1288
  */
1243
1289
  agent_url: string;
1244
1290
  /**
1245
- * Format identifier within the agent's namespace (e.g., 'display_300x250', 'video_standard_30s')
1291
+ * 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.
1246
1292
  */
1247
1293
  id: string;
1294
+ /**
1295
+ * 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.
1296
+ */
1297
+ width?: number;
1298
+ /**
1299
+ * 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.
1300
+ */
1301
+ height?: number;
1302
+ /**
1303
+ * 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
+ */
1305
+ duration_ms?: number;
1248
1306
  }
1249
1307
  /**
1250
1308
  * Standard error structure for task-specific errors and warnings
@@ -1253,6 +1311,48 @@ export interface FormatID3 {
1253
1311
  * Budget pacing strategy
1254
1312
  */
1255
1313
  export type Pacing = 'even' | 'asap' | 'front_loaded';
1314
+ /**
1315
+ * Image asset with URL and dimensions
1316
+ */
1317
+ export type ImageAsset = Dimensions & {
1318
+ /**
1319
+ * URL to the image asset
1320
+ */
1321
+ url: string;
1322
+ /**
1323
+ * Image file format (jpg, png, gif, webp, etc.)
1324
+ */
1325
+ format?: string;
1326
+ /**
1327
+ * Alternative text for accessibility
1328
+ */
1329
+ alt_text?: string;
1330
+ };
1331
+ /**
1332
+ * Video asset with URL and specifications
1333
+ */
1334
+ export type VideoAsset = Dimensions & {
1335
+ /**
1336
+ * URL to the video asset
1337
+ */
1338
+ url: string;
1339
+ /**
1340
+ * Video duration in milliseconds
1341
+ */
1342
+ duration_ms?: number;
1343
+ /**
1344
+ * Video file format (mp4, webm, mov, etc.)
1345
+ */
1346
+ format?: string;
1347
+ /**
1348
+ * Video bitrate in kilobits per second
1349
+ */
1350
+ bitrate_kbps?: number;
1351
+ };
1352
+ /**
1353
+ * JavaScript module type
1354
+ */
1355
+ export type JavaScriptModuleType = 'esm' | 'commonjs' | 'script';
1256
1356
  /**
1257
1357
  * VAST (Video Ad Serving Template) tag for third-party video ad serving
1258
1358
  */
@@ -1265,10 +1365,7 @@ export type VASTAsset = {
1265
1365
  * URL endpoint that returns VAST XML
1266
1366
  */
1267
1367
  url: string;
1268
- /**
1269
- * VAST specification version
1270
- */
1271
- vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2';
1368
+ vast_version?: VASTVersion;
1272
1369
  /**
1273
1370
  * Whether VPAID (Video Player-Ad Interface Definition) is supported
1274
1371
  */
@@ -1280,7 +1377,7 @@ export type VASTAsset = {
1280
1377
  /**
1281
1378
  * Tracking events supported by this VAST tag
1282
1379
  */
1283
- tracking_events?: ('start' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'complete' | 'impression' | 'click' | 'pause' | 'resume' | 'skip' | 'mute' | 'unmute' | 'fullscreen' | 'exitFullscreen' | 'playerExpand' | 'playerCollapse')[];
1380
+ tracking_events?: VASTTrackingEvent[];
1284
1381
  } | {
1285
1382
  /**
1286
1383
  * Discriminator indicating VAST is delivered as inline XML content
@@ -1290,10 +1387,7 @@ export type VASTAsset = {
1290
1387
  * Inline VAST XML content
1291
1388
  */
1292
1389
  content: string;
1293
- /**
1294
- * VAST specification version
1295
- */
1296
- vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2';
1390
+ vast_version?: VASTVersion1;
1297
1391
  /**
1298
1392
  * Whether VPAID (Video Player-Ad Interface Definition) is supported
1299
1393
  */
@@ -1305,8 +1399,20 @@ export type VASTAsset = {
1305
1399
  /**
1306
1400
  * Tracking events supported by this VAST tag
1307
1401
  */
1308
- tracking_events?: ('start' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'complete' | 'impression' | 'click' | 'pause' | 'resume' | 'skip' | 'mute' | 'unmute' | 'fullscreen' | 'exitFullscreen' | 'playerExpand' | 'playerCollapse')[];
1402
+ tracking_events?: VASTTrackingEvent[];
1309
1403
  };
1404
+ /**
1405
+ * VAST specification version
1406
+ */
1407
+ export type VASTVersion = '2.0' | '3.0' | '4.0' | '4.1' | '4.2';
1408
+ /**
1409
+ * Standard VAST tracking events for video ad playback and interaction
1410
+ */
1411
+ export type VASTTrackingEvent = 'start' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'complete' | 'impression' | 'click' | 'pause' | 'resume' | 'skip' | 'mute' | 'unmute' | 'fullscreen' | 'exitFullscreen' | 'playerExpand' | 'playerCollapse';
1412
+ /**
1413
+ * VAST specification version
1414
+ */
1415
+ export type VASTVersion1 = '2.0' | '3.0' | '4.0' | '4.1' | '4.2';
1310
1416
  /**
1311
1417
  * DAAST (Digital Audio Ad Serving Template) tag for third-party audio ad serving
1312
1418
  */
@@ -1319,10 +1425,7 @@ export type DAASTAsset = {
1319
1425
  * URL endpoint that returns DAAST XML
1320
1426
  */
1321
1427
  url: string;
1322
- /**
1323
- * DAAST specification version
1324
- */
1325
- daast_version?: '1.0' | '1.1';
1428
+ daast_version?: DAASTVersion;
1326
1429
  /**
1327
1430
  * Expected audio duration in milliseconds (if known)
1328
1431
  */
@@ -1330,7 +1433,7 @@ export type DAASTAsset = {
1330
1433
  /**
1331
1434
  * Tracking events supported by this DAAST tag
1332
1435
  */
1333
- tracking_events?: ('start' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'complete' | 'impression' | 'pause' | 'resume' | 'skip' | 'mute' | 'unmute')[];
1436
+ tracking_events?: DAASTTrackingEvent[];
1334
1437
  /**
1335
1438
  * Whether companion display ads are included
1336
1439
  */
@@ -1344,10 +1447,7 @@ export type DAASTAsset = {
1344
1447
  * Inline DAAST XML content
1345
1448
  */
1346
1449
  content: string;
1347
- /**
1348
- * DAAST specification version
1349
- */
1350
- daast_version?: '1.0' | '1.1';
1450
+ daast_version?: DAASTVersion1;
1351
1451
  /**
1352
1452
  * Expected audio duration in milliseconds (if known)
1353
1453
  */
@@ -1355,20 +1455,40 @@ export type DAASTAsset = {
1355
1455
  /**
1356
1456
  * Tracking events supported by this DAAST tag
1357
1457
  */
1358
- tracking_events?: ('start' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'complete' | 'impression' | 'pause' | 'resume' | 'skip' | 'mute' | 'unmute')[];
1458
+ tracking_events?: DAASTTrackingEvent[];
1359
1459
  /**
1360
1460
  * Whether companion display ads are included
1361
1461
  */
1362
1462
  companion_ads?: boolean;
1363
1463
  };
1464
+ /**
1465
+ * DAAST specification version
1466
+ */
1467
+ export type DAASTVersion = '1.0' | '1.1';
1468
+ /**
1469
+ * Standard DAAST tracking events for audio ad playback and interaction
1470
+ */
1471
+ export type DAASTTrackingEvent = 'start' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'complete' | 'impression' | 'pause' | 'resume' | 'skip' | 'mute' | 'unmute';
1472
+ /**
1473
+ * DAAST specification version
1474
+ */
1475
+ export type DAASTVersion1 = '1.0' | '1.1';
1364
1476
  /**
1365
1477
  * Brand information manifest containing assets, themes, and guidelines. Can be provided inline or as a URL reference to a hosted manifest.
1366
1478
  */
1367
- export type BrandManifestReference1 = BrandManifest1 | string;
1479
+ export type URLAssetType = 'clickthrough' | 'tracker_pixel' | 'tracker_script';
1480
+ /**
1481
+ * Brand information manifest serving as the namespace and identity for this media buy. Provides brand context, assets, and product catalog. Can be provided inline or as a URL reference to a hosted manifest. Can be cached and reused across multiple requests.
1482
+ */
1483
+ export type BrandManifestReference1 = BrandManifest | string;
1368
1484
  /**
1369
1485
  * Campaign start timing: 'asap' or ISO 8601 date-time
1370
1486
  */
1371
1487
  export type StartTiming = 'asap' | string;
1488
+ /**
1489
+ * Authentication schemes for push notification endpoints
1490
+ */
1491
+ export type AuthenticationScheme = 'Bearer' | 'HMAC-SHA256';
1372
1492
  /**
1373
1493
  * Request parameters for creating a media buy
1374
1494
  */
@@ -1401,10 +1521,8 @@ export interface CreateMediaBuyRequest {
1401
1521
  */
1402
1522
  requested_metrics?: ('impressions' | 'spend' | 'clicks' | 'ctr' | 'video_completions' | 'completion_rate' | 'conversions' | 'viewability' | 'engagement_rate')[];
1403
1523
  };
1404
- /**
1405
- * Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.
1406
- */
1407
- context?: {};
1524
+ context?: ContextObject;
1525
+ ext?: ExtensionObject;
1408
1526
  }
1409
1527
  /**
1410
1528
  * Package configuration for media buy creation
@@ -1448,9 +1566,10 @@ export interface PackageRequest {
1448
1566
  * @maxItems 100
1449
1567
  */
1450
1568
  creatives?: CreativeAsset[];
1569
+ ext?: ExtensionObject;
1451
1570
  }
1452
1571
  /**
1453
- * Structured format identifier with agent URL and format name
1572
+ * 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.
1454
1573
  */
1455
1574
  export interface TargetingOverlay {
1456
1575
  /**
@@ -1538,60 +1657,29 @@ export interface CreativeAsset {
1538
1657
  * For generative creatives: set to true to approve and finalize, false to request regeneration with updated assets/message. Omit for non-generative creatives.
1539
1658
  */
1540
1659
  approved?: boolean;
1541
- }
1542
- /**
1543
- * Structured format identifier with agent URL and format name
1544
- */
1545
- export interface ImageAsset {
1546
1660
  /**
1547
- * URL to the image asset
1661
+ * Optional delivery weight for creative rotation when uploading via create_media_buy or update_media_buy (0-100). If omitted, platform determines rotation. Only used during upload to media buy - not stored in creative library.
1548
1662
  */
1549
- url: string;
1663
+ weight?: number;
1550
1664
  /**
1551
- * Image width in pixels
1552
- */
1553
- width?: number;
1554
- /**
1555
- * Image height in pixels
1556
- */
1557
- height?: number;
1558
- /**
1559
- * Image file format (jpg, png, gif, webp, etc.)
1560
- */
1561
- format?: string;
1562
- /**
1563
- * Alternative text for accessibility
1665
+ * Optional array of placement IDs where this creative should run when uploading via create_media_buy or update_media_buy. References placement_id values from the product's placements array. If omitted, creative runs on all placements. Only used during upload to media buy - not stored in creative library.
1666
+ *
1667
+ * @minItems 1
1564
1668
  */
1565
- alt_text?: string;
1669
+ placement_ids?: [string, ...string[]];
1566
1670
  }
1567
1671
  /**
1568
- * Video asset with URL and specifications
1672
+ * 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.
1569
1673
  */
1570
- export interface VideoAsset {
1571
- /**
1572
- * URL to the video asset
1573
- */
1574
- url: string;
1575
- /**
1576
- * Video width in pixels
1577
- */
1578
- width?: number;
1674
+ export interface Dimensions {
1579
1675
  /**
1580
- * Video height in pixels
1676
+ * Width in pixels
1581
1677
  */
1582
- height?: number;
1678
+ width: number;
1583
1679
  /**
1584
- * Video duration in milliseconds
1680
+ * Height in pixels
1585
1681
  */
1586
- duration_ms?: number;
1587
- /**
1588
- * Video file format (mp4, webm, mov, etc.)
1589
- */
1590
- format?: string;
1591
- /**
1592
- * Video bitrate in kilobits per second
1593
- */
1594
- bitrate_kbps?: number;
1682
+ height: number;
1595
1683
  }
1596
1684
  /**
1597
1685
  * Audio asset with URL and specifications
@@ -1661,10 +1749,7 @@ export interface JavaScriptAsset {
1661
1749
  * JavaScript content
1662
1750
  */
1663
1751
  content: string;
1664
- /**
1665
- * JavaScript module type
1666
- */
1667
- module_type?: 'esm' | 'commonjs' | 'script';
1752
+ module_type?: JavaScriptModuleType;
1668
1753
  }
1669
1754
  /**
1670
1755
  * Complete offering specification combining brand manifest, product selectors, and asset filters. Provides all context needed for creative generation about what is being promoted.
@@ -1709,6 +1794,9 @@ export interface PromotedOfferings {
1709
1794
  exclude_tags?: string[];
1710
1795
  };
1711
1796
  }
1797
+ /**
1798
+ * Inline brand manifest object
1799
+ */
1712
1800
  export interface PromotedProducts {
1713
1801
  /**
1714
1802
  * Direct product SKU references from the brand manifest product catalog
@@ -1735,17 +1823,14 @@ export interface URLAsset {
1735
1823
  * URL reference
1736
1824
  */
1737
1825
  url: string;
1738
- /**
1739
- * 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)
1740
- */
1741
- url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script';
1826
+ url_type?: URLAssetType;
1742
1827
  /**
1743
1828
  * Description of what this URL points to
1744
1829
  */
1745
1830
  description?: string;
1746
1831
  }
1747
1832
  /**
1748
- * Webhook configuration for asynchronous task notifications. Uses A2A-compatible PushNotificationConfig structure. Supports Bearer tokens (simple) or HMAC signatures (production-recommended).
1833
+ * 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.
1749
1834
  */
1750
1835
  export interface PushNotificationConfig {
1751
1836
  /**
@@ -1766,13 +1851,16 @@ export interface PushNotificationConfig {
1766
1851
  * @minItems 1
1767
1852
  * @maxItems 1
1768
1853
  */
1769
- schemes: ['Bearer' | 'HMAC-SHA256'];
1854
+ schemes: [AuthenticationScheme];
1770
1855
  /**
1771
1856
  * Credentials for authentication. For Bearer: token sent in Authorization header. For HMAC-SHA256: shared secret used to generate signature. Minimum 32 characters. Exchanged out-of-band during onboarding.
1772
1857
  */
1773
1858
  credentials: string;
1774
1859
  };
1775
1860
  }
1861
+ /**
1862
+ * 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.
1863
+ */
1776
1864
  /**
1777
1865
  * Response payload for create_media_buy task. Returns either complete success data OR error information, never both. This enforces atomic operation semantics - the media buy is either fully created or not created at all.
1778
1866
  */
@@ -1790,22 +1878,11 @@ export type CreateMediaBuyResponse = {
1790
1878
  */
1791
1879
  creative_deadline?: string;
1792
1880
  /**
1793
- * Array of created packages
1794
- */
1795
- packages: {
1796
- /**
1797
- * Publisher's unique identifier for the package
1798
- */
1799
- package_id: string;
1800
- /**
1801
- * Buyer's reference identifier for the package
1802
- */
1803
- buyer_ref: string;
1804
- }[];
1805
- /**
1806
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
1881
+ * Array of created packages with complete state information
1807
1882
  */
1808
- context?: {};
1883
+ packages: Package[];
1884
+ context?: ContextObject;
1885
+ ext?: ExtensionObject;
1809
1886
  } | {
1810
1887
  /**
1811
1888
  * Array of errors explaining why the operation failed
@@ -1813,16 +1890,85 @@ export type CreateMediaBuyResponse = {
1813
1890
  * @minItems 1
1814
1891
  */
1815
1892
  errors: [Error, ...Error[]];
1893
+ context?: ContextObject;
1894
+ ext?: ExtensionObject;
1895
+ };
1896
+ /**
1897
+ * Budget pacing strategy
1898
+ */
1899
+ export interface Package {
1816
1900
  /**
1817
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
1901
+ * Publisher's unique identifier for the package
1818
1902
  */
1819
- context?: {};
1820
- };
1903
+ package_id: string;
1904
+ /**
1905
+ * Buyer's reference identifier for this package
1906
+ */
1907
+ buyer_ref?: string;
1908
+ /**
1909
+ * ID of the product this package is based on
1910
+ */
1911
+ product_id?: string;
1912
+ /**
1913
+ * Budget allocation for this package in the currency specified by the pricing option
1914
+ */
1915
+ budget?: number;
1916
+ pacing?: Pacing;
1917
+ /**
1918
+ * ID of the selected pricing option from the product's pricing_options array
1919
+ */
1920
+ pricing_option_id?: string;
1921
+ /**
1922
+ * Bid price for auction-based CPM pricing (present if using cpm-auction-option)
1923
+ */
1924
+ bid_price?: number;
1925
+ /**
1926
+ * Impression goal for this package
1927
+ */
1928
+ impressions?: number;
1929
+ targeting_overlay?: TargetingOverlay;
1930
+ /**
1931
+ * Creative assets assigned to this package
1932
+ */
1933
+ creative_assignments?: CreativeAssignment[];
1934
+ /**
1935
+ * Format IDs that creative assets will be provided for this package
1936
+ */
1937
+ format_ids_to_provide?: FormatID[];
1938
+ /**
1939
+ * Whether this package is paused by the buyer. Paused packages do not deliver impressions. Defaults to false.
1940
+ */
1941
+ paused?: boolean;
1942
+ ext?: ExtensionObject;
1943
+ }
1821
1944
  /**
1822
- * Standard error structure for task-specific errors and warnings
1945
+ * 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).
1823
1946
  */
1947
+ export interface CreativeAssignment {
1948
+ /**
1949
+ * Unique identifier for the creative
1950
+ */
1951
+ creative_id: string;
1952
+ /**
1953
+ * Delivery weight for this creative
1954
+ */
1955
+ weight?: number;
1956
+ /**
1957
+ * Optional array of placement IDs where this creative should run. When omitted, the creative runs on all placements in the package. References placement_id values from the product's placements array.
1958
+ *
1959
+ * @minItems 1
1960
+ */
1961
+ placement_ids?: [string, ...string[]];
1962
+ }
1824
1963
  /**
1825
- * VAST (Video Ad Serving Template) tag for third-party video ad serving
1964
+ * 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.
1965
+ */
1966
+ /**
1967
+ * Image asset with URL and dimensions
1968
+ */
1969
+ export type ValidationMode = 'strict' | 'lenient';
1970
+ /**
1971
+ * Authentication schemes for push notification endpoints
1826
1972
  */
1827
1973
  export interface SyncCreativesRequest {
1828
1974
  /**
@@ -1832,9 +1978,11 @@ export interface SyncCreativesRequest {
1832
1978
  */
1833
1979
  creatives: CreativeAsset[];
1834
1980
  /**
1835
- * When true, only provided fields are updated (partial update). When false, entire creative is replaced (full upsert).
1981
+ * Optional filter to limit sync scope to specific creative IDs. When provided, only these creatives will be created/updated. Other creatives in the library are unaffected. Useful for partial updates and error recovery.
1982
+ *
1983
+ * @maxItems 100
1836
1984
  */
1837
- patch?: boolean;
1985
+ creative_ids?: string[];
1838
1986
  /**
1839
1987
  * Optional bulk assignment of creatives to packages
1840
1988
  */
@@ -1855,15 +2003,10 @@ export interface SyncCreativesRequest {
1855
2003
  * When true, preview changes without applying them. Returns what would be created/updated/deleted.
1856
2004
  */
1857
2005
  dry_run?: boolean;
1858
- /**
1859
- * Validation strictness. 'strict' fails entire sync on any validation error. 'lenient' processes valid creatives and reports errors.
1860
- */
1861
- validation_mode?: 'strict' | 'lenient';
1862
- push_notification_config?: PushNotificationConfig;
1863
- /**
1864
- * Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.
1865
- */
1866
- context?: {};
2006
+ validation_mode?: ValidationMode;
2007
+ push_notification_config?: PushNotificationConfig;
2008
+ context?: ContextObject;
2009
+ ext?: ExtensionObject;
1867
2010
  }
1868
2011
  /**
1869
2012
  * Creative asset for upload to library - supports static assets, generative formats, and third-party snippets
@@ -1884,10 +2027,7 @@ export type SyncCreativesResponse = {
1884
2027
  * Creative ID from the request
1885
2028
  */
1886
2029
  creative_id: string;
1887
- /**
1888
- * Action taken for this creative
1889
- */
1890
- action: 'created' | 'updated' | 'unchanged' | 'failed' | 'deleted';
2030
+ action: CreativeAction;
1891
2031
  /**
1892
2032
  * Platform-specific ID assigned to the creative
1893
2033
  */
@@ -1929,10 +2069,8 @@ export type SyncCreativesResponse = {
1929
2069
  [k: string]: string;
1930
2070
  };
1931
2071
  }[];
1932
- /**
1933
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
1934
- */
1935
- context?: {};
2072
+ context?: ContextObject;
2073
+ ext?: ExtensionObject;
1936
2074
  } | {
1937
2075
  /**
1938
2076
  * Operation-level errors that prevented processing any creatives (e.g., authentication failure, service unavailable, invalid request format)
@@ -1940,13 +2078,15 @@ export type SyncCreativesResponse = {
1940
2078
  * @minItems 1
1941
2079
  */
1942
2080
  errors: [Error, ...Error[]];
1943
- /**
1944
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
1945
- */
1946
- context?: {};
2081
+ context?: ContextObject;
2082
+ ext?: ExtensionObject;
1947
2083
  };
1948
2084
  /**
1949
- * Standard error structure for task-specific errors and warnings
2085
+ * Action taken for this creative
2086
+ */
2087
+ export type CreativeAction = 'created' | 'updated' | 'unchanged' | 'failed' | 'deleted';
2088
+ /**
2089
+ * 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.
1950
2090
  */
1951
2091
  /**
1952
2092
  * Filter by creative approval status
@@ -1956,90 +2096,25 @@ export type CreativeStatus = 'processing' | 'approved' | 'rejected' | 'pending_r
1956
2096
  * Status of a creative asset
1957
2097
  */
1958
2098
  export type CreativeStatus1 = 'processing' | 'approved' | 'rejected' | 'pending_review';
2099
+ /**
2100
+ * Field to sort by
2101
+ */
2102
+ export type CreativeSortField = 'created_date' | 'updated_date' | 'name' | 'status' | 'assignment_count' | 'performance_score';
2103
+ /**
2104
+ * Sort direction
2105
+ */
2106
+ export type SortDirection = 'asc' | 'desc';
1959
2107
  /**
1960
2108
  * Request parameters for querying creative assets from the centralized library with filtering, sorting, and pagination
1961
2109
  */
1962
2110
  export interface ListCreativesRequest {
1963
- /**
1964
- * Filter criteria for querying creatives
1965
- */
1966
- filters?: {
1967
- /**
1968
- * Filter by creative format type (e.g., video, audio, display)
1969
- */
1970
- format?: string;
1971
- /**
1972
- * Filter by multiple creative format types
1973
- */
1974
- formats?: string[];
1975
- status?: CreativeStatus;
1976
- /**
1977
- * Filter by multiple creative statuses
1978
- */
1979
- statuses?: CreativeStatus1[];
1980
- /**
1981
- * Filter by creative tags (all tags must match)
1982
- */
1983
- tags?: string[];
1984
- /**
1985
- * Filter by creative tags (any tag must match)
1986
- */
1987
- tags_any?: string[];
1988
- /**
1989
- * Filter by creative names containing this text (case-insensitive)
1990
- */
1991
- name_contains?: string;
1992
- /**
1993
- * Filter by specific creative IDs
1994
- *
1995
- * @maxItems 100
1996
- */
1997
- creative_ids?: string[];
1998
- /**
1999
- * Filter creatives created after this date (ISO 8601)
2000
- */
2001
- created_after?: string;
2002
- /**
2003
- * Filter creatives created before this date (ISO 8601)
2004
- */
2005
- created_before?: string;
2006
- /**
2007
- * Filter creatives last updated after this date (ISO 8601)
2008
- */
2009
- updated_after?: string;
2010
- /**
2011
- * Filter creatives last updated before this date (ISO 8601)
2012
- */
2013
- updated_before?: string;
2014
- /**
2015
- * Filter creatives assigned to this specific package
2016
- */
2017
- assigned_to_package?: string;
2018
- /**
2019
- * Filter creatives assigned to any of these packages
2020
- */
2021
- assigned_to_packages?: string[];
2022
- /**
2023
- * Filter for unassigned creatives when true, assigned creatives when false
2024
- */
2025
- unassigned?: boolean;
2026
- /**
2027
- * Filter creatives that have performance data when true
2028
- */
2029
- has_performance_data?: boolean;
2030
- };
2111
+ filters?: CreativeFilters;
2031
2112
  /**
2032
2113
  * Sorting parameters
2033
2114
  */
2034
2115
  sort?: {
2035
- /**
2036
- * Field to sort by
2037
- */
2038
- field?: 'created_date' | 'updated_date' | 'name' | 'status' | 'assignment_count' | 'performance_score';
2039
- /**
2040
- * Sort direction
2041
- */
2042
- direction?: 'asc' | 'desc';
2116
+ field?: CreativeSortField;
2117
+ direction?: SortDirection;
2043
2118
  };
2044
2119
  /**
2045
2120
  * Pagination parameters
@@ -2070,13 +2145,90 @@ export interface ListCreativesRequest {
2070
2145
  * Specific fields to include in response (omit for all fields)
2071
2146
  */
2072
2147
  fields?: ('creative_id' | 'name' | 'format' | 'status' | 'created_date' | 'updated_date' | 'tags' | 'assignments' | 'performance' | 'sub_assets')[];
2148
+ context?: ContextObject;
2149
+ ext?: ExtensionObject;
2150
+ }
2151
+ /**
2152
+ * Filter criteria for querying creative assets from the centralized library
2153
+ */
2154
+ export interface CreativeFilters {
2155
+ /**
2156
+ * Filter by creative format type (e.g., video, audio, display)
2157
+ */
2158
+ format?: string;
2159
+ /**
2160
+ * Filter by multiple creative format types
2161
+ */
2162
+ formats?: string[];
2163
+ status?: CreativeStatus;
2164
+ /**
2165
+ * Filter by multiple creative statuses
2166
+ */
2167
+ statuses?: CreativeStatus1[];
2073
2168
  /**
2074
- * Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.
2169
+ * Filter by creative tags (all tags must match)
2075
2170
  */
2076
- context?: {};
2171
+ tags?: string[];
2172
+ /**
2173
+ * Filter by creative tags (any tag must match)
2174
+ */
2175
+ tags_any?: string[];
2176
+ /**
2177
+ * Filter by creative names containing this text (case-insensitive)
2178
+ */
2179
+ name_contains?: string;
2180
+ /**
2181
+ * Filter by specific creative IDs
2182
+ *
2183
+ * @maxItems 100
2184
+ */
2185
+ creative_ids?: string[];
2186
+ /**
2187
+ * Filter creatives created after this date (ISO 8601)
2188
+ */
2189
+ created_after?: string;
2190
+ /**
2191
+ * Filter creatives created before this date (ISO 8601)
2192
+ */
2193
+ created_before?: string;
2194
+ /**
2195
+ * Filter creatives last updated after this date (ISO 8601)
2196
+ */
2197
+ updated_after?: string;
2198
+ /**
2199
+ * Filter creatives last updated before this date (ISO 8601)
2200
+ */
2201
+ updated_before?: string;
2202
+ /**
2203
+ * Filter creatives assigned to this specific package
2204
+ */
2205
+ assigned_to_package?: string;
2206
+ /**
2207
+ * Filter creatives assigned to any of these packages
2208
+ */
2209
+ assigned_to_packages?: string[];
2210
+ /**
2211
+ * Filter creatives assigned to any of these media buys
2212
+ */
2213
+ media_buy_ids?: string[];
2214
+ /**
2215
+ * Filter creatives assigned to media buys with any of these buyer references
2216
+ */
2217
+ buyer_refs?: string[];
2218
+ /**
2219
+ * Filter for unassigned creatives when true, assigned creatives when false
2220
+ */
2221
+ unassigned?: boolean;
2222
+ /**
2223
+ * Filter creatives that have performance data when true
2224
+ */
2225
+ has_performance_data?: boolean;
2077
2226
  }
2078
2227
  /**
2079
- * Current approval status of the creative
2228
+ * 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.
2229
+ */
2230
+ /**
2231
+ * Sort direction for list queries
2080
2232
  */
2081
2233
  export type SubAsset = {
2082
2234
  /**
@@ -2138,7 +2290,7 @@ export interface ListCreativesResponse {
2138
2290
  */
2139
2291
  sort_applied?: {
2140
2292
  field?: string;
2141
- direction?: 'asc' | 'desc';
2293
+ direction?: SortDirection;
2142
2294
  };
2143
2295
  };
2144
2296
  /**
@@ -2188,10 +2340,6 @@ export interface ListCreativesResponse {
2188
2340
  * When the creative was last modified
2189
2341
  */
2190
2342
  updated_date: string;
2191
- /**
2192
- * URL of the creative file (for hosted assets)
2193
- */
2194
- media_url?: string;
2195
2343
  /**
2196
2344
  * Assets for this creative, keyed by asset_role
2197
2345
  */
@@ -2202,22 +2350,6 @@ export interface ListCreativesResponse {
2202
2350
  */
2203
2351
  [k: string]: ImageAsset | VideoAsset | AudioAsset | TextAsset | HTMLAsset | CSSAsset | JavaScriptAsset | VASTAsset | DAASTAsset | PromotedOfferings | URLAsset;
2204
2352
  };
2205
- /**
2206
- * Landing page URL for the creative
2207
- */
2208
- click_url?: string;
2209
- /**
2210
- * Duration in milliseconds (for video/audio)
2211
- */
2212
- duration?: number;
2213
- /**
2214
- * Width in pixels (for video/display)
2215
- */
2216
- width?: number;
2217
- /**
2218
- * Height in pixels (for video/display)
2219
- */
2220
- height?: number;
2221
2353
  /**
2222
2354
  * User-defined tags for organization and searchability
2223
2355
  */
@@ -2319,10 +2451,8 @@ export interface ListCreativesResponse {
2319
2451
  */
2320
2452
  archived?: number;
2321
2453
  };
2322
- /**
2323
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
2324
- */
2325
- context?: {};
2454
+ context?: ContextObject;
2455
+ ext?: ExtensionObject;
2326
2456
  }
2327
2457
  /**
2328
2458
  * Format identifier specifying which format this creative conforms to
@@ -2347,9 +2477,9 @@ export interface UpdateMediaBuyRequest1 {
2347
2477
  */
2348
2478
  buyer_ref?: string;
2349
2479
  /**
2350
- * Pause/resume the entire media buy
2480
+ * Pause/resume the entire media buy (true = paused, false = active)
2351
2481
  */
2352
- active?: boolean;
2482
+ paused?: boolean;
2353
2483
  start_time?: StartTiming;
2354
2484
  /**
2355
2485
  * New end date/time in ISO 8601 format
@@ -2364,10 +2494,8 @@ export interface UpdateMediaBuyRequest1 {
2364
2494
  [k: string]: unknown;
2365
2495
  })[];
2366
2496
  push_notification_config?: PushNotificationConfig;
2367
- /**
2368
- * Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.
2369
- */
2370
- context?: {};
2497
+ context?: ContextObject;
2498
+ ext?: ExtensionObject;
2371
2499
  }
2372
2500
  /**
2373
2501
  * Optional webhook configuration for async update notifications. Publisher will send webhook when update completes if operation takes longer than immediate response time.
@@ -2389,22 +2517,11 @@ export type UpdateMediaBuyResponse = {
2389
2517
  */
2390
2518
  implementation_date?: string | null;
2391
2519
  /**
2392
- * Array of packages that were modified
2393
- */
2394
- affected_packages?: {
2395
- /**
2396
- * Publisher's package identifier
2397
- */
2398
- package_id: string;
2399
- /**
2400
- * Buyer's reference for the package
2401
- */
2402
- buyer_ref: string;
2403
- }[];
2404
- /**
2405
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
2520
+ * Array of packages that were modified with complete state information
2406
2521
  */
2407
- context?: {};
2522
+ affected_packages?: Package[];
2523
+ context?: ContextObject;
2524
+ ext?: ExtensionObject;
2408
2525
  } | {
2409
2526
  /**
2410
2527
  * Array of errors explaining why the operation failed
@@ -2412,14 +2529,16 @@ export type UpdateMediaBuyResponse = {
2412
2529
  * @minItems 1
2413
2530
  */
2414
2531
  errors: [Error, ...Error[]];
2415
- /**
2416
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
2417
- */
2418
- context?: {};
2532
+ context?: ContextObject;
2533
+ ext?: ExtensionObject;
2419
2534
  };
2420
2535
  /**
2421
- * Standard error structure for task-specific errors and warnings
2536
+ * Budget pacing strategy
2537
+ */
2538
+ /**
2539
+ * Status of a media buy
2422
2540
  */
2541
+ export type MediaBuyStatus = 'pending_activation' | 'active' | 'paused' | 'completed';
2423
2542
  /**
2424
2543
  * Request parameters for retrieving comprehensive delivery metrics
2425
2544
  */
@@ -2435,7 +2554,7 @@ export interface GetMediaBuyDeliveryRequest {
2435
2554
  /**
2436
2555
  * Filter by status. Can be a single status or array of statuses
2437
2556
  */
2438
- status_filter?: ('active' | 'pending' | 'paused' | 'completed' | 'failed' | 'all') | ('active' | 'pending' | 'paused' | 'completed' | 'failed')[];
2557
+ status_filter?: MediaBuyStatus | MediaBuyStatus[];
2439
2558
  /**
2440
2559
  * Start date for reporting period (YYYY-MM-DD)
2441
2560
  */
@@ -2444,11 +2563,12 @@ export interface GetMediaBuyDeliveryRequest {
2444
2563
  * End date for reporting period (YYYY-MM-DD)
2445
2564
  */
2446
2565
  end_date?: string;
2447
- /**
2448
- * Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.
2449
- */
2450
- context?: {};
2566
+ context?: ContextObject;
2567
+ ext?: ExtensionObject;
2451
2568
  }
2569
+ /**
2570
+ * 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.
2571
+ */
2452
2572
  /**
2453
2573
  * Pricing model used for this media buy
2454
2574
  */
@@ -2579,6 +2699,14 @@ export interface GetMediaBuyDeliveryResponse {
2579
2699
  * ISO 4217 currency code (e.g., USD, EUR, GBP) for this package's pricing. Indicates the currency in which the rate and spend values are denominated. Different packages can use different currencies when supported by the publisher.
2580
2700
  */
2581
2701
  currency: string;
2702
+ /**
2703
+ * System-reported operational state of this package. Reflects actual delivery state independent of buyer pause control.
2704
+ */
2705
+ delivery_status?: 'delivering' | 'completed' | 'budget_exhausted' | 'flight_ended' | 'goal_met';
2706
+ /**
2707
+ * Whether this package is currently paused by the buyer
2708
+ */
2709
+ paused?: boolean;
2582
2710
  })[];
2583
2711
  /**
2584
2712
  * Day-by-day delivery
@@ -2602,10 +2730,8 @@ export interface GetMediaBuyDeliveryResponse {
2602
2730
  * Task-specific errors and warnings (e.g., missing delivery data, reporting platform issues)
2603
2731
  */
2604
2732
  errors?: Error[];
2605
- /**
2606
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
2607
- */
2608
- context?: {};
2733
+ context?: ContextObject;
2734
+ ext?: ExtensionObject;
2609
2735
  }
2610
2736
  /**
2611
2737
  * Standard delivery metrics that can be reported at media buy, package, or creative level
@@ -2749,17 +2875,14 @@ export interface ListAuthorizedPropertiesRequest {
2749
2875
  * @minItems 1
2750
2876
  */
2751
2877
  publisher_domains?: [string, ...string[]];
2752
- /**
2753
- * Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.
2754
- */
2755
- context?: {};
2878
+ context?: ContextObject;
2879
+ ext?: ExtensionObject;
2756
2880
  }
2757
2881
  /**
2758
- * Standard advertising channels supported by AdCP
2882
+ * 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.
2759
2883
  */
2760
- export type AdvertisingChannels = 'display' | 'video' | 'audio' | 'native' | 'dooh' | 'ctv' | 'podcast' | 'retail' | 'social';
2761
2884
  /**
2762
- * Response payload for list_authorized_properties task. Lists publisher domains and authorization scope (property_ids or property_tags). Buyers fetch actual property definitions from each publisher's canonical adagents.json file.
2885
+ * Standard advertising channels supported by AdCP
2763
2886
  */
2764
2887
  export interface ListAuthorizedPropertiesResponse {
2765
2888
  /**
@@ -2796,10 +2919,8 @@ export interface ListAuthorizedPropertiesResponse {
2796
2919
  * Task-specific errors and warnings (e.g., property availability issues)
2797
2920
  */
2798
2921
  errors?: Error[];
2799
- /**
2800
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
2801
- */
2802
- context?: {};
2922
+ context?: ContextObject;
2923
+ ext?: ExtensionObject;
2803
2924
  }
2804
2925
  /**
2805
2926
  * Standard error structure for task-specific errors and warnings
@@ -2807,15 +2928,31 @@ export interface ListAuthorizedPropertiesResponse {
2807
2928
  /**
2808
2929
  * Request payload for provide_performance_feedback task
2809
2930
  */
2810
- export interface ProvidePerformanceFeedbackRequest {
2931
+ export type ProvidePerformanceFeedbackRequest = ProvidePerformanceFeedbackRequest1 & ProvidePerformanceFeedbackRequest2;
2932
+ /**
2933
+ * The business metric being measured
2934
+ */
2935
+ export type MetricType = 'overall_performance' | 'conversion_rate' | 'brand_lift' | 'click_through_rate' | 'completion_rate' | 'viewability' | 'brand_safety' | 'cost_efficiency';
2936
+ /**
2937
+ * Source of the performance data
2938
+ */
2939
+ export type FeedbackSource = 'buyer_attribution' | 'third_party_measurement' | 'platform_analytics' | 'verification_partner';
2940
+ export type ProvidePerformanceFeedbackRequest2 = {
2941
+ [k: string]: unknown;
2942
+ };
2943
+ export interface ProvidePerformanceFeedbackRequest1 {
2811
2944
  /**
2812
2945
  * Publisher's media buy identifier
2813
2946
  */
2814
- media_buy_id: string;
2947
+ media_buy_id?: string;
2948
+ /**
2949
+ * Buyer's reference for the media buy
2950
+ */
2951
+ buyer_ref?: string;
2815
2952
  /**
2816
2953
  * Time period for performance measurement
2817
2954
  */
2818
- measurement_period: {
2955
+ measurement_period?: {
2819
2956
  /**
2820
2957
  * ISO 8601 start timestamp for measurement period
2821
2958
  */
@@ -2828,7 +2965,7 @@ export interface ProvidePerformanceFeedbackRequest {
2828
2965
  /**
2829
2966
  * Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expected)
2830
2967
  */
2831
- performance_index: number;
2968
+ performance_index?: number;
2832
2969
  /**
2833
2970
  * Specific package within the media buy (if feedback is package-specific)
2834
2971
  */
@@ -2837,19 +2974,14 @@ export interface ProvidePerformanceFeedbackRequest {
2837
2974
  * Specific creative asset (if feedback is creative-specific)
2838
2975
  */
2839
2976
  creative_id?: string;
2840
- /**
2841
- * The business metric being measured
2842
- */
2843
- metric_type?: 'overall_performance' | 'conversion_rate' | 'brand_lift' | 'click_through_rate' | 'completion_rate' | 'viewability' | 'brand_safety' | 'cost_efficiency';
2844
- /**
2845
- * Source of the performance data
2846
- */
2847
- feedback_source?: 'buyer_attribution' | 'third_party_measurement' | 'platform_analytics' | 'verification_partner';
2848
- /**
2849
- * Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.
2850
- */
2851
- context?: {};
2977
+ metric_type?: MetricType;
2978
+ feedback_source?: FeedbackSource;
2979
+ context?: ContextObject;
2980
+ ext?: ExtensionObject;
2852
2981
  }
2982
+ /**
2983
+ * 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.
2984
+ */
2853
2985
  /**
2854
2986
  * Response payload for provide_performance_feedback task. Returns either success confirmation OR error information, never both.
2855
2987
  */
@@ -2858,10 +2990,8 @@ export type ProvidePerformanceFeedbackResponse = {
2858
2990
  * Whether the performance feedback was successfully received
2859
2991
  */
2860
2992
  success: true;
2861
- /**
2862
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
2863
- */
2864
- context?: {};
2993
+ context?: ContextObject;
2994
+ ext?: ExtensionObject;
2865
2995
  } | {
2866
2996
  /**
2867
2997
  * Array of errors explaining why feedback was rejected (e.g., invalid measurement period, missing campaign data)
@@ -2869,16 +2999,26 @@ export type ProvidePerformanceFeedbackResponse = {
2869
2999
  * @minItems 1
2870
3000
  */
2871
3001
  errors: [Error, ...Error[]];
2872
- /**
2873
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
2874
- */
2875
- context?: {};
3002
+ context?: ContextObject;
3003
+ ext?: ExtensionObject;
2876
3004
  };
2877
3005
  /**
2878
- * Standard error structure for task-specific errors and warnings
3006
+ * 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.
2879
3007
  */
2880
3008
  /**
2881
- * VAST (Video Ad Serving Template) tag for third-party video ad serving
3009
+ * Image asset with URL and dimensions
3010
+ */
3011
+ export type HTTPMethod = 'GET' | 'POST';
3012
+ /**
3013
+ * Expected content type of webhook response
3014
+ */
3015
+ export type WebhookResponseType = 'html' | 'json' | 'xml' | 'javascript';
3016
+ /**
3017
+ * Authentication method
3018
+ */
3019
+ export type WebhookSecurityMethod = 'hmac_sha256' | 'api_key' | 'none';
3020
+ /**
3021
+ * DAAST (Digital Audio Ad Serving Template) tag for third-party audio ad serving
2882
3022
  */
2883
3023
  export interface BuildCreativeRequest {
2884
3024
  /**
@@ -2887,10 +3027,8 @@ export interface BuildCreativeRequest {
2887
3027
  message?: string;
2888
3028
  creative_manifest?: CreativeManifest;
2889
3029
  target_format_id: FormatID1;
2890
- /**
2891
- * Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.
2892
- */
2893
- context?: {};
3030
+ context?: ContextObject;
3031
+ ext?: ExtensionObject;
2894
3032
  }
2895
3033
  /**
2896
3034
  * Creative manifest to transform or generate from. For pure generation, this should include the target format_id and any required input assets (e.g., promoted_offerings for generative formats). For transformation (e.g., resizing, reformatting), this is the complete creative to adapt.
@@ -2913,19 +3051,17 @@ export interface CreativeManifest {
2913
3051
  */
2914
3052
  [k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset | PromotedOfferings;
2915
3053
  };
3054
+ ext?: ExtensionObject;
2916
3055
  }
2917
3056
  /**
2918
- * Format identifier this manifest is for
3057
+ * 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'}).
2919
3058
  */
2920
3059
  export interface WebhookAsset {
2921
3060
  /**
2922
3061
  * Webhook URL to call for dynamic content
2923
3062
  */
2924
3063
  url: string;
2925
- /**
2926
- * HTTP method
2927
- */
2928
- method?: 'GET' | 'POST';
3064
+ method?: HTTPMethod;
2929
3065
  /**
2930
3066
  * Maximum time to wait for response in milliseconds
2931
3067
  */
@@ -2938,18 +3074,12 @@ export interface WebhookAsset {
2938
3074
  * Universal macros that must be provided for webhook to function
2939
3075
  */
2940
3076
  required_macros?: string[];
2941
- /**
2942
- * Expected content type of webhook response
2943
- */
2944
- response_type: 'html' | 'json' | 'xml' | 'javascript';
3077
+ response_type: WebhookResponseType;
2945
3078
  /**
2946
3079
  * Security configuration for webhook calls
2947
3080
  */
2948
3081
  security: {
2949
- /**
2950
- * Authentication method
2951
- */
2952
- method: 'hmac_sha256' | 'api_key' | 'none';
3082
+ method: WebhookSecurityMethod;
2953
3083
  /**
2954
3084
  * Header name for HMAC signature (e.g., 'X-Signature')
2955
3085
  */
@@ -2968,10 +3098,8 @@ export interface WebhookAsset {
2968
3098
  */
2969
3099
  export type BuildCreativeResponse = {
2970
3100
  creative_manifest: CreativeManifest;
2971
- /**
2972
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
2973
- */
2974
- context?: {};
3101
+ context?: ContextObject;
3102
+ ext?: ExtensionObject;
2975
3103
  } | {
2976
3104
  /**
2977
3105
  * Array of errors explaining why creative generation failed
@@ -2979,18 +3107,20 @@ export type BuildCreativeResponse = {
2979
3107
  * @minItems 1
2980
3108
  */
2981
3109
  errors: [Error, ...Error[]];
2982
- /**
2983
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
2984
- */
2985
- context?: {};
3110
+ context?: ContextObject;
3111
+ ext?: ExtensionObject;
2986
3112
  };
2987
3113
  /**
2988
- * VAST (Video Ad Serving Template) tag for third-party video ad serving
3114
+ * Image asset with URL and dimensions
2989
3115
  */
2990
3116
  /**
2991
3117
  * Request to generate previews of one or more creative manifests. Accepts either a single creative request or an array of requests for batch processing.
2992
3118
  */
2993
3119
  export type PreviewCreativeRequest = {
3120
+ /**
3121
+ * Discriminator indicating this is a single preview request
3122
+ */
3123
+ request_type: 'single';
2994
3124
  format_id: FormatID;
2995
3125
  creative_manifest: CreativeManifest;
2996
3126
  /**
@@ -3016,15 +3146,14 @@ export type PreviewCreativeRequest = {
3016
3146
  * Specific template ID for custom format rendering
3017
3147
  */
3018
3148
  template_id?: string;
3149
+ output_format?: PreviewOutputFormat;
3150
+ context?: ContextObject;
3151
+ ext?: ExtensionObject;
3152
+ } | {
3019
3153
  /**
3020
- * Output format for previews. 'url' returns preview_url (iframe-embeddable URL), 'html' returns preview_html (raw HTML for direct embedding). Default: 'url' for backward compatibility.
3021
- */
3022
- output_format?: 'url' | 'html';
3023
- /**
3024
- * Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.
3154
+ * Discriminator indicating this is a batch preview request
3025
3155
  */
3026
- context?: {};
3027
- } | {
3156
+ request_type: 'batch';
3028
3157
  /**
3029
3158
  * Array of preview requests (1-50 items). Each follows the single request structure.
3030
3159
  *
@@ -3058,10 +3187,7 @@ export type PreviewCreativeRequest = {
3058
3187
  * Specific template ID for custom format rendering
3059
3188
  */
3060
3189
  template_id?: string;
3061
- /**
3062
- * Output format for this preview. 'url' returns preview_url, 'html' returns preview_html.
3063
- */
3064
- output_format?: 'url' | 'html';
3190
+ output_format?: PreviewOutputFormat1;
3065
3191
  },
3066
3192
  ...{
3067
3193
  format_id: FormatID2;
@@ -3089,23 +3215,27 @@ export type PreviewCreativeRequest = {
3089
3215
  * Specific template ID for custom format rendering
3090
3216
  */
3091
3217
  template_id?: string;
3092
- /**
3093
- * Output format for this preview. 'url' returns preview_url, 'html' returns preview_html.
3094
- */
3095
- output_format?: 'url' | 'html';
3218
+ output_format?: PreviewOutputFormat1;
3096
3219
  }[]
3097
3220
  ];
3098
- /**
3099
- * Default output format for all requests in this batch. Individual requests can override this. 'url' returns preview_url (iframe-embeddable URL), 'html' returns preview_html (raw HTML for direct embedding).
3100
- */
3101
- output_format?: 'url' | 'html';
3102
- /**
3103
- * Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.
3104
- */
3105
- context?: {};
3221
+ output_format?: PreviewOutputFormat2;
3222
+ context?: ContextObject;
3223
+ ext?: ExtensionObject;
3106
3224
  };
3107
3225
  /**
3108
- * VAST (Video Ad Serving Template) tag for third-party video ad serving
3226
+ * Image asset with URL and dimensions
3227
+ */
3228
+ export type PreviewOutputFormat = 'url' | 'html';
3229
+ /**
3230
+ * Output format for this preview. 'url' returns preview_url, 'html' returns preview_html.
3231
+ */
3232
+ export type PreviewOutputFormat1 = 'url' | 'html';
3233
+ /**
3234
+ * Default output format for all requests in this batch. Individual requests can override this. 'url' returns preview_url (iframe-embeddable URL), 'html' returns preview_html (raw HTML for direct embedding).
3235
+ */
3236
+ export type PreviewOutputFormat2 = 'url' | 'html';
3237
+ /**
3238
+ * Format identifier for rendering the preview
3109
3239
  */
3110
3240
  export interface CreativeManifest1 {
3111
3241
  format_id: FormatID1;
@@ -3125,11 +3255,16 @@ export interface CreativeManifest1 {
3125
3255
  */
3126
3256
  [k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset | PromotedOfferings;
3127
3257
  };
3258
+ ext?: ExtensionObject;
3128
3259
  }
3129
3260
  /**
3130
3261
  * Response containing preview links for one or more creatives. Format matches the request: single preview response for single requests, batch results for batch requests.
3131
3262
  */
3132
3263
  export type PreviewCreativeResponse = {
3264
+ /**
3265
+ * Discriminator indicating this is a single preview response
3266
+ */
3267
+ response_type: 'single';
3133
3268
  /**
3134
3269
  * Array of preview variants. Each preview corresponds to an input set from the request. If no inputs were provided, returns a single default preview.
3135
3270
  *
@@ -3207,11 +3342,13 @@ export type PreviewCreativeResponse = {
3207
3342
  * ISO 8601 timestamp when preview links expire
3208
3343
  */
3209
3344
  expires_at: string;
3345
+ context?: ContextObject;
3346
+ ext?: ExtensionObject;
3347
+ } | {
3210
3348
  /**
3211
- * Initiator-provided context echoed inside the preview payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
3349
+ * Discriminator indicating this is a batch preview response
3212
3350
  */
3213
- context?: {};
3214
- } | {
3351
+ response_type: 'batch';
3215
3352
  /**
3216
3353
  * Array of preview results corresponding to each request in the same order. results[0] is the result for requests[0], results[1] for requests[1], etc. Order is guaranteed even when some requests fail. Each result contains either a successful preview response or an error.
3217
3354
  *
@@ -3229,10 +3366,8 @@ export type PreviewCreativeResponse = {
3229
3366
  success?: false;
3230
3367
  })[]
3231
3368
  ];
3232
- /**
3233
- * Initiator-provided context echoed inside the preview payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
3234
- */
3235
- context?: {};
3369
+ context?: ContextObject;
3370
+ ext?: ExtensionObject;
3236
3371
  };
3237
3372
  /**
3238
3373
  * A single rendered piece of a creative preview with discriminated output format
@@ -3378,11 +3513,14 @@ export type PreviewRender = {
3378
3513
  };
3379
3514
  };
3380
3515
  /**
3381
- * A destination platform where signals can be activated (DSP, sales agent, etc.)
3516
+ * 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.
3517
+ */
3518
+ /**
3519
+ * A deployment target where signals can be activated (DSP, sales agent, etc.)
3382
3520
  */
3383
3521
  export type Destination = {
3384
3522
  /**
3385
- * Discriminator indicating this is a platform-based destination
3523
+ * Discriminator indicating this is a platform-based deployment
3386
3524
  */
3387
3525
  type: 'platform';
3388
3526
  /**
@@ -3395,11 +3533,11 @@ export type Destination = {
3395
3533
  account?: string;
3396
3534
  } | {
3397
3535
  /**
3398
- * Discriminator indicating this is an agent URL-based destination
3536
+ * Discriminator indicating this is an agent URL-based deployment
3399
3537
  */
3400
3538
  type: 'agent';
3401
3539
  /**
3402
- * URL identifying the destination agent (for sales agents, etc.)
3540
+ * URL identifying the deployment agent (for sales agents, etc.)
3403
3541
  */
3404
3542
  agent_url: string;
3405
3543
  /**
@@ -3407,6 +3545,10 @@ export type Destination = {
3407
3545
  */
3408
3546
  account?: string;
3409
3547
  };
3548
+ /**
3549
+ * Types of signal catalogs available for audience targeting
3550
+ */
3551
+ export type SignalCatalogType = 'marketplace' | 'custom' | 'owned';
3410
3552
  /**
3411
3553
  * Request parameters for discovering signals based on description
3412
3554
  */
@@ -3416,52 +3558,54 @@ export interface GetSignalsRequest {
3416
3558
  */
3417
3559
  signal_spec: string;
3418
3560
  /**
3419
- * Destination platforms where signals need to be activated
3561
+ * Deployment targets where signals need to be activated
3420
3562
  */
3421
3563
  deliver_to: {
3422
3564
  /**
3423
- * List of destination platforms (DSPs, sales agents, etc.). If the authenticated caller matches one of these destinations, activation keys will be included in the response.
3565
+ * List of deployment targets (DSPs, sales agents, etc.). If the authenticated caller matches one of these deployment targets, activation keys will be included in the response.
3424
3566
  *
3425
3567
  * @minItems 1
3426
3568
  */
3427
- destinations: [Destination, ...Destination[]];
3569
+ deployments: [Destination, ...Destination[]];
3428
3570
  /**
3429
3571
  * Countries where signals will be used (ISO codes)
3430
3572
  */
3431
3573
  countries: string[];
3432
3574
  };
3433
- /**
3434
- * Filters to refine results
3435
- */
3436
- filters?: {
3437
- /**
3438
- * Filter by catalog type
3439
- */
3440
- catalog_types?: ('marketplace' | 'custom' | 'owned')[];
3441
- /**
3442
- * Filter by specific data providers
3443
- */
3444
- data_providers?: string[];
3445
- /**
3446
- * Maximum CPM price filter
3447
- */
3448
- max_cpm?: number;
3449
- /**
3450
- * Minimum coverage requirement
3451
- */
3452
- min_coverage_percentage?: number;
3453
- };
3575
+ filters?: SignalFilters;
3454
3576
  /**
3455
3577
  * Maximum number of results to return
3456
3578
  */
3457
3579
  max_results?: number;
3580
+ context?: ContextObject;
3581
+ ext?: ExtensionObject;
3582
+ }
3583
+ /**
3584
+ * Filters to refine signal discovery results
3585
+ */
3586
+ export interface SignalFilters {
3587
+ /**
3588
+ * Filter by catalog type
3589
+ */
3590
+ catalog_types?: SignalCatalogType[];
3591
+ /**
3592
+ * Filter by specific data providers
3593
+ */
3594
+ data_providers?: string[];
3458
3595
  /**
3459
- * Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.
3596
+ * Maximum CPM price filter
3460
3597
  */
3461
- context?: {};
3598
+ max_cpm?: number;
3599
+ /**
3600
+ * Minimum coverage requirement
3601
+ */
3602
+ min_coverage_percentage?: number;
3462
3603
  }
3463
3604
  /**
3464
- * A signal deployment to a specific destination platform with activation status and key
3605
+ * 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
+ */
3607
+ /**
3608
+ * Type of signal
3465
3609
  */
3466
3610
  export type Deployment = {
3467
3611
  /**
@@ -3477,7 +3621,7 @@ export type Deployment = {
3477
3621
  */
3478
3622
  account?: string;
3479
3623
  /**
3480
- * Whether signal is currently active on this destination
3624
+ * Whether signal is currently active on this deployment
3481
3625
  */
3482
3626
  is_live: boolean;
3483
3627
  activation_key?: ActivationKey;
@@ -3495,7 +3639,7 @@ export type Deployment = {
3495
3639
  */
3496
3640
  type: 'agent';
3497
3641
  /**
3498
- * URL identifying the destination agent
3642
+ * URL identifying the deployment agent
3499
3643
  */
3500
3644
  agent_url: string;
3501
3645
  /**
@@ -3503,7 +3647,7 @@ export type Deployment = {
3503
3647
  */
3504
3648
  account?: string;
3505
3649
  /**
3506
- * Whether signal is currently active on this destination
3650
+ * Whether signal is currently active on this deployment
3507
3651
  */
3508
3652
  is_live: boolean;
3509
3653
  activation_key?: ActivationKey1;
@@ -3517,7 +3661,7 @@ export type Deployment = {
3517
3661
  deployed_at?: string;
3518
3662
  };
3519
3663
  /**
3520
- * The key to use for targeting. Only present if is_live=true AND requester has access to this destination.
3664
+ * The key to use for targeting. Only present if is_live=true AND requester has access to this deployment.
3521
3665
  */
3522
3666
  export type ActivationKey = {
3523
3667
  /**
@@ -3543,7 +3687,7 @@ export type ActivationKey = {
3543
3687
  value: string;
3544
3688
  };
3545
3689
  /**
3546
- * The key to use for targeting. Only present if is_live=true AND requester has access to this destination.
3690
+ * The key to use for targeting. Only present if is_live=true AND requester has access to this deployment.
3547
3691
  */
3548
3692
  export type ActivationKey1 = {
3549
3693
  /**
@@ -3588,10 +3732,7 @@ export interface GetSignalsResponse {
3588
3732
  * Detailed signal description
3589
3733
  */
3590
3734
  description: string;
3591
- /**
3592
- * Type of signal
3593
- */
3594
- signal_type: 'marketplace' | 'custom' | 'owned';
3735
+ signal_type: SignalCatalogType;
3595
3736
  /**
3596
3737
  * Name of the data provider
3597
3738
  */
@@ -3601,7 +3742,7 @@ export interface GetSignalsResponse {
3601
3742
  */
3602
3743
  coverage_percentage: number;
3603
3744
  /**
3604
- * Array of destination deployments
3745
+ * Array of deployment targets
3605
3746
  */
3606
3747
  deployments: Deployment[];
3607
3748
  /**
@@ -3622,16 +3763,14 @@ export interface GetSignalsResponse {
3622
3763
  * Task-specific errors and warnings (e.g., signal discovery or pricing issues)
3623
3764
  */
3624
3765
  errors?: Error[];
3625
- /**
3626
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
3627
- */
3628
- context?: {};
3766
+ context?: ContextObject;
3767
+ ext?: ExtensionObject;
3629
3768
  }
3630
3769
  /**
3631
3770
  * Standard error structure for task-specific errors and warnings
3632
3771
  */
3633
3772
  /**
3634
- * A destination platform where signals can be activated (DSP, sales agent, etc.)
3773
+ * A deployment target where signals can be activated (DSP, sales agent, etc.)
3635
3774
  */
3636
3775
  export interface ActivateSignalRequest {
3637
3776
  /**
@@ -3639,28 +3778,27 @@ export interface ActivateSignalRequest {
3639
3778
  */
3640
3779
  signal_agent_segment_id: string;
3641
3780
  /**
3642
- * Target destination(s) for activation. If the authenticated caller matches one of these destinations, activation keys will be included in the response.
3781
+ * Target deployment(s) for activation. If the authenticated caller matches one of these deployment targets, activation keys will be included in the response.
3643
3782
  *
3644
3783
  * @minItems 1
3645
3784
  */
3646
- destinations: [Destination, ...Destination[]];
3647
- /**
3648
- * Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.
3649
- */
3650
- context?: {};
3785
+ deployments: [Destination, ...Destination[]];
3786
+ context?: ContextObject;
3787
+ ext?: ExtensionObject;
3651
3788
  }
3789
+ /**
3790
+ * 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.
3791
+ */
3652
3792
  /**
3653
3793
  * Response payload for activate_signal task. Returns either complete success data OR error information, never both. This enforces atomic operation semantics - the signal is either fully activated or not activated at all.
3654
3794
  */
3655
3795
  export type ActivateSignalResponse = {
3656
3796
  /**
3657
- * Array of deployment results for each destination
3797
+ * Array of deployment results for each deployment target
3658
3798
  */
3659
3799
  deployments: Deployment[];
3660
- /**
3661
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
3662
- */
3663
- context?: {};
3800
+ context?: ContextObject;
3801
+ ext?: ExtensionObject;
3664
3802
  } | {
3665
3803
  /**
3666
3804
  * Array of errors explaining why activation failed (e.g., platform connectivity issues, signal definition problems, authentication failures)
@@ -3668,12 +3806,10 @@ export type ActivateSignalResponse = {
3668
3806
  * @minItems 1
3669
3807
  */
3670
3808
  errors: [Error, ...Error[]];
3671
- /**
3672
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
3673
- */
3674
- context?: {};
3809
+ context?: ContextObject;
3810
+ ext?: ExtensionObject;
3675
3811
  };
3676
3812
  /**
3677
- * A signal deployment to a specific destination platform with activation status and key
3813
+ * A signal deployment to a specific deployment target with activation status and key
3678
3814
  */
3679
3815
  //# sourceMappingURL=tools.generated.d.ts.map