@adcp/client 3.1.0 → 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 (56) 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/core/ADCPMultiAgentClient.d.ts +150 -41
  7. package/dist/lib/core/ADCPMultiAgentClient.d.ts.map +1 -1
  8. package/dist/lib/core/ADCPMultiAgentClient.js +150 -41
  9. package/dist/lib/core/ADCPMultiAgentClient.js.map +1 -1
  10. package/dist/lib/core/CreativeAgentClient.d.ts.map +1 -1
  11. package/dist/lib/core/CreativeAgentClient.js +6 -1
  12. package/dist/lib/core/CreativeAgentClient.js.map +1 -1
  13. package/dist/lib/core/ResponseValidator.d.ts.map +1 -1
  14. package/dist/lib/core/ResponseValidator.js +5 -6
  15. package/dist/lib/core/ResponseValidator.js.map +1 -1
  16. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  17. package/dist/lib/core/SingleAgentClient.js +3 -8
  18. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  19. package/dist/lib/core/TaskExecutor.d.ts +1 -1
  20. package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
  21. package/dist/lib/core/TaskExecutor.js +60 -61
  22. package/dist/lib/core/TaskExecutor.js.map +1 -1
  23. package/dist/lib/index.d.ts +30 -15
  24. package/dist/lib/index.d.ts.map +1 -1
  25. package/dist/lib/index.js +86 -26
  26. package/dist/lib/index.js.map +1 -1
  27. package/dist/lib/protocols/a2a.d.ts +2 -1
  28. package/dist/lib/protocols/a2a.d.ts.map +1 -1
  29. package/dist/lib/protocols/a2a.js +10 -2
  30. package/dist/lib/protocols/a2a.js.map +1 -1
  31. package/dist/lib/protocols/index.d.ts +12 -1
  32. package/dist/lib/protocols/index.d.ts.map +1 -1
  33. package/dist/lib/protocols/index.js +29 -14
  34. package/dist/lib/protocols/index.js.map +1 -1
  35. package/dist/lib/types/core.generated.d.ts +185 -163
  36. package/dist/lib/types/core.generated.d.ts.map +1 -1
  37. package/dist/lib/types/core.generated.js +2 -2
  38. package/dist/lib/types/schemas.generated.d.ts +3536 -3236
  39. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  40. package/dist/lib/types/schemas.generated.js +440 -365
  41. package/dist/lib/types/schemas.generated.js.map +1 -1
  42. package/dist/lib/types/tools.generated.d.ts +590 -565
  43. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  44. package/dist/lib/utils/index.d.ts +3 -0
  45. package/dist/lib/utils/index.d.ts.map +1 -1
  46. package/dist/lib/utils/index.js +10 -1
  47. package/dist/lib/utils/index.js.map +1 -1
  48. package/dist/lib/utils/response-unwrapper.d.ts +36 -0
  49. package/dist/lib/utils/response-unwrapper.d.ts.map +1 -0
  50. package/dist/lib/utils/response-unwrapper.js +331 -0
  51. package/dist/lib/utils/response-unwrapper.js.map +1 -0
  52. package/dist/lib/version.d.ts +13 -5
  53. package/dist/lib/version.d.ts.map +1 -1
  54. package/dist/lib/version.js +19 -5
  55. package/dist/lib/version.js.map +1 -1
  56. package/package.json +4 -6
@@ -10,6 +10,14 @@ export type AssetContentType = 'image' | 'video' | 'audio' | 'text' | 'markdown'
10
10
  * Type of inventory delivery
11
11
  */
12
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';
13
21
  /**
14
22
  * Request parameters for discovering available advertising products
15
23
  */
@@ -19,38 +27,9 @@ export interface GetProductsRequest {
19
27
  */
20
28
  brief?: string;
21
29
  brand_manifest?: BrandManifestReference;
22
- /**
23
- * Structured filters for product discovery
24
- */
25
- filters?: {
26
- delivery_type?: DeliveryType;
27
- /**
28
- * Filter for fixed price vs auction products
29
- */
30
- is_fixed_price?: boolean;
31
- /**
32
- * Filter by format types
33
- */
34
- format_types?: ('video' | 'display' | 'audio')[];
35
- /**
36
- * Filter by specific format IDs
37
- */
38
- format_ids?: FormatID[];
39
- /**
40
- * Only return products accepting IAB standard formats
41
- */
42
- standard_formats_only?: boolean;
43
- /**
44
- * Minimum exposures/impressions needed for measurement validity
45
- */
46
- min_exposures?: number;
47
- };
48
- /**
49
- * 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.
50
- */
51
- context?: {
52
- [k: string]: unknown;
53
- };
30
+ filters?: ProductFilters;
31
+ context?: ContextObject;
32
+ ext?: ExtensionObject;
54
33
  }
55
34
  /**
56
35
  * Inline brand manifest object
@@ -269,7 +248,55 @@ export interface BrandManifest {
269
248
  };
270
249
  }
271
250
  /**
272
- * 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.
273
300
  */
274
301
  export interface FormatID {
275
302
  /**
@@ -277,9 +304,33 @@ export interface FormatID {
277
304
  */
278
305
  agent_url: string;
279
306
  /**
280
- * 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.
281
308
  */
282
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;
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;
283
334
  }
284
335
  /**
285
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.
@@ -307,7 +358,7 @@ export type PublisherPropertySelector = {
307
358
  *
308
359
  * @minItems 1
309
360
  */
310
- property_ids: [string, ...string[]];
361
+ property_ids: [PropertyID, ...PropertyID[]];
311
362
  } | {
312
363
  /**
313
364
  * Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')
@@ -322,12 +373,36 @@ export type PublisherPropertySelector = {
322
373
  *
323
374
  * @minItems 1
324
375
  */
325
- property_tags: [string, ...string[]];
376
+ property_tags: [PropertyTag, ...PropertyTag[]];
326
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;
327
386
  /**
328
387
  * Type of inventory delivery
329
388
  */
330
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';
331
406
  /**
332
407
  * Response payload for get_products task
333
408
  */
@@ -340,10 +415,8 @@ export interface GetProductsResponse {
340
415
  * Task-specific errors and warnings (e.g., product filtering issues)
341
416
  */
342
417
  errors?: Error[];
343
- /**
344
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
345
- */
346
- context?: {};
418
+ context?: ContextObject;
419
+ ext?: ExtensionObject;
347
420
  }
348
421
  /**
349
422
  * Represents available advertising inventory
@@ -440,9 +513,10 @@ export interface Product {
440
513
  [k: string]: unknown;
441
514
  };
442
515
  };
516
+ ext?: ExtensionObject;
443
517
  }
444
518
  /**
445
- * 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.
446
520
  */
447
521
  export interface Placement {
448
522
  /**
@@ -458,7 +532,7 @@ export interface Placement {
458
532
  */
459
533
  description?: string;
460
534
  /**
461
- * 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).
462
536
  *
463
537
  * @minItems 1
464
538
  */
@@ -854,7 +928,7 @@ export interface ReportingCapabilities {
854
928
  *
855
929
  * @minItems 1
856
930
  */
857
- available_reporting_frequencies: ['hourly' | 'daily' | 'monthly', ...('hourly' | 'daily' | 'monthly')[]];
931
+ available_reporting_frequencies: [ReportingFrequency, ...ReportingFrequency[]];
858
932
  /**
859
933
  * Expected delay in minutes before reporting data becomes available (e.g., 240 for 4-hour delay)
860
934
  */
@@ -870,27 +944,21 @@ export interface ReportingCapabilities {
870
944
  /**
871
945
  * Metrics available in reporting. Impressions and spend are always implicitly included.
872
946
  */
873
- available_metrics: ('impressions' | 'spend' | 'clicks' | 'ctr' | 'video_completions' | 'completion_rate' | 'conversions' | 'viewability' | 'engagement_rate')[];
947
+ available_metrics: AvailableMetric[];
874
948
  }
875
949
  /**
876
950
  * Creative requirements and restrictions for a product
877
951
  */
878
952
  export interface CreativePolicy {
879
- /**
880
- * Co-branding requirement
881
- */
882
- co_branding: 'required' | 'optional' | 'none';
883
- /**
884
- * Landing page requirements
885
- */
886
- landing_page: 'any' | 'retailer_site_only' | 'must_include_retailer';
953
+ co_branding: CoBrandingRequirement;
954
+ landing_page: LandingPageRequirement;
887
955
  /**
888
956
  * Whether creative templates are provided
889
957
  */
890
958
  templates_available: boolean;
891
959
  }
892
960
  /**
893
- * 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.
894
962
  */
895
963
  export interface FormatID1 {
896
964
  /**
@@ -898,12 +966,24 @@ export interface FormatID1 {
898
966
  */
899
967
  agent_url: string;
900
968
  /**
901
- * 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.
902
970
  */
903
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;
904
984
  }
905
985
  /**
906
- * 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.
907
987
  */
908
988
  export interface FormatID2 {
909
989
  /**
@@ -911,12 +991,24 @@ export interface FormatID2 {
911
991
  */
912
992
  agent_url: string;
913
993
  /**
914
- * 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.
915
995
  */
916
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;
917
1009
  }
918
1010
  /**
919
- * 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.
920
1012
  */
921
1013
  export interface Error {
922
1014
  /**
@@ -947,11 +1039,10 @@ export interface Error {
947
1039
  };
948
1040
  }
949
1041
  /**
950
- * Filter by format type (technical categories with distinct requirements)
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.
951
1043
  */
952
- export type FormatCategory = 'audio' | 'video' | 'display' | 'native' | 'dooh' | 'rich_media' | 'universal';
953
1044
  /**
954
- * Types of content that can be used as creative assets. Describes what KIND of content an asset contains (image, video, code, etc.), not where it displays.
1045
+ * Filter by format type (technical categories with distinct requirements)
955
1046
  */
956
1047
  export interface ListCreativeFormatsRequest {
957
1048
  /**
@@ -987,20 +1078,24 @@ export interface ListCreativeFormatsRequest {
987
1078
  * Search for formats by name (case-insensitive partial match)
988
1079
  */
989
1080
  name_search?: string;
990
- /**
991
- * 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.
992
- */
993
- context?: {
994
- [k: string]: unknown;
995
- };
1081
+ context?: ContextObject;
1082
+ ext?: ExtensionObject;
996
1083
  }
997
1084
  /**
998
- * 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.
999
1086
  */
1000
1087
  /**
1001
1088
  * Media type of this format - determines rendering method and asset requirements
1002
1089
  */
1090
+ export type FormatIDParameter = 'dimensions' | 'duration';
1091
+ /**
1092
+ * Type of asset
1093
+ */
1003
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
1097
+ */
1098
+ export type CreativeAgentCapability = 'validation' | 'assembly' | 'generation' | 'preview';
1004
1099
  /**
1005
1100
  * Response payload for list_creative_formats task
1006
1101
  */
@@ -1024,16 +1119,14 @@ export interface ListCreativeFormatsResponse {
1024
1119
  /**
1025
1120
  * Capabilities this creative agent provides
1026
1121
  */
1027
- capabilities?: ('validation' | 'assembly' | 'generation' | 'preview')[];
1122
+ capabilities?: CreativeAgentCapability[];
1028
1123
  }[];
1029
1124
  /**
1030
1125
  * Task-specific errors and warnings (e.g., format availability issues)
1031
1126
  */
1032
1127
  errors?: Error[];
1033
- /**
1034
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
1035
- */
1036
- context?: {};
1128
+ context?: ContextObject;
1129
+ ext?: ExtensionObject;
1037
1130
  }
1038
1131
  /**
1039
1132
  * Represents a creative format with its requirements
@@ -1057,112 +1150,26 @@ export interface Format {
1057
1150
  */
1058
1151
  example_url?: string;
1059
1152
  type: FormatCategory;
1153
+ /**
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.
1155
+ */
1156
+ accepts_parameters?: FormatIDParameter[];
1060
1157
  /**
1061
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.
1062
1159
  *
1063
1160
  * @minItems 1
1064
1161
  */
1065
1162
  renders?: [
1066
- {
1067
- /**
1068
- * Semantic role of this rendered piece (e.g., 'primary', 'companion', 'mobile_variant')
1069
- */
1070
- role: string;
1071
- /**
1072
- * Dimensions for this rendered piece
1073
- */
1074
- dimensions: {
1075
- /**
1076
- * Fixed width in specified units
1077
- */
1078
- width?: number;
1079
- /**
1080
- * Fixed height in specified units
1081
- */
1082
- height?: number;
1083
- /**
1084
- * Minimum width for responsive renders
1085
- */
1086
- min_width?: number;
1087
- /**
1088
- * Minimum height for responsive renders
1089
- */
1090
- min_height?: number;
1091
- /**
1092
- * Maximum width for responsive renders
1093
- */
1094
- max_width?: number;
1095
- /**
1096
- * Maximum height for responsive renders
1097
- */
1098
- max_height?: number;
1099
- /**
1100
- * Indicates which dimensions are responsive/fluid
1101
- */
1102
- responsive?: {
1103
- width: boolean;
1104
- height: boolean;
1105
- };
1106
- /**
1107
- * Fixed aspect ratio constraint (e.g., '16:9', '4:3', '1:1')
1108
- */
1109
- aspect_ratio?: string;
1110
- /**
1111
- * Unit of measurement for dimensions
1112
- */
1113
- unit: 'px' | 'dp' | 'inches' | 'cm';
1114
- };
1115
- },
1116
- ...{
1117
- /**
1118
- * Semantic role of this rendered piece (e.g., 'primary', 'companion', 'mobile_variant')
1119
- */
1120
- role: string;
1121
- /**
1122
- * Dimensions for this rendered piece
1123
- */
1124
- dimensions: {
1125
- /**
1126
- * Fixed width in specified units
1127
- */
1128
- width?: number;
1129
- /**
1130
- * Fixed height in specified units
1131
- */
1132
- height?: number;
1133
- /**
1134
- * Minimum width for responsive renders
1135
- */
1136
- min_width?: number;
1137
- /**
1138
- * Minimum height for responsive renders
1139
- */
1140
- min_height?: number;
1141
- /**
1142
- * Maximum width for responsive renders
1143
- */
1144
- max_width?: number;
1145
- /**
1146
- * Maximum height for responsive renders
1147
- */
1148
- max_height?: number;
1149
- /**
1150
- * Indicates which dimensions are responsive/fluid
1151
- */
1152
- responsive?: {
1153
- width: boolean;
1154
- height: boolean;
1155
- };
1156
- /**
1157
- * Fixed aspect ratio constraint (e.g., '16:9', '4:3', '1:1')
1158
- */
1159
- aspect_ratio?: string;
1160
- /**
1161
- * Unit of measurement for dimensions
1162
- */
1163
- unit: 'px' | 'dp' | 'inches' | 'cm';
1164
- };
1165
- }[]
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
+ })[]
1166
1173
  ];
1167
1174
  /**
1168
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).
@@ -1186,7 +1193,7 @@ export interface Format {
1186
1193
  */
1187
1194
  required?: boolean;
1188
1195
  /**
1189
- * 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).
1190
1197
  */
1191
1198
  requirements?: {
1192
1199
  [k: string]: unknown;
@@ -1226,7 +1233,7 @@ export interface Format {
1226
1233
  */
1227
1234
  required?: boolean;
1228
1235
  /**
1229
- * 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).
1230
1237
  */
1231
1238
  requirements?: {
1232
1239
  [k: string]: unknown;
@@ -1281,9 +1288,21 @@ export interface FormatID3 {
1281
1288
  */
1282
1289
  agent_url: string;
1283
1290
  /**
1284
- * 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.
1285
1292
  */
1286
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;
1287
1306
  }
1288
1307
  /**
1289
1308
  * Standard error structure for task-specific errors and warnings
@@ -1292,6 +1311,48 @@ export interface FormatID3 {
1292
1311
  * Budget pacing strategy
1293
1312
  */
1294
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';
1295
1356
  /**
1296
1357
  * VAST (Video Ad Serving Template) tag for third-party video ad serving
1297
1358
  */
@@ -1304,10 +1365,7 @@ export type VASTAsset = {
1304
1365
  * URL endpoint that returns VAST XML
1305
1366
  */
1306
1367
  url: string;
1307
- /**
1308
- * VAST specification version
1309
- */
1310
- vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2';
1368
+ vast_version?: VASTVersion;
1311
1369
  /**
1312
1370
  * Whether VPAID (Video Player-Ad Interface Definition) is supported
1313
1371
  */
@@ -1319,7 +1377,7 @@ export type VASTAsset = {
1319
1377
  /**
1320
1378
  * Tracking events supported by this VAST tag
1321
1379
  */
1322
- tracking_events?: ('start' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'complete' | 'impression' | 'click' | 'pause' | 'resume' | 'skip' | 'mute' | 'unmute' | 'fullscreen' | 'exitFullscreen' | 'playerExpand' | 'playerCollapse')[];
1380
+ tracking_events?: VASTTrackingEvent[];
1323
1381
  } | {
1324
1382
  /**
1325
1383
  * Discriminator indicating VAST is delivered as inline XML content
@@ -1329,10 +1387,7 @@ export type VASTAsset = {
1329
1387
  * Inline VAST XML content
1330
1388
  */
1331
1389
  content: string;
1332
- /**
1333
- * VAST specification version
1334
- */
1335
- vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2';
1390
+ vast_version?: VASTVersion1;
1336
1391
  /**
1337
1392
  * Whether VPAID (Video Player-Ad Interface Definition) is supported
1338
1393
  */
@@ -1344,8 +1399,20 @@ export type VASTAsset = {
1344
1399
  /**
1345
1400
  * Tracking events supported by this VAST tag
1346
1401
  */
1347
- tracking_events?: ('start' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'complete' | 'impression' | 'click' | 'pause' | 'resume' | 'skip' | 'mute' | 'unmute' | 'fullscreen' | 'exitFullscreen' | 'playerExpand' | 'playerCollapse')[];
1402
+ tracking_events?: VASTTrackingEvent[];
1348
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';
1349
1416
  /**
1350
1417
  * DAAST (Digital Audio Ad Serving Template) tag for third-party audio ad serving
1351
1418
  */
@@ -1358,10 +1425,7 @@ export type DAASTAsset = {
1358
1425
  * URL endpoint that returns DAAST XML
1359
1426
  */
1360
1427
  url: string;
1361
- /**
1362
- * DAAST specification version
1363
- */
1364
- daast_version?: '1.0' | '1.1';
1428
+ daast_version?: DAASTVersion;
1365
1429
  /**
1366
1430
  * Expected audio duration in milliseconds (if known)
1367
1431
  */
@@ -1369,7 +1433,7 @@ export type DAASTAsset = {
1369
1433
  /**
1370
1434
  * Tracking events supported by this DAAST tag
1371
1435
  */
1372
- tracking_events?: ('start' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'complete' | 'impression' | 'pause' | 'resume' | 'skip' | 'mute' | 'unmute')[];
1436
+ tracking_events?: DAASTTrackingEvent[];
1373
1437
  /**
1374
1438
  * Whether companion display ads are included
1375
1439
  */
@@ -1383,10 +1447,7 @@ export type DAASTAsset = {
1383
1447
  * Inline DAAST XML content
1384
1448
  */
1385
1449
  content: string;
1386
- /**
1387
- * DAAST specification version
1388
- */
1389
- daast_version?: '1.0' | '1.1';
1450
+ daast_version?: DAASTVersion1;
1390
1451
  /**
1391
1452
  * Expected audio duration in milliseconds (if known)
1392
1453
  */
@@ -1394,20 +1455,40 @@ export type DAASTAsset = {
1394
1455
  /**
1395
1456
  * Tracking events supported by this DAAST tag
1396
1457
  */
1397
- tracking_events?: ('start' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'complete' | 'impression' | 'pause' | 'resume' | 'skip' | 'mute' | 'unmute')[];
1458
+ tracking_events?: DAASTTrackingEvent[];
1398
1459
  /**
1399
1460
  * Whether companion display ads are included
1400
1461
  */
1401
1462
  companion_ads?: boolean;
1402
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';
1403
1476
  /**
1404
1477
  * Brand information manifest containing assets, themes, and guidelines. Can be provided inline or as a URL reference to a hosted manifest.
1405
1478
  */
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
+ */
1406
1483
  export type BrandManifestReference1 = BrandManifest | string;
1407
1484
  /**
1408
1485
  * Campaign start timing: 'asap' or ISO 8601 date-time
1409
1486
  */
1410
1487
  export type StartTiming = 'asap' | string;
1488
+ /**
1489
+ * Authentication schemes for push notification endpoints
1490
+ */
1491
+ export type AuthenticationScheme = 'Bearer' | 'HMAC-SHA256';
1411
1492
  /**
1412
1493
  * Request parameters for creating a media buy
1413
1494
  */
@@ -1440,12 +1521,8 @@ export interface CreateMediaBuyRequest {
1440
1521
  */
1441
1522
  requested_metrics?: ('impressions' | 'spend' | 'clicks' | 'ctr' | 'video_completions' | 'completion_rate' | 'conversions' | 'viewability' | 'engagement_rate')[];
1442
1523
  };
1443
- /**
1444
- * 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.
1445
- */
1446
- context?: {
1447
- [k: string]: unknown;
1448
- };
1524
+ context?: ContextObject;
1525
+ ext?: ExtensionObject;
1449
1526
  }
1450
1527
  /**
1451
1528
  * Package configuration for media buy creation
@@ -1489,9 +1566,10 @@ export interface PackageRequest {
1489
1566
  * @maxItems 100
1490
1567
  */
1491
1568
  creatives?: CreativeAsset[];
1569
+ ext?: ExtensionObject;
1492
1570
  }
1493
1571
  /**
1494
- * 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.
1495
1573
  */
1496
1574
  export interface TargetingOverlay {
1497
1575
  /**
@@ -1579,60 +1657,29 @@ export interface CreativeAsset {
1579
1657
  * For generative creatives: set to true to approve and finalize, false to request regeneration with updated assets/message. Omit for non-generative creatives.
1580
1658
  */
1581
1659
  approved?: boolean;
1582
- }
1583
- /**
1584
- * Structured format identifier with agent URL and format name
1585
- */
1586
- export interface ImageAsset {
1587
- /**
1588
- * URL to the image asset
1589
- */
1590
- url: string;
1591
1660
  /**
1592
- * Image width in pixels
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.
1593
1662
  */
1594
- width?: number;
1595
- /**
1596
- * Image height in pixels
1597
- */
1598
- height?: number;
1599
- /**
1600
- * Image file format (jpg, png, gif, webp, etc.)
1601
- */
1602
- format?: string;
1663
+ weight?: number;
1603
1664
  /**
1604
- * 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
1605
1668
  */
1606
- alt_text?: string;
1669
+ placement_ids?: [string, ...string[]];
1607
1670
  }
1608
1671
  /**
1609
- * 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.
1610
1673
  */
1611
- export interface VideoAsset {
1612
- /**
1613
- * URL to the video asset
1614
- */
1615
- url: string;
1616
- /**
1617
- * Video width in pixels
1618
- */
1619
- width?: number;
1674
+ export interface Dimensions {
1620
1675
  /**
1621
- * Video height in pixels
1676
+ * Width in pixels
1622
1677
  */
1623
- height?: number;
1678
+ width: number;
1624
1679
  /**
1625
- * Video duration in milliseconds
1680
+ * Height in pixels
1626
1681
  */
1627
- duration_ms?: number;
1628
- /**
1629
- * Video file format (mp4, webm, mov, etc.)
1630
- */
1631
- format?: string;
1632
- /**
1633
- * Video bitrate in kilobits per second
1634
- */
1635
- bitrate_kbps?: number;
1682
+ height: number;
1636
1683
  }
1637
1684
  /**
1638
1685
  * Audio asset with URL and specifications
@@ -1702,10 +1749,7 @@ export interface JavaScriptAsset {
1702
1749
  * JavaScript content
1703
1750
  */
1704
1751
  content: string;
1705
- /**
1706
- * JavaScript module type
1707
- */
1708
- module_type?: 'esm' | 'commonjs' | 'script';
1752
+ module_type?: JavaScriptModuleType;
1709
1753
  }
1710
1754
  /**
1711
1755
  * Complete offering specification combining brand manifest, product selectors, and asset filters. Provides all context needed for creative generation about what is being promoted.
@@ -1779,17 +1823,14 @@ export interface URLAsset {
1779
1823
  * URL reference
1780
1824
  */
1781
1825
  url: string;
1782
- /**
1783
- * 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)
1784
- */
1785
- url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script';
1826
+ url_type?: URLAssetType;
1786
1827
  /**
1787
1828
  * Description of what this URL points to
1788
1829
  */
1789
1830
  description?: string;
1790
1831
  }
1791
1832
  /**
1792
- * 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.
1793
1834
  */
1794
1835
  export interface PushNotificationConfig {
1795
1836
  /**
@@ -1810,13 +1851,16 @@ export interface PushNotificationConfig {
1810
1851
  * @minItems 1
1811
1852
  * @maxItems 1
1812
1853
  */
1813
- schemes: ['Bearer' | 'HMAC-SHA256'];
1854
+ schemes: [AuthenticationScheme];
1814
1855
  /**
1815
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.
1816
1857
  */
1817
1858
  credentials: string;
1818
1859
  };
1819
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
+ */
1820
1864
  /**
1821
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.
1822
1866
  */
@@ -1837,10 +1881,8 @@ export type CreateMediaBuyResponse = {
1837
1881
  * Array of created packages with complete state information
1838
1882
  */
1839
1883
  packages: Package[];
1840
- /**
1841
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
1842
- */
1843
- context?: {};
1884
+ context?: ContextObject;
1885
+ ext?: ExtensionObject;
1844
1886
  } | {
1845
1887
  /**
1846
1888
  * Array of errors explaining why the operation failed
@@ -1848,18 +1890,12 @@ export type CreateMediaBuyResponse = {
1848
1890
  * @minItems 1
1849
1891
  */
1850
1892
  errors: [Error, ...Error[]];
1851
- /**
1852
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
1853
- */
1854
- context?: {};
1893
+ context?: ContextObject;
1894
+ ext?: ExtensionObject;
1855
1895
  };
1856
1896
  /**
1857
1897
  * Budget pacing strategy
1858
1898
  */
1859
- export type PackageStatus = 'draft' | 'active' | 'paused' | 'completed';
1860
- /**
1861
- * A specific product within a media buy (line item)
1862
- */
1863
1899
  export interface Package {
1864
1900
  /**
1865
1901
  * Publisher's unique identifier for the package
@@ -1899,7 +1935,11 @@ export interface Package {
1899
1935
  * Format IDs that creative assets will be provided for this package
1900
1936
  */
1901
1937
  format_ids_to_provide?: FormatID[];
1902
- status: PackageStatus;
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;
1903
1943
  }
1904
1944
  /**
1905
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).
@@ -1921,10 +1961,14 @@ export interface CreativeAssignment {
1921
1961
  placement_ids?: [string, ...string[]];
1922
1962
  }
1923
1963
  /**
1924
- * Structured format identifier with agent URL and format name
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.
1925
1965
  */
1926
1966
  /**
1927
- * VAST (Video Ad Serving Template) tag for third-party video ad serving
1967
+ * Image asset with URL and dimensions
1968
+ */
1969
+ export type ValidationMode = 'strict' | 'lenient';
1970
+ /**
1971
+ * Authentication schemes for push notification endpoints
1928
1972
  */
1929
1973
  export interface SyncCreativesRequest {
1930
1974
  /**
@@ -1934,9 +1978,11 @@ export interface SyncCreativesRequest {
1934
1978
  */
1935
1979
  creatives: CreativeAsset[];
1936
1980
  /**
1937
- * 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
1938
1984
  */
1939
- patch?: boolean;
1985
+ creative_ids?: string[];
1940
1986
  /**
1941
1987
  * Optional bulk assignment of creatives to packages
1942
1988
  */
@@ -1954,20 +2000,13 @@ export interface SyncCreativesRequest {
1954
2000
  */
1955
2001
  delete_missing?: boolean;
1956
2002
  /**
1957
- * When true, preview changes without applying them. Returns what would be created/updated/deleted.
1958
- */
1959
- dry_run?: boolean;
1960
- /**
1961
- * Validation strictness. 'strict' fails entire sync on any validation error. 'lenient' processes valid creatives and reports errors.
1962
- */
1963
- validation_mode?: 'strict' | 'lenient';
1964
- push_notification_config?: PushNotificationConfig;
1965
- /**
1966
- * 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.
2003
+ * When true, preview changes without applying them. Returns what would be created/updated/deleted.
1967
2004
  */
1968
- context?: {
1969
- [k: string]: unknown;
1970
- };
2005
+ dry_run?: boolean;
2006
+ validation_mode?: ValidationMode;
2007
+ push_notification_config?: PushNotificationConfig;
2008
+ context?: ContextObject;
2009
+ ext?: ExtensionObject;
1971
2010
  }
1972
2011
  /**
1973
2012
  * Creative asset for upload to library - supports static assets, generative formats, and third-party snippets
@@ -1988,10 +2027,7 @@ export type SyncCreativesResponse = {
1988
2027
  * Creative ID from the request
1989
2028
  */
1990
2029
  creative_id: string;
1991
- /**
1992
- * Action taken for this creative
1993
- */
1994
- action: 'created' | 'updated' | 'unchanged' | 'failed' | 'deleted';
2030
+ action: CreativeAction;
1995
2031
  /**
1996
2032
  * Platform-specific ID assigned to the creative
1997
2033
  */
@@ -2033,10 +2069,8 @@ export type SyncCreativesResponse = {
2033
2069
  [k: string]: string;
2034
2070
  };
2035
2071
  }[];
2036
- /**
2037
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
2038
- */
2039
- context?: {};
2072
+ context?: ContextObject;
2073
+ ext?: ExtensionObject;
2040
2074
  } | {
2041
2075
  /**
2042
2076
  * Operation-level errors that prevented processing any creatives (e.g., authentication failure, service unavailable, invalid request format)
@@ -2044,13 +2078,15 @@ export type SyncCreativesResponse = {
2044
2078
  * @minItems 1
2045
2079
  */
2046
2080
  errors: [Error, ...Error[]];
2047
- /**
2048
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
2049
- */
2050
- context?: {};
2081
+ context?: ContextObject;
2082
+ ext?: ExtensionObject;
2051
2083
  };
2052
2084
  /**
2053
- * 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.
2054
2090
  */
2055
2091
  /**
2056
2092
  * Filter by creative approval status
@@ -2060,90 +2096,25 @@ export type CreativeStatus = 'processing' | 'approved' | 'rejected' | 'pending_r
2060
2096
  * Status of a creative asset
2061
2097
  */
2062
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';
2063
2107
  /**
2064
2108
  * Request parameters for querying creative assets from the centralized library with filtering, sorting, and pagination
2065
2109
  */
2066
2110
  export interface ListCreativesRequest {
2067
- /**
2068
- * Filter criteria for querying creatives
2069
- */
2070
- filters?: {
2071
- /**
2072
- * Filter by creative format type (e.g., video, audio, display)
2073
- */
2074
- format?: string;
2075
- /**
2076
- * Filter by multiple creative format types
2077
- */
2078
- formats?: string[];
2079
- status?: CreativeStatus;
2080
- /**
2081
- * Filter by multiple creative statuses
2082
- */
2083
- statuses?: CreativeStatus1[];
2084
- /**
2085
- * Filter by creative tags (all tags must match)
2086
- */
2087
- tags?: string[];
2088
- /**
2089
- * Filter by creative tags (any tag must match)
2090
- */
2091
- tags_any?: string[];
2092
- /**
2093
- * Filter by creative names containing this text (case-insensitive)
2094
- */
2095
- name_contains?: string;
2096
- /**
2097
- * Filter by specific creative IDs
2098
- *
2099
- * @maxItems 100
2100
- */
2101
- creative_ids?: string[];
2102
- /**
2103
- * Filter creatives created after this date (ISO 8601)
2104
- */
2105
- created_after?: string;
2106
- /**
2107
- * Filter creatives created before this date (ISO 8601)
2108
- */
2109
- created_before?: string;
2110
- /**
2111
- * Filter creatives last updated after this date (ISO 8601)
2112
- */
2113
- updated_after?: string;
2114
- /**
2115
- * Filter creatives last updated before this date (ISO 8601)
2116
- */
2117
- updated_before?: string;
2118
- /**
2119
- * Filter creatives assigned to this specific package
2120
- */
2121
- assigned_to_package?: string;
2122
- /**
2123
- * Filter creatives assigned to any of these packages
2124
- */
2125
- assigned_to_packages?: string[];
2126
- /**
2127
- * Filter for unassigned creatives when true, assigned creatives when false
2128
- */
2129
- unassigned?: boolean;
2130
- /**
2131
- * Filter creatives that have performance data when true
2132
- */
2133
- has_performance_data?: boolean;
2134
- };
2111
+ filters?: CreativeFilters;
2135
2112
  /**
2136
2113
  * Sorting parameters
2137
2114
  */
2138
2115
  sort?: {
2139
- /**
2140
- * Field to sort by
2141
- */
2142
- field?: 'created_date' | 'updated_date' | 'name' | 'status' | 'assignment_count' | 'performance_score';
2143
- /**
2144
- * Sort direction
2145
- */
2146
- direction?: 'asc' | 'desc';
2116
+ field?: CreativeSortField;
2117
+ direction?: SortDirection;
2147
2118
  };
2148
2119
  /**
2149
2120
  * Pagination parameters
@@ -2174,15 +2145,90 @@ export interface ListCreativesRequest {
2174
2145
  * Specific fields to include in response (omit for all fields)
2175
2146
  */
2176
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 {
2177
2155
  /**
2178
- * 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.
2156
+ * Filter by creative format type (e.g., video, audio, display)
2179
2157
  */
2180
- context?: {
2181
- [k: string]: unknown;
2182
- };
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[];
2168
+ /**
2169
+ * Filter by creative tags (all tags must match)
2170
+ */
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;
2183
2226
  }
2184
2227
  /**
2185
- * 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
2186
2232
  */
2187
2233
  export type SubAsset = {
2188
2234
  /**
@@ -2244,7 +2290,7 @@ export interface ListCreativesResponse {
2244
2290
  */
2245
2291
  sort_applied?: {
2246
2292
  field?: string;
2247
- direction?: 'asc' | 'desc';
2293
+ direction?: SortDirection;
2248
2294
  };
2249
2295
  };
2250
2296
  /**
@@ -2405,10 +2451,8 @@ export interface ListCreativesResponse {
2405
2451
  */
2406
2452
  archived?: number;
2407
2453
  };
2408
- /**
2409
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
2410
- */
2411
- context?: {};
2454
+ context?: ContextObject;
2455
+ ext?: ExtensionObject;
2412
2456
  }
2413
2457
  /**
2414
2458
  * Format identifier specifying which format this creative conforms to
@@ -2433,9 +2477,9 @@ export interface UpdateMediaBuyRequest1 {
2433
2477
  */
2434
2478
  buyer_ref?: string;
2435
2479
  /**
2436
- * Pause/resume the entire media buy
2480
+ * Pause/resume the entire media buy (true = paused, false = active)
2437
2481
  */
2438
- active?: boolean;
2482
+ paused?: boolean;
2439
2483
  start_time?: StartTiming;
2440
2484
  /**
2441
2485
  * New end date/time in ISO 8601 format
@@ -2450,12 +2494,8 @@ export interface UpdateMediaBuyRequest1 {
2450
2494
  [k: string]: unknown;
2451
2495
  })[];
2452
2496
  push_notification_config?: PushNotificationConfig;
2453
- /**
2454
- * 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.
2455
- */
2456
- context?: {
2457
- [k: string]: unknown;
2458
- };
2497
+ context?: ContextObject;
2498
+ ext?: ExtensionObject;
2459
2499
  }
2460
2500
  /**
2461
2501
  * Optional webhook configuration for async update notifications. Publisher will send webhook when update completes if operation takes longer than immediate response time.
@@ -2480,10 +2520,8 @@ export type UpdateMediaBuyResponse = {
2480
2520
  * Array of packages that were modified with complete state information
2481
2521
  */
2482
2522
  affected_packages?: Package[];
2483
- /**
2484
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
2485
- */
2486
- context?: {};
2523
+ context?: ContextObject;
2524
+ ext?: ExtensionObject;
2487
2525
  } | {
2488
2526
  /**
2489
2527
  * Array of errors explaining why the operation failed
@@ -2491,14 +2529,16 @@ export type UpdateMediaBuyResponse = {
2491
2529
  * @minItems 1
2492
2530
  */
2493
2531
  errors: [Error, ...Error[]];
2494
- /**
2495
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
2496
- */
2497
- context?: {};
2532
+ context?: ContextObject;
2533
+ ext?: ExtensionObject;
2498
2534
  };
2499
2535
  /**
2500
2536
  * Budget pacing strategy
2501
2537
  */
2538
+ /**
2539
+ * Status of a media buy
2540
+ */
2541
+ export type MediaBuyStatus = 'pending_activation' | 'active' | 'paused' | 'completed';
2502
2542
  /**
2503
2543
  * Request parameters for retrieving comprehensive delivery metrics
2504
2544
  */
@@ -2514,7 +2554,7 @@ export interface GetMediaBuyDeliveryRequest {
2514
2554
  /**
2515
2555
  * Filter by status. Can be a single status or array of statuses
2516
2556
  */
2517
- status_filter?: ('active' | 'pending' | 'paused' | 'completed' | 'failed' | 'all') | ('active' | 'pending' | 'paused' | 'completed' | 'failed')[];
2557
+ status_filter?: MediaBuyStatus | MediaBuyStatus[];
2518
2558
  /**
2519
2559
  * Start date for reporting period (YYYY-MM-DD)
2520
2560
  */
@@ -2523,13 +2563,12 @@ export interface GetMediaBuyDeliveryRequest {
2523
2563
  * End date for reporting period (YYYY-MM-DD)
2524
2564
  */
2525
2565
  end_date?: string;
2526
- /**
2527
- * 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.
2528
- */
2529
- context?: {
2530
- [k: string]: unknown;
2531
- };
2566
+ context?: ContextObject;
2567
+ ext?: ExtensionObject;
2532
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
+ */
2533
2572
  /**
2534
2573
  * Pricing model used for this media buy
2535
2574
  */
@@ -2660,6 +2699,14 @@ export interface GetMediaBuyDeliveryResponse {
2660
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.
2661
2700
  */
2662
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;
2663
2710
  })[];
2664
2711
  /**
2665
2712
  * Day-by-day delivery
@@ -2683,10 +2730,8 @@ export interface GetMediaBuyDeliveryResponse {
2683
2730
  * Task-specific errors and warnings (e.g., missing delivery data, reporting platform issues)
2684
2731
  */
2685
2732
  errors?: Error[];
2686
- /**
2687
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
2688
- */
2689
- context?: {};
2733
+ context?: ContextObject;
2734
+ ext?: ExtensionObject;
2690
2735
  }
2691
2736
  /**
2692
2737
  * Standard delivery metrics that can be reported at media buy, package, or creative level
@@ -2830,19 +2875,14 @@ export interface ListAuthorizedPropertiesRequest {
2830
2875
  * @minItems 1
2831
2876
  */
2832
2877
  publisher_domains?: [string, ...string[]];
2833
- /**
2834
- * 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.
2835
- */
2836
- context?: {
2837
- [k: string]: unknown;
2838
- };
2878
+ context?: ContextObject;
2879
+ ext?: ExtensionObject;
2839
2880
  }
2840
2881
  /**
2841
- * 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.
2842
2883
  */
2843
- export type AdvertisingChannels = 'display' | 'video' | 'audio' | 'native' | 'dooh' | 'ctv' | 'podcast' | 'retail' | 'social';
2844
2884
  /**
2845
- * 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
2846
2886
  */
2847
2887
  export interface ListAuthorizedPropertiesResponse {
2848
2888
  /**
@@ -2879,10 +2919,8 @@ export interface ListAuthorizedPropertiesResponse {
2879
2919
  * Task-specific errors and warnings (e.g., property availability issues)
2880
2920
  */
2881
2921
  errors?: Error[];
2882
- /**
2883
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
2884
- */
2885
- context?: {};
2922
+ context?: ContextObject;
2923
+ ext?: ExtensionObject;
2886
2924
  }
2887
2925
  /**
2888
2926
  * Standard error structure for task-specific errors and warnings
@@ -2890,15 +2928,31 @@ export interface ListAuthorizedPropertiesResponse {
2890
2928
  /**
2891
2929
  * Request payload for provide_performance_feedback task
2892
2930
  */
2893
- 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 {
2894
2944
  /**
2895
2945
  * Publisher's media buy identifier
2896
2946
  */
2897
- media_buy_id: string;
2947
+ media_buy_id?: string;
2948
+ /**
2949
+ * Buyer's reference for the media buy
2950
+ */
2951
+ buyer_ref?: string;
2898
2952
  /**
2899
2953
  * Time period for performance measurement
2900
2954
  */
2901
- measurement_period: {
2955
+ measurement_period?: {
2902
2956
  /**
2903
2957
  * ISO 8601 start timestamp for measurement period
2904
2958
  */
@@ -2911,7 +2965,7 @@ export interface ProvidePerformanceFeedbackRequest {
2911
2965
  /**
2912
2966
  * Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expected)
2913
2967
  */
2914
- performance_index: number;
2968
+ performance_index?: number;
2915
2969
  /**
2916
2970
  * Specific package within the media buy (if feedback is package-specific)
2917
2971
  */
@@ -2920,21 +2974,14 @@ export interface ProvidePerformanceFeedbackRequest {
2920
2974
  * Specific creative asset (if feedback is creative-specific)
2921
2975
  */
2922
2976
  creative_id?: string;
2923
- /**
2924
- * The business metric being measured
2925
- */
2926
- metric_type?: 'overall_performance' | 'conversion_rate' | 'brand_lift' | 'click_through_rate' | 'completion_rate' | 'viewability' | 'brand_safety' | 'cost_efficiency';
2927
- /**
2928
- * Source of the performance data
2929
- */
2930
- feedback_source?: 'buyer_attribution' | 'third_party_measurement' | 'platform_analytics' | 'verification_partner';
2931
- /**
2932
- * 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.
2933
- */
2934
- context?: {
2935
- [k: string]: unknown;
2936
- };
2977
+ metric_type?: MetricType;
2978
+ feedback_source?: FeedbackSource;
2979
+ context?: ContextObject;
2980
+ ext?: ExtensionObject;
2937
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
+ */
2938
2985
  /**
2939
2986
  * Response payload for provide_performance_feedback task. Returns either success confirmation OR error information, never both.
2940
2987
  */
@@ -2943,10 +2990,8 @@ export type ProvidePerformanceFeedbackResponse = {
2943
2990
  * Whether the performance feedback was successfully received
2944
2991
  */
2945
2992
  success: true;
2946
- /**
2947
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
2948
- */
2949
- context?: {};
2993
+ context?: ContextObject;
2994
+ ext?: ExtensionObject;
2950
2995
  } | {
2951
2996
  /**
2952
2997
  * Array of errors explaining why feedback was rejected (e.g., invalid measurement period, missing campaign data)
@@ -2954,16 +2999,26 @@ export type ProvidePerformanceFeedbackResponse = {
2954
2999
  * @minItems 1
2955
3000
  */
2956
3001
  errors: [Error, ...Error[]];
2957
- /**
2958
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
2959
- */
2960
- context?: {};
3002
+ context?: ContextObject;
3003
+ ext?: ExtensionObject;
2961
3004
  };
2962
3005
  /**
2963
- * 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.
2964
3007
  */
2965
3008
  /**
2966
- * 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
2967
3022
  */
2968
3023
  export interface BuildCreativeRequest {
2969
3024
  /**
@@ -2972,12 +3027,8 @@ export interface BuildCreativeRequest {
2972
3027
  message?: string;
2973
3028
  creative_manifest?: CreativeManifest;
2974
3029
  target_format_id: FormatID1;
2975
- /**
2976
- * 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.
2977
- */
2978
- context?: {
2979
- [k: string]: unknown;
2980
- };
3030
+ context?: ContextObject;
3031
+ ext?: ExtensionObject;
2981
3032
  }
2982
3033
  /**
2983
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.
@@ -3000,19 +3051,17 @@ export interface CreativeManifest {
3000
3051
  */
3001
3052
  [k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset | PromotedOfferings;
3002
3053
  };
3054
+ ext?: ExtensionObject;
3003
3055
  }
3004
3056
  /**
3005
- * 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'}).
3006
3058
  */
3007
3059
  export interface WebhookAsset {
3008
3060
  /**
3009
3061
  * Webhook URL to call for dynamic content
3010
3062
  */
3011
3063
  url: string;
3012
- /**
3013
- * HTTP method
3014
- */
3015
- method?: 'GET' | 'POST';
3064
+ method?: HTTPMethod;
3016
3065
  /**
3017
3066
  * Maximum time to wait for response in milliseconds
3018
3067
  */
@@ -3025,18 +3074,12 @@ export interface WebhookAsset {
3025
3074
  * Universal macros that must be provided for webhook to function
3026
3075
  */
3027
3076
  required_macros?: string[];
3028
- /**
3029
- * Expected content type of webhook response
3030
- */
3031
- response_type: 'html' | 'json' | 'xml' | 'javascript';
3077
+ response_type: WebhookResponseType;
3032
3078
  /**
3033
3079
  * Security configuration for webhook calls
3034
3080
  */
3035
3081
  security: {
3036
- /**
3037
- * Authentication method
3038
- */
3039
- method: 'hmac_sha256' | 'api_key' | 'none';
3082
+ method: WebhookSecurityMethod;
3040
3083
  /**
3041
3084
  * Header name for HMAC signature (e.g., 'X-Signature')
3042
3085
  */
@@ -3055,10 +3098,8 @@ export interface WebhookAsset {
3055
3098
  */
3056
3099
  export type BuildCreativeResponse = {
3057
3100
  creative_manifest: CreativeManifest;
3058
- /**
3059
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
3060
- */
3061
- context?: {};
3101
+ context?: ContextObject;
3102
+ ext?: ExtensionObject;
3062
3103
  } | {
3063
3104
  /**
3064
3105
  * Array of errors explaining why creative generation failed
@@ -3066,13 +3107,11 @@ export type BuildCreativeResponse = {
3066
3107
  * @minItems 1
3067
3108
  */
3068
3109
  errors: [Error, ...Error[]];
3069
- /**
3070
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
3071
- */
3072
- context?: {};
3110
+ context?: ContextObject;
3111
+ ext?: ExtensionObject;
3073
3112
  };
3074
3113
  /**
3075
- * VAST (Video Ad Serving Template) tag for third-party video ad serving
3114
+ * Image asset with URL and dimensions
3076
3115
  */
3077
3116
  /**
3078
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.
@@ -3107,16 +3146,9 @@ export type PreviewCreativeRequest = {
3107
3146
  * Specific template ID for custom format rendering
3108
3147
  */
3109
3148
  template_id?: string;
3110
- /**
3111
- * 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.
3112
- */
3113
- output_format?: 'url' | 'html';
3114
- /**
3115
- * 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.
3116
- */
3117
- context?: {
3118
- [k: string]: unknown;
3119
- };
3149
+ output_format?: PreviewOutputFormat;
3150
+ context?: ContextObject;
3151
+ ext?: ExtensionObject;
3120
3152
  } | {
3121
3153
  /**
3122
3154
  * Discriminator indicating this is a batch preview request
@@ -3155,10 +3187,7 @@ export type PreviewCreativeRequest = {
3155
3187
  * Specific template ID for custom format rendering
3156
3188
  */
3157
3189
  template_id?: string;
3158
- /**
3159
- * Output format for this preview. 'url' returns preview_url, 'html' returns preview_html.
3160
- */
3161
- output_format?: 'url' | 'html';
3190
+ output_format?: PreviewOutputFormat1;
3162
3191
  },
3163
3192
  ...{
3164
3193
  format_id: FormatID2;
@@ -3186,25 +3215,27 @@ export type PreviewCreativeRequest = {
3186
3215
  * Specific template ID for custom format rendering
3187
3216
  */
3188
3217
  template_id?: string;
3189
- /**
3190
- * Output format for this preview. 'url' returns preview_url, 'html' returns preview_html.
3191
- */
3192
- output_format?: 'url' | 'html';
3218
+ output_format?: PreviewOutputFormat1;
3193
3219
  }[]
3194
3220
  ];
3195
- /**
3196
- * 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).
3197
- */
3198
- output_format?: 'url' | 'html';
3199
- /**
3200
- * 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.
3201
- */
3202
- context?: {
3203
- [k: string]: unknown;
3204
- };
3221
+ output_format?: PreviewOutputFormat2;
3222
+ context?: ContextObject;
3223
+ ext?: ExtensionObject;
3205
3224
  };
3206
3225
  /**
3207
- * 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
3208
3239
  */
3209
3240
  export interface CreativeManifest1 {
3210
3241
  format_id: FormatID1;
@@ -3224,6 +3255,7 @@ export interface CreativeManifest1 {
3224
3255
  */
3225
3256
  [k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset | PromotedOfferings;
3226
3257
  };
3258
+ ext?: ExtensionObject;
3227
3259
  }
3228
3260
  /**
3229
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.
@@ -3310,10 +3342,8 @@ export type PreviewCreativeResponse = {
3310
3342
  * ISO 8601 timestamp when preview links expire
3311
3343
  */
3312
3344
  expires_at: string;
3313
- /**
3314
- * Initiator-provided context echoed inside the preview payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
3315
- */
3316
- context?: {};
3345
+ context?: ContextObject;
3346
+ ext?: ExtensionObject;
3317
3347
  } | {
3318
3348
  /**
3319
3349
  * Discriminator indicating this is a batch preview response
@@ -3336,10 +3366,8 @@ export type PreviewCreativeResponse = {
3336
3366
  success?: false;
3337
3367
  })[]
3338
3368
  ];
3339
- /**
3340
- * Initiator-provided context echoed inside the preview payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
3341
- */
3342
- context?: {};
3369
+ context?: ContextObject;
3370
+ ext?: ExtensionObject;
3343
3371
  };
3344
3372
  /**
3345
3373
  * A single rendered piece of a creative preview with discriminated output format
@@ -3484,6 +3512,9 @@ export type PreviewRender = {
3484
3512
  csp_policy?: string;
3485
3513
  };
3486
3514
  };
3515
+ /**
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
+ */
3487
3518
  /**
3488
3519
  * A deployment target where signals can be activated (DSP, sales agent, etc.)
3489
3520
  */
@@ -3514,6 +3545,10 @@ export type Destination = {
3514
3545
  */
3515
3546
  account?: string;
3516
3547
  };
3548
+ /**
3549
+ * Types of signal catalogs available for audience targeting
3550
+ */
3551
+ export type SignalCatalogType = 'marketplace' | 'custom' | 'owned';
3517
3552
  /**
3518
3553
  * Request parameters for discovering signals based on description
3519
3554
  */
@@ -3537,40 +3572,40 @@ export interface GetSignalsRequest {
3537
3572
  */
3538
3573
  countries: string[];
3539
3574
  };
3540
- /**
3541
- * Filters to refine results
3542
- */
3543
- filters?: {
3544
- /**
3545
- * Filter by catalog type
3546
- */
3547
- catalog_types?: ('marketplace' | 'custom' | 'owned')[];
3548
- /**
3549
- * Filter by specific data providers
3550
- */
3551
- data_providers?: string[];
3552
- /**
3553
- * Maximum CPM price filter
3554
- */
3555
- max_cpm?: number;
3556
- /**
3557
- * Minimum coverage requirement
3558
- */
3559
- min_coverage_percentage?: number;
3560
- };
3575
+ filters?: SignalFilters;
3561
3576
  /**
3562
3577
  * Maximum number of results to return
3563
3578
  */
3564
3579
  max_results?: number;
3580
+ context?: ContextObject;
3581
+ ext?: ExtensionObject;
3582
+ }
3583
+ /**
3584
+ * Filters to refine signal discovery results
3585
+ */
3586
+ export interface SignalFilters {
3565
3587
  /**
3566
- * 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.
3588
+ * Filter by catalog type
3567
3589
  */
3568
- context?: {
3569
- [k: string]: unknown;
3570
- };
3590
+ catalog_types?: SignalCatalogType[];
3591
+ /**
3592
+ * Filter by specific data providers
3593
+ */
3594
+ data_providers?: string[];
3595
+ /**
3596
+ * Maximum CPM price filter
3597
+ */
3598
+ max_cpm?: number;
3599
+ /**
3600
+ * Minimum coverage requirement
3601
+ */
3602
+ min_coverage_percentage?: number;
3571
3603
  }
3572
3604
  /**
3573
- * A signal deployment to a specific deployment target 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
3574
3609
  */
3575
3610
  export type Deployment = {
3576
3611
  /**
@@ -3697,10 +3732,7 @@ export interface GetSignalsResponse {
3697
3732
  * Detailed signal description
3698
3733
  */
3699
3734
  description: string;
3700
- /**
3701
- * Type of signal
3702
- */
3703
- signal_type: 'marketplace' | 'custom' | 'owned';
3735
+ signal_type: SignalCatalogType;
3704
3736
  /**
3705
3737
  * Name of the data provider
3706
3738
  */
@@ -3731,10 +3763,8 @@ export interface GetSignalsResponse {
3731
3763
  * Task-specific errors and warnings (e.g., signal discovery or pricing issues)
3732
3764
  */
3733
3765
  errors?: Error[];
3734
- /**
3735
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
3736
- */
3737
- context?: {};
3766
+ context?: ContextObject;
3767
+ ext?: ExtensionObject;
3738
3768
  }
3739
3769
  /**
3740
3770
  * Standard error structure for task-specific errors and warnings
@@ -3753,13 +3783,12 @@ export interface ActivateSignalRequest {
3753
3783
  * @minItems 1
3754
3784
  */
3755
3785
  deployments: [Destination, ...Destination[]];
3756
- /**
3757
- * 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.
3758
- */
3759
- context?: {
3760
- [k: string]: unknown;
3761
- };
3786
+ context?: ContextObject;
3787
+ ext?: ExtensionObject;
3762
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
+ */
3763
3792
  /**
3764
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.
3765
3794
  */
@@ -3768,10 +3797,8 @@ export type ActivateSignalResponse = {
3768
3797
  * Array of deployment results for each deployment target
3769
3798
  */
3770
3799
  deployments: Deployment[];
3771
- /**
3772
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
3773
- */
3774
- context?: {};
3800
+ context?: ContextObject;
3801
+ ext?: ExtensionObject;
3775
3802
  } | {
3776
3803
  /**
3777
3804
  * Array of errors explaining why activation failed (e.g., platform connectivity issues, signal definition problems, authentication failures)
@@ -3779,10 +3806,8 @@ export type ActivateSignalResponse = {
3779
3806
  * @minItems 1
3780
3807
  */
3781
3808
  errors: [Error, ...Error[]];
3782
- /**
3783
- * Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.
3784
- */
3785
- context?: {};
3809
+ context?: ContextObject;
3810
+ ext?: ExtensionObject;
3786
3811
  };
3787
3812
  /**
3788
3813
  * A signal deployment to a specific deployment target with activation status and key