@adcp/sdk 6.1.0 → 6.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 (117) hide show
  1. package/dist/lib/adapters/legacy/v2-5/create_media_buy.d.ts +4 -0
  2. package/dist/lib/adapters/legacy/v2-5/create_media_buy.d.ts.map +1 -0
  3. package/dist/lib/adapters/legacy/v2-5/create_media_buy.js +10 -0
  4. package/dist/lib/adapters/legacy/v2-5/create_media_buy.js.map +1 -0
  5. package/dist/lib/adapters/legacy/v2-5/get_products.d.ts +9 -0
  6. package/dist/lib/adapters/legacy/v2-5/get_products.d.ts.map +1 -0
  7. package/dist/lib/adapters/legacy/v2-5/get_products.js +15 -0
  8. package/dist/lib/adapters/legacy/v2-5/get_products.js.map +1 -0
  9. package/dist/lib/adapters/legacy/v2-5/index.d.ts +35 -0
  10. package/dist/lib/adapters/legacy/v2-5/index.d.ts.map +1 -0
  11. package/dist/lib/adapters/legacy/v2-5/index.js +56 -0
  12. package/dist/lib/adapters/legacy/v2-5/index.js.map +1 -0
  13. package/dist/lib/adapters/legacy/v2-5/list_creative_formats.d.ts +9 -0
  14. package/dist/lib/adapters/legacy/v2-5/list_creative_formats.d.ts.map +1 -0
  15. package/dist/lib/adapters/legacy/v2-5/list_creative_formats.js +15 -0
  16. package/dist/lib/adapters/legacy/v2-5/list_creative_formats.js.map +1 -0
  17. package/dist/lib/adapters/legacy/v2-5/preview_creative.d.ts +4 -0
  18. package/dist/lib/adapters/legacy/v2-5/preview_creative.d.ts.map +1 -0
  19. package/dist/lib/adapters/legacy/v2-5/preview_creative.js +10 -0
  20. package/dist/lib/adapters/legacy/v2-5/preview_creative.js.map +1 -0
  21. package/dist/lib/adapters/legacy/v2-5/sync_creatives.d.ts +11 -0
  22. package/dist/lib/adapters/legacy/v2-5/sync_creatives.d.ts.map +1 -0
  23. package/dist/lib/adapters/legacy/v2-5/sync_creatives.js +16 -0
  24. package/dist/lib/adapters/legacy/v2-5/sync_creatives.js.map +1 -0
  25. package/dist/lib/adapters/legacy/v2-5/types.d.ts +40 -0
  26. package/dist/lib/adapters/legacy/v2-5/types.d.ts.map +1 -0
  27. package/dist/lib/adapters/legacy/v2-5/types.js +25 -0
  28. package/dist/lib/adapters/legacy/v2-5/types.js.map +1 -0
  29. package/dist/lib/adapters/legacy/v2-5/update_media_buy.d.ts +4 -0
  30. package/dist/lib/adapters/legacy/v2-5/update_media_buy.d.ts.map +1 -0
  31. package/dist/lib/adapters/legacy/v2-5/update_media_buy.js +12 -0
  32. package/dist/lib/adapters/legacy/v2-5/update_media_buy.js.map +1 -0
  33. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  34. package/dist/lib/core/ConversationTypes.d.ts +7 -0
  35. package/dist/lib/core/ConversationTypes.d.ts.map +1 -1
  36. package/dist/lib/core/SingleAgentClient.d.ts +9 -14
  37. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  38. package/dist/lib/core/SingleAgentClient.js +96 -40
  39. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  40. package/dist/lib/core/TaskExecutor.d.ts +5 -0
  41. package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
  42. package/dist/lib/core/TaskExecutor.js +12 -1
  43. package/dist/lib/core/TaskExecutor.js.map +1 -1
  44. package/dist/lib/errors/index.d.ts +30 -0
  45. package/dist/lib/errors/index.d.ts.map +1 -1
  46. package/dist/lib/errors/index.js +36 -1
  47. package/dist/lib/errors/index.js.map +1 -1
  48. package/dist/lib/index.d.ts +4 -2
  49. package/dist/lib/index.d.ts.map +1 -1
  50. package/dist/lib/index.js +12 -8
  51. package/dist/lib/index.js.map +1 -1
  52. package/dist/lib/protocols/a2a.d.ts.map +1 -1
  53. package/dist/lib/protocols/a2a.js +5 -1
  54. package/dist/lib/protocols/a2a.js.map +1 -1
  55. package/dist/lib/protocols/index.d.ts +53 -3
  56. package/dist/lib/protocols/index.d.ts.map +1 -1
  57. package/dist/lib/protocols/index.js +19 -8
  58. package/dist/lib/protocols/index.js.map +1 -1
  59. package/dist/lib/protocols/mcp.d.ts.map +1 -1
  60. package/dist/lib/protocols/mcp.js +13 -5
  61. package/dist/lib/protocols/mcp.js.map +1 -1
  62. package/dist/lib/protocols/responseSizeLimit.d.ts +25 -0
  63. package/dist/lib/protocols/responseSizeLimit.d.ts.map +1 -0
  64. package/dist/lib/protocols/responseSizeLimit.js +141 -0
  65. package/dist/lib/protocols/responseSizeLimit.js.map +1 -0
  66. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  67. package/dist/lib/server/decisioning/async-outcome.d.ts +16 -10
  68. package/dist/lib/server/decisioning/async-outcome.d.ts.map +1 -1
  69. package/dist/lib/server/decisioning/async-outcome.js +15 -56
  70. package/dist/lib/server/decisioning/async-outcome.js.map +1 -1
  71. package/dist/lib/server/decisioning/errors-typed.d.ts +10 -4
  72. package/dist/lib/server/decisioning/errors-typed.d.ts.map +1 -1
  73. package/dist/lib/server/decisioning/errors-typed.js +13 -29
  74. package/dist/lib/server/decisioning/errors-typed.js.map +1 -1
  75. package/dist/lib/server/decisioning/helpers.d.ts.map +1 -1
  76. package/dist/lib/server/decisioning/helpers.js +0 -2
  77. package/dist/lib/server/decisioning/helpers.js.map +1 -1
  78. package/dist/lib/server/decisioning/manifest-helpers.d.ts.map +1 -1
  79. package/dist/lib/server/decisioning/manifest-helpers.js +0 -2
  80. package/dist/lib/server/decisioning/manifest-helpers.js.map +1 -1
  81. package/dist/lib/server/decisioning/runtime/from-platform.js +0 -9
  82. package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
  83. package/dist/lib/server/decisioning/start-time.d.ts.map +1 -1
  84. package/dist/lib/server/decisioning/start-time.js +0 -2
  85. package/dist/lib/server/decisioning/start-time.js.map +1 -1
  86. package/dist/lib/types/error-codes.d.ts +196 -9
  87. package/dist/lib/types/error-codes.d.ts.map +1 -1
  88. package/dist/lib/types/error-codes.js +104 -26
  89. package/dist/lib/types/error-codes.js.map +1 -1
  90. package/dist/lib/types/v2-5/index.d.ts +2 -0
  91. package/dist/lib/types/v2-5/index.d.ts.map +1 -0
  92. package/dist/lib/types/v2-5/index.js +30 -0
  93. package/dist/lib/types/v2-5/index.js.map +1 -0
  94. package/dist/lib/types/v2-5/tools.generated.d.ts +3507 -0
  95. package/dist/lib/types/v2-5/tools.generated.d.ts.map +1 -0
  96. package/dist/lib/types/v2-5/tools.generated.js +6 -0
  97. package/dist/lib/types/v2-5/tools.generated.js.map +1 -0
  98. package/dist/lib/utils/buyer-retry-policy.d.ts +136 -0
  99. package/dist/lib/utils/buyer-retry-policy.d.ts.map +1 -0
  100. package/dist/lib/utils/buyer-retry-policy.js +247 -0
  101. package/dist/lib/utils/buyer-retry-policy.js.map +1 -0
  102. package/dist/lib/utils/sync-creatives-adapter.d.ts +18 -8
  103. package/dist/lib/utils/sync-creatives-adapter.d.ts.map +1 -1
  104. package/dist/lib/utils/sync-creatives-adapter.js +70 -17
  105. package/dist/lib/utils/sync-creatives-adapter.js.map +1 -1
  106. package/dist/lib/validation/client-hooks.d.ts +13 -8
  107. package/dist/lib/validation/client-hooks.d.ts.map +1 -1
  108. package/dist/lib/validation/client-hooks.js +12 -12
  109. package/dist/lib/validation/client-hooks.js.map +1 -1
  110. package/dist/lib/version.d.ts +3 -3
  111. package/dist/lib/version.js +3 -3
  112. package/docs/guides/BUILD-AN-AGENT.md +2 -0
  113. package/docs/llms.txt +39 -22
  114. package/package.json +11 -1
  115. package/skills/build-seller-agent/SKILL.md +38 -5
  116. package/skills/build-seller-agent/specialisms/sales-guaranteed.md +4 -3
  117. package/skills/call-adcp-agent.previous/SKILL.md +83 -4
@@ -0,0 +1,3507 @@
1
+ /**
2
+ * Brand information manifest providing brand context, assets, and product catalog. Can be provided inline or as a URL reference to a hosted manifest.
3
+ */
4
+ export type BrandManifestReference = BrandManifest | string;
5
+ /**
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
+ */
8
+ export type AssetContentType = 'image' | 'video' | 'audio' | 'text' | 'markdown' | 'html' | 'css' | 'javascript' | 'vast' | 'daast' | 'promoted_offerings' | 'url' | 'webhook';
9
+ /**
10
+ * Type of inventory delivery
11
+ */
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';
21
+ /**
22
+ * 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.
23
+ */
24
+ export type PublisherPropertySelector = {
25
+ /**
26
+ * Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')
27
+ */
28
+ publisher_domain: string;
29
+ /**
30
+ * Discriminator indicating all properties from this publisher are included
31
+ */
32
+ selection_type: 'all';
33
+ } | {
34
+ /**
35
+ * Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')
36
+ */
37
+ publisher_domain: string;
38
+ /**
39
+ * Discriminator indicating selection by specific property IDs
40
+ */
41
+ selection_type: 'by_id';
42
+ /**
43
+ * Specific property IDs from the publisher's adagents.json
44
+ */
45
+ property_ids: PropertyID[];
46
+ } | {
47
+ /**
48
+ * Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')
49
+ */
50
+ publisher_domain: string;
51
+ /**
52
+ * Discriminator indicating selection by property tags
53
+ */
54
+ selection_type: 'by_tag';
55
+ /**
56
+ * Property tags from the publisher's adagents.json. Selector covers all properties with these tags
57
+ */
58
+ property_tags: PropertyTag[];
59
+ };
60
+ /**
61
+ * Identifier for a publisher property. Must be lowercase alphanumeric with underscores only.
62
+ */
63
+ export type PropertyID = string;
64
+ /**
65
+ * Tag for categorizing publisher properties. Must be lowercase alphanumeric with underscores only.
66
+ */
67
+ export type PropertyTag = string;
68
+ /**
69
+ * A pricing model option offered by a publisher for a product. Each pricing model has its own schema with model-specific requirements.
70
+ */
71
+ export type PricingOption = CPMFixedRatePricingOption | CPMAuctionPricingOption | VCPMFixedRatePricingOption | VCPMAuctionPricingOption | CPCPricingOption | CPCVPricingOption | CPVPricingOption | CPPPricingOption | FlatRatePricingOption;
72
+ /**
73
+ * Available frequencies for delivery reports and metrics updates
74
+ */
75
+ export type ReportingFrequency = 'hourly' | 'daily' | 'monthly';
76
+ /**
77
+ * Standard delivery and performance metrics available for reporting
78
+ */
79
+ export type AvailableMetric = 'impressions' | 'spend' | 'clicks' | 'ctr' | 'video_completions' | 'completion_rate' | 'conversions' | 'viewability' | 'engagement_rate';
80
+ /**
81
+ * Co-branding requirement
82
+ */
83
+ export type CoBrandingRequirement = 'required' | 'optional' | 'none';
84
+ /**
85
+ * Landing page requirements
86
+ */
87
+ export type LandingPageRequirement = 'any' | 'retailer_site_only' | 'must_include_retailer';
88
+ /**
89
+ * Types of parameters that template formats accept in format_id objects to create parameterized format identifiers
90
+ */
91
+ export type FormatIDParameter = 'dimensions' | 'duration';
92
+ /**
93
+ * Capabilities supported by creative agents for format handling
94
+ */
95
+ export type CreativeAgentCapability = 'validation' | 'assembly' | 'generation' | 'preview';
96
+ /**
97
+ * Budget pacing strategy
98
+ */
99
+ export type Pacing = 'even' | 'asap' | 'front_loaded';
100
+ /**
101
+ * JavaScript module type
102
+ */
103
+ export type JavaScriptModuleType = 'esm' | 'commonjs' | 'script';
104
+ /**
105
+ * VAST (Video Ad Serving Template) tag for third-party video ad serving
106
+ */
107
+ export type VASTAsset = {
108
+ /**
109
+ * Discriminator indicating VAST is delivered via URL endpoint
110
+ */
111
+ delivery_type: 'url';
112
+ /**
113
+ * URL endpoint that returns VAST XML
114
+ */
115
+ url: string;
116
+ vast_version?: VASTVersion;
117
+ /**
118
+ * Whether VPAID (Video Player-Ad Interface Definition) is supported
119
+ */
120
+ vpaid_enabled?: boolean;
121
+ /**
122
+ * Expected video duration in milliseconds (if known)
123
+ */
124
+ duration_ms?: number;
125
+ /**
126
+ * Tracking events supported by this VAST tag
127
+ */
128
+ tracking_events?: VASTTrackingEvent[];
129
+ } | {
130
+ /**
131
+ * Discriminator indicating VAST is delivered as inline XML content
132
+ */
133
+ delivery_type: 'inline';
134
+ /**
135
+ * Inline VAST XML content
136
+ */
137
+ content: string;
138
+ vast_version?: VASTVersion;
139
+ /**
140
+ * Whether VPAID (Video Player-Ad Interface Definition) is supported
141
+ */
142
+ vpaid_enabled?: boolean;
143
+ /**
144
+ * Expected video duration in milliseconds (if known)
145
+ */
146
+ duration_ms?: number;
147
+ /**
148
+ * Tracking events supported by this VAST tag
149
+ */
150
+ tracking_events?: VASTTrackingEvent[];
151
+ };
152
+ /**
153
+ * VAST specification version
154
+ */
155
+ export type VASTVersion = '2.0' | '3.0' | '4.0' | '4.1' | '4.2';
156
+ /**
157
+ * Standard VAST tracking events for video ad playback and interaction
158
+ */
159
+ export type VASTTrackingEvent = 'start' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'complete' | 'impression' | 'click' | 'pause' | 'resume' | 'skip' | 'mute' | 'unmute' | 'fullscreen' | 'exitFullscreen' | 'playerExpand' | 'playerCollapse';
160
+ /**
161
+ * DAAST (Digital Audio Ad Serving Template) tag for third-party audio ad serving
162
+ */
163
+ export type DAASTAsset = {
164
+ /**
165
+ * Discriminator indicating DAAST is delivered via URL endpoint
166
+ */
167
+ delivery_type: 'url';
168
+ /**
169
+ * URL endpoint that returns DAAST XML
170
+ */
171
+ url: string;
172
+ daast_version?: DAASTVersion;
173
+ /**
174
+ * Expected audio duration in milliseconds (if known)
175
+ */
176
+ duration_ms?: number;
177
+ /**
178
+ * Tracking events supported by this DAAST tag
179
+ */
180
+ tracking_events?: DAASTTrackingEvent[];
181
+ /**
182
+ * Whether companion display ads are included
183
+ */
184
+ companion_ads?: boolean;
185
+ } | {
186
+ /**
187
+ * Discriminator indicating DAAST is delivered as inline XML content
188
+ */
189
+ delivery_type: 'inline';
190
+ /**
191
+ * Inline DAAST XML content
192
+ */
193
+ content: string;
194
+ daast_version?: DAASTVersion;
195
+ /**
196
+ * Expected audio duration in milliseconds (if known)
197
+ */
198
+ duration_ms?: number;
199
+ /**
200
+ * Tracking events supported by this DAAST tag
201
+ */
202
+ tracking_events?: DAASTTrackingEvent[];
203
+ /**
204
+ * Whether companion display ads are included
205
+ */
206
+ companion_ads?: boolean;
207
+ };
208
+ /**
209
+ * DAAST specification version
210
+ */
211
+ export type DAASTVersion = '1.0' | '1.1';
212
+ /**
213
+ * Standard DAAST tracking events for audio ad playback and interaction
214
+ */
215
+ export type DAASTTrackingEvent = 'start' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'complete' | 'impression' | 'pause' | 'resume' | 'skip' | 'mute' | 'unmute';
216
+ /**
217
+ * 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)
218
+ */
219
+ export type URLAssetType = 'clickthrough' | 'tracker_pixel' | 'tracker_script';
220
+ /**
221
+ * Campaign start timing: 'asap' or ISO 8601 date-time
222
+ */
223
+ export type StartTiming = 'asap' | string;
224
+ /**
225
+ * Authentication schemes for push notification endpoints
226
+ */
227
+ export type AuthenticationScheme = 'Bearer' | 'HMAC-SHA256';
228
+ /**
229
+ * 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.
230
+ */
231
+ export type CreateMediaBuyResponse = CreateMediaBuySuccess | CreateMediaBuyError;
232
+ /**
233
+ * Validation strictness. 'strict' fails entire sync on any validation error. 'lenient' processes valid creatives and reports errors.
234
+ */
235
+ export type ValidationMode = 'strict' | 'lenient';
236
+ /**
237
+ * Response from creative sync operation. Returns either per-creative results (best-effort processing) OR operation-level errors (complete failure). This enforces atomic semantics at the operation level while allowing per-item failures within successful operations.
238
+ */
239
+ export type SyncCreativesResponse = SyncCreativesSuccess | SyncCreativesError;
240
+ /**
241
+ * Action taken for this creative
242
+ */
243
+ export type CreativeAction = 'created' | 'updated' | 'unchanged' | 'failed' | 'deleted';
244
+ /**
245
+ * Filter by creative approval status
246
+ */
247
+ export type CreativeStatus = 'processing' | 'approved' | 'rejected' | 'pending_review';
248
+ /**
249
+ * Field to sort by
250
+ */
251
+ export type CreativeSortField = 'created_date' | 'updated_date' | 'name' | 'status' | 'assignment_count' | 'performance_score';
252
+ /**
253
+ * Sort direction
254
+ */
255
+ export type SortDirection = 'asc' | 'desc';
256
+ /**
257
+ * Sub-asset for multi-asset creative formats, including carousel images and native ad template variables
258
+ */
259
+ export type SubAsset = {
260
+ /**
261
+ * Discriminator indicating this is a media asset with content_uri
262
+ */
263
+ asset_kind: 'media';
264
+ /**
265
+ * Type of asset. Common types: thumbnail_image, product_image, featured_image, logo
266
+ */
267
+ asset_type: string;
268
+ /**
269
+ * Unique identifier for the asset within the creative
270
+ */
271
+ asset_id: string;
272
+ /**
273
+ * URL for media assets (images, videos, etc.)
274
+ */
275
+ content_uri: string;
276
+ } | {
277
+ /**
278
+ * Discriminator indicating this is a text asset with content
279
+ */
280
+ asset_kind: 'text';
281
+ /**
282
+ * Type of asset. Common types: headline, body_text, cta_text, price_text, sponsor_name, author_name, click_url
283
+ */
284
+ asset_type: string;
285
+ /**
286
+ * Unique identifier for the asset within the creative
287
+ */
288
+ asset_id: string;
289
+ /**
290
+ * Text content for text-based assets like headlines, body text, CTA text, etc.
291
+ */
292
+ content: string | string[];
293
+ };
294
+ /**
295
+ * Request parameters for updating campaign and package settings
296
+ */
297
+ export type UpdateMediaBuyRequest = {
298
+ /**
299
+ * Publisher's ID of the media buy to update
300
+ */
301
+ media_buy_id?: string;
302
+ /**
303
+ * Buyer's reference for the media buy to update
304
+ */
305
+ buyer_ref?: string;
306
+ /**
307
+ * Pause/resume the entire media buy (true = paused, false = active)
308
+ */
309
+ paused?: boolean;
310
+ start_time?: StartTiming;
311
+ /**
312
+ * New end date/time in ISO 8601 format
313
+ */
314
+ end_time?: string;
315
+ /**
316
+ * Package-specific updates
317
+ */
318
+ packages?: {
319
+ [k: string]: unknown | undefined;
320
+ }[];
321
+ push_notification_config?: PushNotificationConfig;
322
+ context?: ContextObject;
323
+ ext?: ExtensionObject;
324
+ } & UpdateMediaBuyRequest1;
325
+ export type UpdateMediaBuyRequest1 = {
326
+ [k: string]: unknown | undefined;
327
+ };
328
+ /**
329
+ * Response payload for update_media_buy task. Returns either complete success data OR error information, never both. This enforces atomic operation semantics - updates are either fully applied or not applied at all.
330
+ */
331
+ export type UpdateMediaBuyResponse = UpdateMediaBuySuccess | UpdateMediaBuyError;
332
+ /**
333
+ * Status of a media buy
334
+ */
335
+ export type MediaBuyStatus = 'pending_activation' | 'active' | 'paused' | 'completed';
336
+ /**
337
+ * Pricing model used for this media buy
338
+ */
339
+ export type PricingModel = 'cpm' | 'vcpm' | 'cpc' | 'cpcv' | 'cpv' | 'cpp' | 'flat_rate';
340
+ /**
341
+ * Request payload for provide_performance_feedback task
342
+ */
343
+ export type ProvidePerformanceFeedbackRequest = {
344
+ /**
345
+ * Publisher's media buy identifier
346
+ */
347
+ media_buy_id?: string;
348
+ /**
349
+ * Buyer's reference for the media buy
350
+ */
351
+ buyer_ref?: string;
352
+ /**
353
+ * Time period for performance measurement
354
+ */
355
+ measurement_period?: {
356
+ /**
357
+ * ISO 8601 start timestamp for measurement period
358
+ */
359
+ start: string;
360
+ /**
361
+ * ISO 8601 end timestamp for measurement period
362
+ */
363
+ end: string;
364
+ };
365
+ /**
366
+ * Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expected)
367
+ */
368
+ performance_index?: number;
369
+ /**
370
+ * Specific package within the media buy (if feedback is package-specific)
371
+ */
372
+ package_id?: string;
373
+ /**
374
+ * Specific creative asset (if feedback is creative-specific)
375
+ */
376
+ creative_id?: string;
377
+ metric_type?: MetricType;
378
+ feedback_source?: FeedbackSource;
379
+ context?: ContextObject;
380
+ ext?: ExtensionObject;
381
+ } & ProvidePerformanceFeedbackRequest1;
382
+ /**
383
+ * The business metric being measured
384
+ */
385
+ export type MetricType = 'overall_performance' | 'conversion_rate' | 'brand_lift' | 'click_through_rate' | 'completion_rate' | 'viewability' | 'brand_safety' | 'cost_efficiency';
386
+ /**
387
+ * Source of the performance data
388
+ */
389
+ export type FeedbackSource = 'buyer_attribution' | 'third_party_measurement' | 'platform_analytics' | 'verification_partner';
390
+ export type ProvidePerformanceFeedbackRequest1 = {
391
+ [k: string]: unknown | undefined;
392
+ };
393
+ /**
394
+ * Response payload for provide_performance_feedback task. Returns either success confirmation OR error information, never both.
395
+ */
396
+ export type ProvidePerformanceFeedbackResponse = ProvidePerformanceFeedbackSuccess | ProvidePerformanceFeedbackError;
397
+ /**
398
+ * HTTP method
399
+ */
400
+ export type HTTPMethod = 'GET' | 'POST';
401
+ /**
402
+ * Expected content type of webhook response
403
+ */
404
+ export type WebhookResponseType = 'html' | 'json' | 'xml' | 'javascript';
405
+ /**
406
+ * Authentication method
407
+ */
408
+ export type WebhookSecurityMethod = 'hmac_sha256' | 'api_key' | 'none';
409
+ /**
410
+ * Response containing the transformed or generated creative manifest, ready for use with preview_creative or sync_creatives. Returns either the complete creative manifest OR error information, never both.
411
+ */
412
+ export type BuildCreativeResponse = BuildCreativeSuccess | BuildCreativeError;
413
+ /**
414
+ * Request to generate previews of one or more creative manifests. Accepts either a single creative request or an array of requests for batch processing.
415
+ */
416
+ export type PreviewCreativeRequest = {
417
+ /**
418
+ * Discriminator indicating this is a single preview request
419
+ */
420
+ request_type: 'single';
421
+ format_id: FormatID;
422
+ creative_manifest: CreativeManifest;
423
+ /**
424
+ * Array of input sets for generating multiple preview variants. Each input set defines macros and context values for one preview rendering. If not provided, creative agent will generate default previews.
425
+ */
426
+ inputs?: {
427
+ /**
428
+ * Human-readable name for this input set (e.g., 'Sunny morning on mobile', 'Evening podcast ad', 'Desktop dark mode')
429
+ */
430
+ name: string;
431
+ /**
432
+ * Macro values to use for this preview. Supports all universal macros from the format's supported_macros list. See docs/creative/universal-macros.md for available macros.
433
+ */
434
+ macros?: {
435
+ [k: string]: string | undefined;
436
+ };
437
+ /**
438
+ * Natural language description of the context for AI-generated content (e.g., 'User just searched for running shoes', 'Podcast discussing weather patterns', 'Article about electric vehicles')
439
+ */
440
+ context_description?: string;
441
+ }[];
442
+ /**
443
+ * Specific template ID for custom format rendering
444
+ */
445
+ template_id?: string;
446
+ output_format?: PreviewOutputFormat;
447
+ context?: ContextObject;
448
+ ext?: ExtensionObject;
449
+ } | {
450
+ /**
451
+ * Discriminator indicating this is a batch preview request
452
+ */
453
+ request_type: 'batch';
454
+ /**
455
+ * Array of preview requests (1-50 items). Each follows the single request structure.
456
+ */
457
+ requests: {
458
+ format_id: FormatID;
459
+ creative_manifest: CreativeManifest;
460
+ /**
461
+ * Array of input sets for generating multiple preview variants
462
+ */
463
+ inputs?: {
464
+ /**
465
+ * Human-readable name for this input set
466
+ */
467
+ name: string;
468
+ /**
469
+ * Macro values to use for this preview
470
+ */
471
+ macros?: {
472
+ [k: string]: string | undefined;
473
+ };
474
+ /**
475
+ * Natural language description of the context for AI-generated content
476
+ */
477
+ context_description?: string;
478
+ }[];
479
+ /**
480
+ * Specific template ID for custom format rendering
481
+ */
482
+ template_id?: string;
483
+ output_format?: PreviewOutputFormat;
484
+ }[];
485
+ output_format?: PreviewOutputFormat;
486
+ context?: ContextObject;
487
+ ext?: ExtensionObject;
488
+ };
489
+ /**
490
+ * 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.
491
+ */
492
+ export type PreviewOutputFormat = 'url' | 'html';
493
+ /**
494
+ * Response containing preview links for one or more creatives. Format matches the request: single preview response for single requests, batch results for batch requests.
495
+ */
496
+ export type PreviewCreativeResponse = PreviewCreativeSingleResponse | PreviewCreativeBatchResponse;
497
+ /**
498
+ * A single rendered piece of a creative preview with discriminated output format
499
+ */
500
+ export type PreviewRender = {
501
+ /**
502
+ * Unique identifier for this rendered piece within the variant
503
+ */
504
+ render_id: string;
505
+ /**
506
+ * Discriminator indicating preview_url is provided
507
+ */
508
+ output_format: 'url';
509
+ /**
510
+ * URL to an HTML page that renders this piece. Can be embedded in an iframe.
511
+ */
512
+ preview_url: string;
513
+ /**
514
+ * Semantic role of this rendered piece. Use 'primary' for main content, 'companion' for associated banners, descriptive strings for device variants or custom roles.
515
+ */
516
+ role: string;
517
+ /**
518
+ * Dimensions for this rendered piece
519
+ */
520
+ dimensions?: {
521
+ width: number;
522
+ height: number;
523
+ };
524
+ /**
525
+ * Optional security and embedding metadata for safe iframe integration
526
+ */
527
+ embedding?: {
528
+ /**
529
+ * Recommended iframe sandbox attribute value (e.g., 'allow-scripts allow-same-origin')
530
+ */
531
+ recommended_sandbox?: string;
532
+ /**
533
+ * Whether this output requires HTTPS for secure embedding
534
+ */
535
+ requires_https?: boolean;
536
+ /**
537
+ * Whether this output supports fullscreen mode
538
+ */
539
+ supports_fullscreen?: boolean;
540
+ /**
541
+ * Content Security Policy requirements for embedding
542
+ */
543
+ csp_policy?: string;
544
+ };
545
+ } | {
546
+ /**
547
+ * Unique identifier for this rendered piece within the variant
548
+ */
549
+ render_id: string;
550
+ /**
551
+ * Discriminator indicating preview_html is provided
552
+ */
553
+ output_format: 'html';
554
+ /**
555
+ * Raw HTML for this rendered piece. Can be embedded directly in the page without iframe. Security warning: Only use with trusted creative agents as this bypasses iframe sandboxing.
556
+ */
557
+ preview_html: string;
558
+ /**
559
+ * Semantic role of this rendered piece. Use 'primary' for main content, 'companion' for associated banners, descriptive strings for device variants or custom roles.
560
+ */
561
+ role: string;
562
+ /**
563
+ * Dimensions for this rendered piece
564
+ */
565
+ dimensions?: {
566
+ width: number;
567
+ height: number;
568
+ };
569
+ /**
570
+ * Optional security and embedding metadata
571
+ */
572
+ embedding?: {
573
+ /**
574
+ * Recommended iframe sandbox attribute value (e.g., 'allow-scripts allow-same-origin')
575
+ */
576
+ recommended_sandbox?: string;
577
+ /**
578
+ * Whether this output requires HTTPS for secure embedding
579
+ */
580
+ requires_https?: boolean;
581
+ /**
582
+ * Whether this output supports fullscreen mode
583
+ */
584
+ supports_fullscreen?: boolean;
585
+ /**
586
+ * Content Security Policy requirements for embedding
587
+ */
588
+ csp_policy?: string;
589
+ };
590
+ } | {
591
+ /**
592
+ * Unique identifier for this rendered piece within the variant
593
+ */
594
+ render_id: string;
595
+ /**
596
+ * Discriminator indicating both preview_url and preview_html are provided
597
+ */
598
+ output_format: 'both';
599
+ /**
600
+ * URL to an HTML page that renders this piece. Can be embedded in an iframe.
601
+ */
602
+ preview_url: string;
603
+ /**
604
+ * Raw HTML for this rendered piece. Can be embedded directly in the page without iframe. Security warning: Only use with trusted creative agents as this bypasses iframe sandboxing.
605
+ */
606
+ preview_html: string;
607
+ /**
608
+ * Semantic role of this rendered piece. Use 'primary' for main content, 'companion' for associated banners, descriptive strings for device variants or custom roles.
609
+ */
610
+ role: string;
611
+ /**
612
+ * Dimensions for this rendered piece
613
+ */
614
+ dimensions?: {
615
+ width: number;
616
+ height: number;
617
+ };
618
+ /**
619
+ * Optional security and embedding metadata for safe iframe integration
620
+ */
621
+ embedding?: {
622
+ /**
623
+ * Recommended iframe sandbox attribute value (e.g., 'allow-scripts allow-same-origin')
624
+ */
625
+ recommended_sandbox?: string;
626
+ /**
627
+ * Whether this output requires HTTPS for secure embedding
628
+ */
629
+ requires_https?: boolean;
630
+ /**
631
+ * Whether this output supports fullscreen mode
632
+ */
633
+ supports_fullscreen?: boolean;
634
+ /**
635
+ * Content Security Policy requirements for embedding
636
+ */
637
+ csp_policy?: string;
638
+ };
639
+ };
640
+ /**
641
+ * A deployment target where signals can be activated (DSP, sales agent, etc.)
642
+ */
643
+ export type Destination = {
644
+ /**
645
+ * Discriminator indicating this is a platform-based deployment
646
+ */
647
+ type: 'platform';
648
+ /**
649
+ * Platform identifier for DSPs (e.g., 'the-trade-desk', 'amazon-dsp')
650
+ */
651
+ platform: string;
652
+ /**
653
+ * Optional account identifier on the platform
654
+ */
655
+ account?: string;
656
+ } | {
657
+ /**
658
+ * Discriminator indicating this is an agent URL-based deployment
659
+ */
660
+ type: 'agent';
661
+ /**
662
+ * URL identifying the deployment agent (for sales agents, etc.)
663
+ */
664
+ agent_url: string;
665
+ /**
666
+ * Optional account identifier on the agent
667
+ */
668
+ account?: string;
669
+ };
670
+ /**
671
+ * Types of signal catalogs available for audience targeting
672
+ */
673
+ export type SignalCatalogType = 'marketplace' | 'custom' | 'owned';
674
+ /**
675
+ * A signal deployment to a specific deployment target with activation status and key
676
+ */
677
+ export type Deployment = {
678
+ /**
679
+ * Discriminator indicating this is a platform-based deployment
680
+ */
681
+ type: 'platform';
682
+ /**
683
+ * Platform identifier for DSPs
684
+ */
685
+ platform: string;
686
+ /**
687
+ * Account identifier if applicable
688
+ */
689
+ account?: string;
690
+ /**
691
+ * Whether signal is currently active on this deployment
692
+ */
693
+ is_live: boolean;
694
+ activation_key?: ActivationKey;
695
+ /**
696
+ * Estimated time to activate if not live, or to complete activation if in progress
697
+ */
698
+ estimated_activation_duration_minutes?: number;
699
+ /**
700
+ * Timestamp when activation completed (if is_live=true)
701
+ */
702
+ deployed_at?: string;
703
+ } | {
704
+ /**
705
+ * Discriminator indicating this is an agent URL-based deployment
706
+ */
707
+ type: 'agent';
708
+ /**
709
+ * URL identifying the deployment agent
710
+ */
711
+ agent_url: string;
712
+ /**
713
+ * Account identifier if applicable
714
+ */
715
+ account?: string;
716
+ /**
717
+ * Whether signal is currently active on this deployment
718
+ */
719
+ is_live: boolean;
720
+ activation_key?: ActivationKey;
721
+ /**
722
+ * Estimated time to activate if not live, or to complete activation if in progress
723
+ */
724
+ estimated_activation_duration_minutes?: number;
725
+ /**
726
+ * Timestamp when activation completed (if is_live=true)
727
+ */
728
+ deployed_at?: string;
729
+ };
730
+ /**
731
+ * The key to use for targeting. Only present if is_live=true AND requester has access to this deployment.
732
+ */
733
+ export type ActivationKey = {
734
+ /**
735
+ * Segment ID based targeting
736
+ */
737
+ type: 'segment_id';
738
+ /**
739
+ * The platform-specific segment identifier to use in campaign targeting
740
+ */
741
+ segment_id: string;
742
+ } | {
743
+ /**
744
+ * Key-value pair based targeting
745
+ */
746
+ type: 'key_value';
747
+ /**
748
+ * The targeting parameter key
749
+ */
750
+ key: string;
751
+ /**
752
+ * The targeting parameter value
753
+ */
754
+ value: string;
755
+ };
756
+ /**
757
+ * 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.
758
+ */
759
+ export type ActivateSignalResponse = ActivateSignalSuccess | ActivateSignalError;
760
+ /**
761
+ * Request parameters for discovering available advertising products
762
+ */
763
+ export interface GetProductsRequest {
764
+ /**
765
+ * Natural language description of campaign requirements
766
+ */
767
+ brief?: string;
768
+ brand_manifest?: BrandManifestReference;
769
+ filters?: ProductFilters;
770
+ context?: ContextObject;
771
+ ext?: ExtensionObject;
772
+ }
773
+ /**
774
+ * Inline brand manifest object
775
+ */
776
+ export interface BrandManifest {
777
+ /**
778
+ * Primary brand URL for context and asset discovery. Creative agents can infer brand information from this URL.
779
+ */
780
+ url?: string;
781
+ /**
782
+ * Brand or business name
783
+ */
784
+ name: string;
785
+ /**
786
+ * Brand logo assets with semantic tags for different use cases
787
+ */
788
+ logos?: {
789
+ /**
790
+ * URL to the logo asset
791
+ */
792
+ url: string;
793
+ /**
794
+ * Semantic tags describing the logo variant (e.g., 'dark', 'light', 'square', 'horizontal', 'icon')
795
+ */
796
+ tags?: string[];
797
+ /**
798
+ * Logo width in pixels
799
+ */
800
+ width?: number;
801
+ /**
802
+ * Logo height in pixels
803
+ */
804
+ height?: number;
805
+ }[];
806
+ /**
807
+ * Brand color palette
808
+ */
809
+ colors?: {
810
+ /**
811
+ * Primary brand color (hex format)
812
+ */
813
+ primary?: string;
814
+ /**
815
+ * Secondary brand color (hex format)
816
+ */
817
+ secondary?: string;
818
+ /**
819
+ * Accent color (hex format)
820
+ */
821
+ accent?: string;
822
+ /**
823
+ * Background color (hex format)
824
+ */
825
+ background?: string;
826
+ /**
827
+ * Text color (hex format)
828
+ */
829
+ text?: string;
830
+ };
831
+ /**
832
+ * Brand typography guidelines
833
+ */
834
+ fonts?: {
835
+ /**
836
+ * Primary font family name
837
+ */
838
+ primary?: string;
839
+ /**
840
+ * Secondary font family name
841
+ */
842
+ secondary?: string;
843
+ /**
844
+ * URLs to web font files if using custom fonts
845
+ */
846
+ font_urls?: string[];
847
+ };
848
+ /**
849
+ * Brand voice and messaging tone (e.g., 'professional', 'casual', 'humorous', 'trustworthy', 'innovative')
850
+ */
851
+ tone?: string;
852
+ /**
853
+ * Brand tagline or slogan
854
+ */
855
+ tagline?: string;
856
+ /**
857
+ * Brand asset library with explicit assets and tags. Assets are referenced inline with URLs pointing to CDN-hosted files.
858
+ */
859
+ assets?: {
860
+ /**
861
+ * Unique identifier for this asset
862
+ */
863
+ asset_id: string;
864
+ asset_type: AssetContentType;
865
+ /**
866
+ * URL to CDN-hosted asset file
867
+ */
868
+ url: string;
869
+ /**
870
+ * Tags for asset discovery (e.g., 'holiday', 'lifestyle', 'product_shot')
871
+ */
872
+ tags?: string[];
873
+ /**
874
+ * Human-readable asset name
875
+ */
876
+ name?: string;
877
+ /**
878
+ * Asset description or usage notes
879
+ */
880
+ description?: string;
881
+ /**
882
+ * Image/video width in pixels
883
+ */
884
+ width?: number;
885
+ /**
886
+ * Image/video height in pixels
887
+ */
888
+ height?: number;
889
+ /**
890
+ * Video/audio duration in seconds
891
+ */
892
+ duration_seconds?: number;
893
+ /**
894
+ * File size in bytes
895
+ */
896
+ file_size_bytes?: number;
897
+ /**
898
+ * File format (e.g., 'jpg', 'mp4', 'mp3')
899
+ */
900
+ format?: string;
901
+ /**
902
+ * Additional asset-specific metadata
903
+ */
904
+ metadata?: {};
905
+ }[];
906
+ /**
907
+ * Product catalog information for e-commerce advertisers. Enables SKU-level creative generation and product selection.
908
+ */
909
+ product_catalog?: {
910
+ /**
911
+ * URL to product catalog feed
912
+ */
913
+ feed_url: string;
914
+ /**
915
+ * Format of the product feed
916
+ */
917
+ feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom';
918
+ /**
919
+ * Product categories available in the catalog (for filtering)
920
+ */
921
+ categories?: string[];
922
+ /**
923
+ * When the product catalog was last updated
924
+ */
925
+ last_updated?: string;
926
+ /**
927
+ * How frequently the product catalog is updated
928
+ */
929
+ update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly';
930
+ };
931
+ /**
932
+ * Legal disclaimers or required text that must appear in creatives
933
+ */
934
+ disclaimers?: {
935
+ /**
936
+ * Disclaimer text
937
+ */
938
+ text: string;
939
+ /**
940
+ * When this disclaimer applies (e.g., 'financial_products', 'health_claims', 'all')
941
+ */
942
+ context?: string;
943
+ /**
944
+ * Whether this disclaimer must appear
945
+ */
946
+ required?: boolean;
947
+ }[];
948
+ /**
949
+ * Industry or vertical (e.g., 'retail', 'automotive', 'finance', 'healthcare')
950
+ */
951
+ industry?: string;
952
+ /**
953
+ * Primary target audience description
954
+ */
955
+ target_audience?: string;
956
+ /**
957
+ * Brand contact information
958
+ */
959
+ contact?: {
960
+ /**
961
+ * Contact email
962
+ */
963
+ email?: string;
964
+ /**
965
+ * Contact phone number
966
+ */
967
+ phone?: string;
968
+ };
969
+ /**
970
+ * Additional brand metadata
971
+ */
972
+ metadata?: {
973
+ /**
974
+ * When this brand manifest was created
975
+ */
976
+ created_date?: string;
977
+ /**
978
+ * When this brand manifest was last updated
979
+ */
980
+ updated_date?: string;
981
+ /**
982
+ * Brand card version number
983
+ */
984
+ version?: string;
985
+ };
986
+ }
987
+ /**
988
+ * Structured filters for product discovery
989
+ */
990
+ export interface ProductFilters {
991
+ delivery_type?: DeliveryType;
992
+ /**
993
+ * Filter for fixed price vs auction products
994
+ */
995
+ is_fixed_price?: boolean;
996
+ /**
997
+ * Filter by format types
998
+ */
999
+ format_types?: FormatCategory[];
1000
+ /**
1001
+ * Filter by specific format IDs
1002
+ */
1003
+ format_ids?: FormatID[];
1004
+ /**
1005
+ * Only return products accepting IAB standard formats
1006
+ */
1007
+ standard_formats_only?: boolean;
1008
+ /**
1009
+ * Minimum exposures/impressions needed for measurement validity
1010
+ */
1011
+ min_exposures?: number;
1012
+ /**
1013
+ * Campaign start date (ISO 8601 date format: YYYY-MM-DD) for availability checks
1014
+ */
1015
+ start_date?: string;
1016
+ /**
1017
+ * Campaign end date (ISO 8601 date format: YYYY-MM-DD) for availability checks
1018
+ */
1019
+ end_date?: string;
1020
+ /**
1021
+ * Budget range to filter appropriate products
1022
+ */
1023
+ budget_range?: {
1024
+ [k: string]: unknown | undefined;
1025
+ };
1026
+ /**
1027
+ * Filter by target countries using ISO 3166-1 alpha-2 country codes (e.g., ['US', 'CA', 'GB'])
1028
+ */
1029
+ countries?: string[];
1030
+ /**
1031
+ * Filter by advertising channels (e.g., ['display', 'video', 'dooh'])
1032
+ */
1033
+ channels?: AdvertisingChannels[];
1034
+ }
1035
+ /**
1036
+ * 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.
1037
+ */
1038
+ export interface FormatID {
1039
+ /**
1040
+ * URL of the agent that defines this format (e.g., 'https://creatives.adcontextprotocol.org' for standard formats, or 'https://publisher.com/.well-known/adcp/sales' for custom formats)
1041
+ */
1042
+ agent_url: string;
1043
+ /**
1044
+ * 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.
1045
+ */
1046
+ id: string;
1047
+ /**
1048
+ * 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.
1049
+ */
1050
+ width?: number;
1051
+ /**
1052
+ * 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.
1053
+ */
1054
+ height?: number;
1055
+ /**
1056
+ * Duration in milliseconds for time-based formats (video, audio). When specified, creates a parameterized format ID. Omit to reference a template format without parameters.
1057
+ */
1058
+ duration_ms?: number;
1059
+ }
1060
+ /**
1061
+ * 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.
1062
+ */
1063
+ export interface ContextObject {
1064
+ }
1065
+ /**
1066
+ * 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.
1067
+ */
1068
+ export interface ExtensionObject {
1069
+ }
1070
+ /**
1071
+ * Response payload for get_products task
1072
+ */
1073
+ export interface GetProductsResponse {
1074
+ /**
1075
+ * Array of matching products
1076
+ */
1077
+ products: Product[];
1078
+ /**
1079
+ * Task-specific errors and warnings (e.g., product filtering issues)
1080
+ */
1081
+ errors?: Error[];
1082
+ context?: ContextObject;
1083
+ ext?: ExtensionObject;
1084
+ }
1085
+ /**
1086
+ * Represents available advertising inventory
1087
+ */
1088
+ export interface Product {
1089
+ /**
1090
+ * Unique identifier for the product
1091
+ */
1092
+ product_id: string;
1093
+ /**
1094
+ * Human-readable product name
1095
+ */
1096
+ name: string;
1097
+ /**
1098
+ * Detailed description of the product and its inventory
1099
+ */
1100
+ description: string;
1101
+ /**
1102
+ * 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.
1103
+ */
1104
+ publisher_properties: PublisherPropertySelector[];
1105
+ /**
1106
+ * Array of supported creative format IDs - structured format_id objects with agent_url and id
1107
+ */
1108
+ format_ids: FormatID[];
1109
+ /**
1110
+ * Optional array of specific placements within this product. When provided, buyers can target specific placements when assigning creatives.
1111
+ */
1112
+ placements?: Placement[];
1113
+ delivery_type: DeliveryType;
1114
+ /**
1115
+ * Available pricing models for this product
1116
+ */
1117
+ pricing_options: PricingOption[];
1118
+ /**
1119
+ * Estimated exposures/impressions for guaranteed products
1120
+ */
1121
+ estimated_exposures?: number;
1122
+ measurement?: Measurement;
1123
+ /**
1124
+ * Measurement provider and methodology for delivery metrics. The buyer accepts the declared provider as the source of truth for the buy. REQUIRED for all products.
1125
+ */
1126
+ delivery_measurement: {
1127
+ /**
1128
+ * Measurement provider(s) used for this product (e.g., 'Google Ad Manager with IAS viewability', 'Nielsen DAR', 'Geopath for DOOH impressions')
1129
+ */
1130
+ provider: string;
1131
+ /**
1132
+ * Additional details about measurement methodology in plain language (e.g., 'MRC-accredited viewability. 50% in-view for 1s display / 2s video', 'Panel-based demographic measurement updated monthly')
1133
+ */
1134
+ notes?: string;
1135
+ };
1136
+ reporting_capabilities?: ReportingCapabilities;
1137
+ creative_policy?: CreativePolicy;
1138
+ /**
1139
+ * Whether this is a custom product
1140
+ */
1141
+ is_custom?: boolean;
1142
+ /**
1143
+ * Explanation of why this product matches the brief (only included when brief is provided)
1144
+ */
1145
+ brief_relevance?: string;
1146
+ /**
1147
+ * Expiration timestamp for custom products
1148
+ */
1149
+ expires_at?: string;
1150
+ /**
1151
+ * Optional standard visual card (300x400px) for displaying this product in user interfaces. Can be rendered via preview_creative or pre-generated.
1152
+ */
1153
+ product_card?: {
1154
+ format_id: FormatID;
1155
+ /**
1156
+ * Asset manifest for rendering the card, structure defined by the format
1157
+ */
1158
+ manifest: {};
1159
+ };
1160
+ /**
1161
+ * Optional detailed card with carousel and full specifications. Provides rich product presentation similar to media kit pages.
1162
+ */
1163
+ product_card_detailed?: {
1164
+ format_id: FormatID;
1165
+ /**
1166
+ * Asset manifest for rendering the detailed card, structure defined by the format
1167
+ */
1168
+ manifest: {};
1169
+ };
1170
+ ext?: ExtensionObject;
1171
+ }
1172
+ /**
1173
+ * Represents a specific ad placement within a product's inventory
1174
+ */
1175
+ export interface Placement {
1176
+ /**
1177
+ * Unique identifier for the placement within the product
1178
+ */
1179
+ placement_id: string;
1180
+ /**
1181
+ * Human-readable name for the placement (e.g., 'Homepage Banner', 'Article Sidebar')
1182
+ */
1183
+ name: string;
1184
+ /**
1185
+ * Detailed description of where and how the placement appears
1186
+ */
1187
+ description?: string;
1188
+ /**
1189
+ * 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).
1190
+ */
1191
+ format_ids?: FormatID[];
1192
+ }
1193
+ /**
1194
+ * Cost Per Mille (cost per 1,000 impressions) with guaranteed fixed rate - common for direct/guaranteed deals
1195
+ */
1196
+ export interface CPMFixedRatePricingOption {
1197
+ /**
1198
+ * Unique identifier for this pricing option within the product (e.g., 'cpm_usd_guaranteed')
1199
+ */
1200
+ pricing_option_id: string;
1201
+ /**
1202
+ * Cost per 1,000 impressions
1203
+ */
1204
+ pricing_model: 'cpm';
1205
+ /**
1206
+ * Fixed CPM rate (cost per 1,000 impressions)
1207
+ */
1208
+ rate: number;
1209
+ /**
1210
+ * ISO 4217 currency code
1211
+ */
1212
+ currency: string;
1213
+ /**
1214
+ * Whether this is a fixed rate (true) or auction-based (false)
1215
+ */
1216
+ is_fixed: true;
1217
+ /**
1218
+ * Minimum spend requirement per package using this pricing option, in the specified currency
1219
+ */
1220
+ min_spend_per_package?: number;
1221
+ }
1222
+ /**
1223
+ * Cost Per Mille (cost per 1,000 impressions) with auction-based pricing - common for programmatic/non-guaranteed inventory
1224
+ */
1225
+ export interface CPMAuctionPricingOption {
1226
+ /**
1227
+ * Unique identifier for this pricing option within the product (e.g., 'cpm_usd_auction')
1228
+ */
1229
+ pricing_option_id: string;
1230
+ /**
1231
+ * Cost per 1,000 impressions
1232
+ */
1233
+ pricing_model: 'cpm';
1234
+ /**
1235
+ * ISO 4217 currency code
1236
+ */
1237
+ currency: string;
1238
+ /**
1239
+ * Whether this is a fixed rate (true) or auction-based (false)
1240
+ */
1241
+ is_fixed: false;
1242
+ /**
1243
+ * Pricing guidance for auction-based CPM bidding
1244
+ */
1245
+ price_guidance: {
1246
+ /**
1247
+ * Minimum bid price - publisher will reject bids under this value
1248
+ */
1249
+ floor: number;
1250
+ /**
1251
+ * 25th percentile winning price
1252
+ */
1253
+ p25?: number;
1254
+ /**
1255
+ * Median winning price
1256
+ */
1257
+ p50?: number;
1258
+ /**
1259
+ * 75th percentile winning price
1260
+ */
1261
+ p75?: number;
1262
+ /**
1263
+ * 90th percentile winning price
1264
+ */
1265
+ p90?: number;
1266
+ };
1267
+ /**
1268
+ * Minimum spend requirement per package using this pricing option, in the specified currency
1269
+ */
1270
+ min_spend_per_package?: number;
1271
+ }
1272
+ /**
1273
+ * Viewable Cost Per Mille (cost per 1,000 viewable impressions) with guaranteed fixed rate - impressions meeting MRC viewability standard (50% pixels in-view for 1 second for display, 2 seconds for video)
1274
+ */
1275
+ export interface VCPMFixedRatePricingOption {
1276
+ /**
1277
+ * Unique identifier for this pricing option within the product (e.g., 'vcpm_usd_guaranteed')
1278
+ */
1279
+ pricing_option_id: string;
1280
+ /**
1281
+ * Cost per 1,000 viewable impressions (MRC standard)
1282
+ */
1283
+ pricing_model: 'vcpm';
1284
+ /**
1285
+ * Fixed vCPM rate (cost per 1,000 viewable impressions)
1286
+ */
1287
+ rate: number;
1288
+ /**
1289
+ * ISO 4217 currency code
1290
+ */
1291
+ currency: string;
1292
+ /**
1293
+ * Whether this is a fixed rate (true) or auction-based (false)
1294
+ */
1295
+ is_fixed: true;
1296
+ /**
1297
+ * Minimum spend requirement per package using this pricing option, in the specified currency
1298
+ */
1299
+ min_spend_per_package?: number;
1300
+ }
1301
+ /**
1302
+ * Viewable Cost Per Mille (cost per 1,000 viewable impressions) with auction-based pricing - impressions meeting MRC viewability standard (50% pixels in-view for 1 second for display, 2 seconds for video)
1303
+ */
1304
+ export interface VCPMAuctionPricingOption {
1305
+ /**
1306
+ * Unique identifier for this pricing option within the product (e.g., 'vcpm_usd_auction')
1307
+ */
1308
+ pricing_option_id: string;
1309
+ /**
1310
+ * Cost per 1,000 viewable impressions (MRC standard)
1311
+ */
1312
+ pricing_model: 'vcpm';
1313
+ /**
1314
+ * ISO 4217 currency code
1315
+ */
1316
+ currency: string;
1317
+ /**
1318
+ * Whether this is a fixed rate (true) or auction-based (false)
1319
+ */
1320
+ is_fixed: false;
1321
+ /**
1322
+ * Statistical guidance for auction pricing
1323
+ */
1324
+ price_guidance: {
1325
+ /**
1326
+ * Minimum acceptable bid price
1327
+ */
1328
+ floor: number;
1329
+ /**
1330
+ * 25th percentile of recent winning bids
1331
+ */
1332
+ p25?: number;
1333
+ /**
1334
+ * Median of recent winning bids
1335
+ */
1336
+ p50?: number;
1337
+ /**
1338
+ * 75th percentile of recent winning bids
1339
+ */
1340
+ p75?: number;
1341
+ /**
1342
+ * 90th percentile of recent winning bids
1343
+ */
1344
+ p90?: number;
1345
+ };
1346
+ /**
1347
+ * Minimum spend requirement per package using this pricing option, in the specified currency
1348
+ */
1349
+ min_spend_per_package?: number;
1350
+ }
1351
+ /**
1352
+ * Cost Per Click fixed-rate pricing for performance-driven advertising campaigns
1353
+ */
1354
+ export interface CPCPricingOption {
1355
+ /**
1356
+ * Unique identifier for this pricing option within the product (e.g., 'cpc_usd_fixed')
1357
+ */
1358
+ pricing_option_id: string;
1359
+ /**
1360
+ * Cost per click
1361
+ */
1362
+ pricing_model: 'cpc';
1363
+ /**
1364
+ * Fixed CPC rate (cost per click)
1365
+ */
1366
+ rate: number;
1367
+ /**
1368
+ * ISO 4217 currency code
1369
+ */
1370
+ currency: string;
1371
+ /**
1372
+ * Whether this is a fixed rate (true) or auction-based (false)
1373
+ */
1374
+ is_fixed: true;
1375
+ /**
1376
+ * Minimum spend requirement per package using this pricing option, in the specified currency
1377
+ */
1378
+ min_spend_per_package?: number;
1379
+ }
1380
+ /**
1381
+ * Cost Per Completed View (100% video/audio completion) fixed-rate pricing
1382
+ */
1383
+ export interface CPCVPricingOption {
1384
+ /**
1385
+ * Unique identifier for this pricing option within the product (e.g., 'cpcv_usd_guaranteed')
1386
+ */
1387
+ pricing_option_id: string;
1388
+ /**
1389
+ * Cost per completed view (100% completion)
1390
+ */
1391
+ pricing_model: 'cpcv';
1392
+ /**
1393
+ * Fixed CPCV rate (cost per 100% completion)
1394
+ */
1395
+ rate: number;
1396
+ /**
1397
+ * ISO 4217 currency code
1398
+ */
1399
+ currency: string;
1400
+ /**
1401
+ * Whether this is a fixed rate (true) or auction-based (false)
1402
+ */
1403
+ is_fixed: true;
1404
+ /**
1405
+ * Minimum spend requirement per package using this pricing option, in the specified currency
1406
+ */
1407
+ min_spend_per_package?: number;
1408
+ }
1409
+ /**
1410
+ * Cost Per View (at publisher-defined threshold) fixed-rate pricing for video/audio
1411
+ */
1412
+ export interface CPVPricingOption {
1413
+ /**
1414
+ * Unique identifier for this pricing option within the product (e.g., 'cpv_usd_50pct')
1415
+ */
1416
+ pricing_option_id: string;
1417
+ /**
1418
+ * Cost per view at threshold
1419
+ */
1420
+ pricing_model: 'cpv';
1421
+ /**
1422
+ * Fixed CPV rate (cost per view)
1423
+ */
1424
+ rate: number;
1425
+ /**
1426
+ * ISO 4217 currency code
1427
+ */
1428
+ currency: string;
1429
+ /**
1430
+ * Whether this is a fixed rate (true) or auction-based (false)
1431
+ */
1432
+ is_fixed: true;
1433
+ /**
1434
+ * CPV-specific parameters defining the view threshold
1435
+ */
1436
+ parameters: {
1437
+ view_threshold: number | {
1438
+ /**
1439
+ * Seconds of viewing required (e.g., 30 for YouTube-style '30 seconds = view')
1440
+ */
1441
+ duration_seconds: number;
1442
+ };
1443
+ };
1444
+ /**
1445
+ * Minimum spend requirement per package using this pricing option, in the specified currency
1446
+ */
1447
+ min_spend_per_package?: number;
1448
+ }
1449
+ /**
1450
+ * Cost Per Point (Gross Rating Point) fixed-rate pricing for TV and audio campaigns requiring demographic measurement
1451
+ */
1452
+ export interface CPPPricingOption {
1453
+ /**
1454
+ * Unique identifier for this pricing option within the product (e.g., 'cpp_usd_p18-49')
1455
+ */
1456
+ pricing_option_id: string;
1457
+ /**
1458
+ * Cost per Gross Rating Point
1459
+ */
1460
+ pricing_model: 'cpp';
1461
+ /**
1462
+ * Fixed CPP rate (cost per rating point)
1463
+ */
1464
+ rate: number;
1465
+ /**
1466
+ * ISO 4217 currency code
1467
+ */
1468
+ currency: string;
1469
+ /**
1470
+ * Whether this is a fixed rate (true) or auction-based (false)
1471
+ */
1472
+ is_fixed: true;
1473
+ /**
1474
+ * CPP-specific parameters for demographic targeting and GRP requirements
1475
+ */
1476
+ parameters: {
1477
+ /**
1478
+ * Target demographic in Nielsen format: P/M/W/A/C + age range. Examples: P18-49 (Persons 18-49), M25-54 (Men 25-54), W35+ (Women 35+), A18-34 (Adults 18-34), C2-11 (Children 2-11)
1479
+ */
1480
+ demographic: string;
1481
+ /**
1482
+ * Minimum GRPs/TRPs required for this pricing option
1483
+ */
1484
+ min_points?: number;
1485
+ };
1486
+ /**
1487
+ * Minimum spend requirement per package using this pricing option, in the specified currency
1488
+ */
1489
+ min_spend_per_package?: number;
1490
+ }
1491
+ /**
1492
+ * Flat rate pricing for DOOH, sponsorships, and time-based campaigns - fixed cost regardless of delivery volume
1493
+ */
1494
+ export interface FlatRatePricingOption {
1495
+ /**
1496
+ * Unique identifier for this pricing option within the product (e.g., 'flat_rate_usd_24h_takeover')
1497
+ */
1498
+ pricing_option_id: string;
1499
+ /**
1500
+ * Fixed cost regardless of delivery volume
1501
+ */
1502
+ pricing_model: 'flat_rate';
1503
+ /**
1504
+ * Flat rate cost
1505
+ */
1506
+ rate: number;
1507
+ /**
1508
+ * ISO 4217 currency code
1509
+ */
1510
+ currency: string;
1511
+ /**
1512
+ * Whether this is a fixed rate (true) or auction-based (false)
1513
+ */
1514
+ is_fixed: true;
1515
+ /**
1516
+ * Flat rate parameters for DOOH and time-based campaigns
1517
+ */
1518
+ parameters?: {
1519
+ /**
1520
+ * Duration in hours for time-based flat rate pricing (DOOH)
1521
+ */
1522
+ duration_hours?: number;
1523
+ /**
1524
+ * Guaranteed share of voice as percentage (DOOH, 0-100)
1525
+ */
1526
+ sov_percentage?: number;
1527
+ /**
1528
+ * Duration of ad loop rotation in seconds (DOOH)
1529
+ */
1530
+ loop_duration_seconds?: number;
1531
+ /**
1532
+ * Minimum number of times ad plays per hour (DOOH frequency guarantee)
1533
+ */
1534
+ min_plays_per_hour?: number;
1535
+ /**
1536
+ * Named venue package identifier for DOOH (e.g., 'times_square_network', 'airport_terminals')
1537
+ */
1538
+ venue_package?: string;
1539
+ /**
1540
+ * Estimated impressions for this flat rate option (informational, commonly used with SOV or time-based DOOH)
1541
+ */
1542
+ estimated_impressions?: number;
1543
+ /**
1544
+ * Specific daypart for time-based pricing (e.g., 'morning_commute', 'evening_prime', 'overnight')
1545
+ */
1546
+ daypart?: string;
1547
+ };
1548
+ /**
1549
+ * Minimum spend requirement per package using this pricing option, in the specified currency
1550
+ */
1551
+ min_spend_per_package?: number;
1552
+ }
1553
+ /**
1554
+ * Measurement capabilities included with a product
1555
+ */
1556
+ export interface Measurement {
1557
+ /**
1558
+ * Type of measurement
1559
+ */
1560
+ type: string;
1561
+ /**
1562
+ * Attribution methodology
1563
+ */
1564
+ attribution: string;
1565
+ /**
1566
+ * Attribution window
1567
+ */
1568
+ window?: string;
1569
+ /**
1570
+ * Reporting frequency and format
1571
+ */
1572
+ reporting: string;
1573
+ }
1574
+ /**
1575
+ * Reporting capabilities available for a product
1576
+ */
1577
+ export interface ReportingCapabilities {
1578
+ /**
1579
+ * Supported reporting frequency options
1580
+ */
1581
+ available_reporting_frequencies: ReportingFrequency[];
1582
+ /**
1583
+ * Expected delay in minutes before reporting data becomes available (e.g., 240 for 4-hour delay)
1584
+ */
1585
+ expected_delay_minutes: number;
1586
+ /**
1587
+ * Timezone for reporting periods. Use 'UTC' or IANA timezone (e.g., 'America/New_York'). Critical for daily/monthly frequency alignment.
1588
+ */
1589
+ timezone: string;
1590
+ /**
1591
+ * Whether this product supports webhook-based reporting notifications
1592
+ */
1593
+ supports_webhooks: boolean;
1594
+ /**
1595
+ * Metrics available in reporting. Impressions and spend are always implicitly included.
1596
+ */
1597
+ available_metrics: AvailableMetric[];
1598
+ }
1599
+ /**
1600
+ * Creative requirements and restrictions for a product
1601
+ */
1602
+ export interface CreativePolicy {
1603
+ co_branding: CoBrandingRequirement;
1604
+ landing_page: LandingPageRequirement;
1605
+ /**
1606
+ * Whether creative templates are provided
1607
+ */
1608
+ templates_available: boolean;
1609
+ }
1610
+ /**
1611
+ * Standard error structure for task-specific errors and warnings
1612
+ */
1613
+ export interface Error {
1614
+ /**
1615
+ * Error code for programmatic handling
1616
+ */
1617
+ code: string;
1618
+ /**
1619
+ * Human-readable error message
1620
+ */
1621
+ message: string;
1622
+ /**
1623
+ * Field path associated with the error (e.g., 'packages[0].targeting')
1624
+ */
1625
+ field?: string;
1626
+ /**
1627
+ * Suggested fix for the error
1628
+ */
1629
+ suggestion?: string;
1630
+ /**
1631
+ * Seconds to wait before retrying the operation
1632
+ */
1633
+ retry_after?: number;
1634
+ /**
1635
+ * Additional task-specific error details
1636
+ */
1637
+ details?: {};
1638
+ }
1639
+ /**
1640
+ * Request parameters for discovering supported creative formats
1641
+ */
1642
+ export interface ListCreativeFormatsRequest {
1643
+ /**
1644
+ * Return only these specific format IDs (e.g., from get_products response)
1645
+ */
1646
+ format_ids?: FormatID[];
1647
+ type?: FormatCategory;
1648
+ /**
1649
+ * 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.
1650
+ */
1651
+ asset_types?: AssetContentType[];
1652
+ /**
1653
+ * 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.
1654
+ */
1655
+ max_width?: number;
1656
+ /**
1657
+ * Maximum height in pixels (inclusive). Returns formats where ANY render has height <= this value. For multi-render formats, matches if at least one render fits.
1658
+ */
1659
+ max_height?: number;
1660
+ /**
1661
+ * Minimum width in pixels (inclusive). Returns formats where ANY render has width >= this value.
1662
+ */
1663
+ min_width?: number;
1664
+ /**
1665
+ * Minimum height in pixels (inclusive). Returns formats where ANY render has height >= this value.
1666
+ */
1667
+ min_height?: number;
1668
+ /**
1669
+ * Filter for responsive formats that adapt to container size. When true, returns formats without fixed dimensions.
1670
+ */
1671
+ is_responsive?: boolean;
1672
+ /**
1673
+ * Search for formats by name (case-insensitive partial match)
1674
+ */
1675
+ name_search?: string;
1676
+ context?: ContextObject;
1677
+ ext?: ExtensionObject;
1678
+ }
1679
+ /**
1680
+ * Response payload for list_creative_formats task
1681
+ */
1682
+ export interface ListCreativeFormatsResponse {
1683
+ /**
1684
+ * Full format definitions for all formats this agent supports. Each format's authoritative source is indicated by its agent_url field.
1685
+ */
1686
+ formats: Format[];
1687
+ /**
1688
+ * Optional: Creative agents that provide additional formats. Buyers can recursively query these agents to discover more formats. No authentication required for list_creative_formats.
1689
+ */
1690
+ creative_agents?: {
1691
+ /**
1692
+ * Base URL for the creative agent (e.g., 'https://reference.adcp.org', 'https://dco.example.com'). Call list_creative_formats on this URL to get its formats.
1693
+ */
1694
+ agent_url: string;
1695
+ /**
1696
+ * Human-readable name for the creative agent
1697
+ */
1698
+ agent_name?: string;
1699
+ /**
1700
+ * Capabilities this creative agent provides
1701
+ */
1702
+ capabilities?: CreativeAgentCapability[];
1703
+ }[];
1704
+ /**
1705
+ * Task-specific errors and warnings (e.g., format availability issues)
1706
+ */
1707
+ errors?: Error[];
1708
+ context?: ContextObject;
1709
+ ext?: ExtensionObject;
1710
+ }
1711
+ /**
1712
+ * Represents a creative format with its requirements
1713
+ */
1714
+ export interface Format {
1715
+ format_id: FormatID;
1716
+ /**
1717
+ * Human-readable format name
1718
+ */
1719
+ name: string;
1720
+ /**
1721
+ * Plain text explanation of what this format does and what assets it requires
1722
+ */
1723
+ description?: string;
1724
+ /**
1725
+ * DEPRECATED: Use format_card instead. Optional preview image URL for format browsing/discovery UI. Should be 400x300px (4:3 aspect ratio) PNG or JPG. Used as thumbnail/card image in format browsers. This field is maintained for backward compatibility but format_card provides a more flexible, structured approach.
1726
+ */
1727
+ preview_image?: string;
1728
+ /**
1729
+ * Optional URL to showcase page with examples and interactive demos of this format
1730
+ */
1731
+ example_url?: string;
1732
+ type: FormatCategory;
1733
+ /**
1734
+ * 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.
1735
+ */
1736
+ accepts_parameters?: FormatIDParameter[];
1737
+ /**
1738
+ * 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.
1739
+ */
1740
+ renders?: ({
1741
+ [k: string]: unknown | undefined;
1742
+ } | {
1743
+ parameters_from_format_id: true;
1744
+ })[];
1745
+ /**
1746
+ * 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).
1747
+ */
1748
+ assets_required?: ({
1749
+ /**
1750
+ * Discriminator indicating this is an individual asset requirement
1751
+ */
1752
+ item_type: 'individual';
1753
+ /**
1754
+ * Unique identifier for this asset. Creative manifests MUST use this exact value as the key in the assets object.
1755
+ */
1756
+ asset_id: string;
1757
+ asset_type: AssetContentType;
1758
+ /**
1759
+ * 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.
1760
+ */
1761
+ asset_role?: string;
1762
+ /**
1763
+ * Whether this asset is required
1764
+ */
1765
+ required?: boolean;
1766
+ /**
1767
+ * 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).
1768
+ */
1769
+ requirements?: {};
1770
+ } | {
1771
+ /**
1772
+ * Discriminator indicating this is a repeatable asset group
1773
+ */
1774
+ item_type: 'repeatable_group';
1775
+ /**
1776
+ * Identifier for this asset group (e.g., 'product', 'slide', 'card')
1777
+ */
1778
+ asset_group_id: string;
1779
+ /**
1780
+ * Minimum number of repetitions required
1781
+ */
1782
+ min_count: number;
1783
+ /**
1784
+ * Maximum number of repetitions allowed
1785
+ */
1786
+ max_count: number;
1787
+ /**
1788
+ * Assets within each repetition of this group
1789
+ */
1790
+ assets: {
1791
+ /**
1792
+ * Identifier for this asset within the group
1793
+ */
1794
+ asset_id: string;
1795
+ asset_type: AssetContentType;
1796
+ /**
1797
+ * 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.
1798
+ */
1799
+ asset_role?: string;
1800
+ /**
1801
+ * Whether this asset is required in each repetition
1802
+ */
1803
+ required?: boolean;
1804
+ /**
1805
+ * 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).
1806
+ */
1807
+ requirements?: {};
1808
+ }[];
1809
+ })[];
1810
+ /**
1811
+ * Delivery method specifications (e.g., hosted, VAST, third-party tags)
1812
+ */
1813
+ delivery?: {};
1814
+ /**
1815
+ * List of universal macros supported by this format (e.g., MEDIA_BUY_ID, CACHEBUSTER, DEVICE_ID). Used for validation and developer tooling.
1816
+ */
1817
+ supported_macros?: string[];
1818
+ /**
1819
+ * For generative formats: array of format IDs that this format can generate. When a format accepts inputs like brand_manifest and message, this specifies what concrete output formats can be produced (e.g., a generative banner format might output standard image banner formats).
1820
+ */
1821
+ output_format_ids?: FormatID[];
1822
+ /**
1823
+ * Optional standard visual card (300x400px) for displaying this format in user interfaces. Can be rendered via preview_creative or pre-generated.
1824
+ */
1825
+ format_card?: {
1826
+ format_id: FormatID;
1827
+ /**
1828
+ * Asset manifest for rendering the card, structure defined by the format
1829
+ */
1830
+ manifest: {};
1831
+ };
1832
+ /**
1833
+ * Optional detailed card with carousel and full specifications. Provides rich format documentation similar to ad spec pages.
1834
+ */
1835
+ format_card_detailed?: {
1836
+ format_id: FormatID;
1837
+ /**
1838
+ * Asset manifest for rendering the detailed card, structure defined by the format
1839
+ */
1840
+ manifest: {};
1841
+ };
1842
+ }
1843
+ /**
1844
+ * Request parameters for creating a media buy
1845
+ */
1846
+ export interface CreateMediaBuyRequest {
1847
+ /**
1848
+ * Buyer's reference identifier for this media buy
1849
+ */
1850
+ buyer_ref: string;
1851
+ /**
1852
+ * Array of package configurations
1853
+ */
1854
+ packages: PackageRequest[];
1855
+ brand_manifest: BrandManifestReference;
1856
+ /**
1857
+ * Purchase order number for tracking
1858
+ */
1859
+ po_number?: string;
1860
+ start_time: StartTiming;
1861
+ /**
1862
+ * Campaign end date/time in ISO 8601 format
1863
+ */
1864
+ end_time: string;
1865
+ /**
1866
+ * Optional webhook configuration for automated reporting delivery. Combines push_notification_config structure with reporting-specific fields.
1867
+ */
1868
+ reporting_webhook?: {
1869
+ /**
1870
+ * Webhook endpoint URL for reporting notifications
1871
+ */
1872
+ url: string;
1873
+ /**
1874
+ * Optional client-provided token for webhook validation. Echoed back in webhook payload to validate request authenticity.
1875
+ */
1876
+ token?: string;
1877
+ /**
1878
+ * Authentication configuration for webhook delivery (A2A-compatible)
1879
+ */
1880
+ authentication: {
1881
+ /**
1882
+ * Array of authentication schemes. Supported: ['Bearer'] for simple token auth, ['HMAC-SHA256'] for signature verification (recommended for production)
1883
+ */
1884
+ schemes: AuthenticationScheme[];
1885
+ /**
1886
+ * 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.
1887
+ */
1888
+ credentials: string;
1889
+ };
1890
+ /**
1891
+ * Frequency for automated reporting delivery. Must be supported by all products in the media buy.
1892
+ */
1893
+ reporting_frequency: 'hourly' | 'daily' | 'monthly';
1894
+ /**
1895
+ * Optional list of metrics to include in webhook notifications. If omitted, all available metrics are included. Must be subset of product's available_metrics.
1896
+ */
1897
+ requested_metrics?: ('impressions' | 'spend' | 'clicks' | 'ctr' | 'video_completions' | 'completion_rate' | 'conversions' | 'viewability' | 'engagement_rate')[];
1898
+ };
1899
+ context?: ContextObject;
1900
+ ext?: ExtensionObject;
1901
+ }
1902
+ /**
1903
+ * Package configuration for media buy creation
1904
+ */
1905
+ export interface PackageRequest {
1906
+ /**
1907
+ * Buyer's reference identifier for this package
1908
+ */
1909
+ buyer_ref: string;
1910
+ /**
1911
+ * Product ID for this package
1912
+ */
1913
+ product_id: string;
1914
+ /**
1915
+ * Array of format IDs that will be used for this package - must be supported by the product. If omitted, defaults to all formats supported by the product.
1916
+ */
1917
+ format_ids?: FormatID[];
1918
+ /**
1919
+ * Budget allocation for this package in the media buy's currency
1920
+ */
1921
+ budget: number;
1922
+ pacing?: Pacing;
1923
+ /**
1924
+ * ID of the selected pricing option from the product's pricing_options array
1925
+ */
1926
+ pricing_option_id: string;
1927
+ /**
1928
+ * Bid price for auction-based CPM pricing (required if using cpm-auction-option)
1929
+ */
1930
+ bid_price?: number;
1931
+ /**
1932
+ * Impression goal for this package
1933
+ */
1934
+ impressions?: number;
1935
+ /**
1936
+ * Whether this package should be created in a paused state. Paused packages do not deliver impressions. Defaults to false.
1937
+ */
1938
+ paused?: boolean;
1939
+ targeting_overlay?: TargetingOverlay;
1940
+ /**
1941
+ * Creative IDs to assign to this package at creation time (references existing library creatives)
1942
+ */
1943
+ creative_ids?: string[];
1944
+ /**
1945
+ * Full creative objects to upload and assign to this package at creation time (alternative to creative_ids - creatives will be added to library). Supports both static and generative creatives.
1946
+ */
1947
+ creatives?: CreativeAsset[];
1948
+ ext?: ExtensionObject;
1949
+ }
1950
+ /**
1951
+ * 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).
1952
+ */
1953
+ export interface TargetingOverlay {
1954
+ /**
1955
+ * Restrict delivery to specific countries (ISO codes). Use for regulatory compliance or RCT testing.
1956
+ */
1957
+ geo_country_any_of?: string[];
1958
+ /**
1959
+ * Restrict delivery to specific regions/states. Use for regulatory compliance or RCT testing.
1960
+ */
1961
+ geo_region_any_of?: string[];
1962
+ /**
1963
+ * Restrict delivery to specific metro areas (DMA codes). Use for regulatory compliance or RCT testing.
1964
+ */
1965
+ geo_metro_any_of?: string[];
1966
+ /**
1967
+ * Restrict delivery to specific postal/ZIP codes. Use for regulatory compliance or RCT testing.
1968
+ */
1969
+ geo_postal_code_any_of?: string[];
1970
+ /**
1971
+ * AXE segment ID to include for targeting
1972
+ */
1973
+ axe_include_segment?: string;
1974
+ /**
1975
+ * AXE segment ID to exclude from targeting
1976
+ */
1977
+ axe_exclude_segment?: string;
1978
+ frequency_cap?: FrequencyCap;
1979
+ }
1980
+ /**
1981
+ * Frequency capping settings for package-level application
1982
+ */
1983
+ export interface FrequencyCap {
1984
+ /**
1985
+ * Minutes to suppress after impression
1986
+ */
1987
+ suppress_minutes: number;
1988
+ }
1989
+ /**
1990
+ * Creative asset for upload to library - supports static assets, generative formats, and third-party snippets
1991
+ */
1992
+ export interface CreativeAsset {
1993
+ /**
1994
+ * Unique identifier for the creative
1995
+ */
1996
+ creative_id: string;
1997
+ /**
1998
+ * Human-readable creative name
1999
+ */
2000
+ name: string;
2001
+ format_id: FormatID;
2002
+ /**
2003
+ * Assets required by the format, keyed by asset_role
2004
+ */
2005
+ assets: {
2006
+ /**
2007
+ * This interface was referenced by `undefined`'s JSON-Schema definition
2008
+ * via the `patternProperty` "^[a-zA-Z0-9_-]+$".
2009
+ */
2010
+ [k: string]: ImageAsset | VideoAsset | AudioAsset | TextAsset | HTMLAsset | CSSAsset | JavaScriptAsset | VASTAsset | DAASTAsset | PromotedOfferings | URLAsset;
2011
+ };
2012
+ /**
2013
+ * Preview contexts for generative formats - defines what scenarios to generate previews for
2014
+ */
2015
+ inputs?: {
2016
+ /**
2017
+ * Human-readable name for this preview variant
2018
+ */
2019
+ name: string;
2020
+ /**
2021
+ * Macro values to apply for this preview
2022
+ */
2023
+ macros?: {
2024
+ [k: string]: string | undefined;
2025
+ };
2026
+ /**
2027
+ * Natural language description of the context for AI-generated content
2028
+ */
2029
+ context_description?: string;
2030
+ }[];
2031
+ /**
2032
+ * User-defined tags for organization and searchability
2033
+ */
2034
+ tags?: string[];
2035
+ /**
2036
+ * For generative creatives: set to true to approve and finalize, false to request regeneration with updated assets/message. Omit for non-generative creatives.
2037
+ */
2038
+ approved?: boolean;
2039
+ /**
2040
+ * 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.
2041
+ */
2042
+ weight?: number;
2043
+ /**
2044
+ * 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.
2045
+ */
2046
+ placement_ids?: string[];
2047
+ }
2048
+ /**
2049
+ * Image asset with URL and dimensions
2050
+ */
2051
+ export interface ImageAsset {
2052
+ /**
2053
+ * URL to the image asset
2054
+ */
2055
+ url: string;
2056
+ /**
2057
+ * Width in pixels
2058
+ */
2059
+ width: number;
2060
+ /**
2061
+ * Height in pixels
2062
+ */
2063
+ height: number;
2064
+ /**
2065
+ * Image file format (jpg, png, gif, webp, etc.)
2066
+ */
2067
+ format?: string;
2068
+ /**
2069
+ * Alternative text for accessibility
2070
+ */
2071
+ alt_text?: string;
2072
+ }
2073
+ /**
2074
+ * Video asset with URL and specifications
2075
+ */
2076
+ export interface VideoAsset {
2077
+ /**
2078
+ * URL to the video asset
2079
+ */
2080
+ url: string;
2081
+ /**
2082
+ * Width in pixels
2083
+ */
2084
+ width: number;
2085
+ /**
2086
+ * Height in pixels
2087
+ */
2088
+ height: number;
2089
+ /**
2090
+ * Video duration in milliseconds
2091
+ */
2092
+ duration_ms?: number;
2093
+ /**
2094
+ * Video file format (mp4, webm, mov, etc.)
2095
+ */
2096
+ format?: string;
2097
+ /**
2098
+ * Video bitrate in kilobits per second
2099
+ */
2100
+ bitrate_kbps?: number;
2101
+ }
2102
+ /**
2103
+ * Audio asset with URL and specifications
2104
+ */
2105
+ export interface AudioAsset {
2106
+ /**
2107
+ * URL to the audio asset
2108
+ */
2109
+ url: string;
2110
+ /**
2111
+ * Audio duration in milliseconds
2112
+ */
2113
+ duration_ms?: number;
2114
+ /**
2115
+ * Audio file format (mp3, wav, aac, etc.)
2116
+ */
2117
+ format?: string;
2118
+ /**
2119
+ * Audio bitrate in kilobits per second
2120
+ */
2121
+ bitrate_kbps?: number;
2122
+ }
2123
+ /**
2124
+ * Text content asset
2125
+ */
2126
+ export interface TextAsset {
2127
+ /**
2128
+ * Text content
2129
+ */
2130
+ content: string;
2131
+ /**
2132
+ * Language code (e.g., 'en', 'es', 'fr')
2133
+ */
2134
+ language?: string;
2135
+ }
2136
+ /**
2137
+ * HTML content asset
2138
+ */
2139
+ export interface HTMLAsset {
2140
+ /**
2141
+ * HTML content
2142
+ */
2143
+ content: string;
2144
+ /**
2145
+ * HTML version (e.g., 'HTML5')
2146
+ */
2147
+ version?: string;
2148
+ }
2149
+ /**
2150
+ * CSS stylesheet asset
2151
+ */
2152
+ export interface CSSAsset {
2153
+ /**
2154
+ * CSS content
2155
+ */
2156
+ content: string;
2157
+ /**
2158
+ * CSS media query context (e.g., 'screen', 'print')
2159
+ */
2160
+ media?: string;
2161
+ }
2162
+ /**
2163
+ * JavaScript code asset
2164
+ */
2165
+ export interface JavaScriptAsset {
2166
+ /**
2167
+ * JavaScript content
2168
+ */
2169
+ content: string;
2170
+ module_type?: JavaScriptModuleType;
2171
+ }
2172
+ /**
2173
+ * Complete offering specification combining brand manifest, product selectors, and asset filters. Provides all context needed for creative generation about what is being promoted.
2174
+ */
2175
+ export interface PromotedOfferings {
2176
+ brand_manifest: BrandManifestReference;
2177
+ product_selectors?: PromotedProducts;
2178
+ /**
2179
+ * Inline offerings for campaigns without a product catalog. Each offering has a name, description, and associated assets.
2180
+ */
2181
+ offerings?: {
2182
+ /**
2183
+ * Offering name (e.g., 'Winter Sale', 'New Product Launch')
2184
+ */
2185
+ name: string;
2186
+ /**
2187
+ * Description of what's being offered
2188
+ */
2189
+ description?: string;
2190
+ /**
2191
+ * Assets specific to this offering
2192
+ */
2193
+ assets?: {}[];
2194
+ }[];
2195
+ /**
2196
+ * Selectors to choose specific assets from the brand manifest
2197
+ */
2198
+ asset_selectors?: {
2199
+ /**
2200
+ * Select assets with specific tags (e.g., ['holiday', 'premium'])
2201
+ */
2202
+ tags?: string[];
2203
+ /**
2204
+ * Filter by asset type (e.g., ['image', 'video'])
2205
+ */
2206
+ asset_types?: ('image' | 'video' | 'audio' | 'vast' | 'daast' | 'text' | 'url' | 'html' | 'css' | 'javascript' | 'webhook')[];
2207
+ /**
2208
+ * Exclude assets with these tags
2209
+ */
2210
+ exclude_tags?: string[];
2211
+ };
2212
+ }
2213
+ /**
2214
+ * Selectors to choose which products/offerings from the brand manifest product catalog to promote
2215
+ */
2216
+ export interface PromotedProducts {
2217
+ /**
2218
+ * Direct product SKU references from the brand manifest product catalog
2219
+ */
2220
+ manifest_skus?: string[];
2221
+ /**
2222
+ * Select products by tags from the brand manifest product catalog (e.g., 'organic', 'sauces', 'holiday')
2223
+ */
2224
+ manifest_tags?: string[];
2225
+ /**
2226
+ * Select products from a specific category in the brand manifest product catalog (e.g., 'beverages/soft-drinks', 'food/sauces')
2227
+ */
2228
+ manifest_category?: string;
2229
+ /**
2230
+ * Natural language query to select products from the brand manifest (e.g., 'all Kraft Heinz pasta sauces', 'organic products under $20')
2231
+ */
2232
+ manifest_query?: string;
2233
+ }
2234
+ /**
2235
+ * URL reference asset
2236
+ */
2237
+ export interface URLAsset {
2238
+ /**
2239
+ * URL reference
2240
+ */
2241
+ url: string;
2242
+ url_type?: URLAssetType;
2243
+ /**
2244
+ * Description of what this URL points to
2245
+ */
2246
+ description?: string;
2247
+ }
2248
+ /**
2249
+ * Success response - media buy created successfully
2250
+ */
2251
+ export interface CreateMediaBuySuccess {
2252
+ /**
2253
+ * Publisher's unique identifier for the created media buy
2254
+ */
2255
+ media_buy_id: string;
2256
+ /**
2257
+ * Buyer's reference identifier for this media buy
2258
+ */
2259
+ buyer_ref: string;
2260
+ /**
2261
+ * ISO 8601 timestamp for creative upload deadline
2262
+ */
2263
+ creative_deadline?: string;
2264
+ /**
2265
+ * Array of created packages with complete state information
2266
+ */
2267
+ packages: Package[];
2268
+ context?: ContextObject;
2269
+ ext?: ExtensionObject;
2270
+ }
2271
+ /**
2272
+ * A specific product within a media buy (line item)
2273
+ */
2274
+ export interface Package {
2275
+ /**
2276
+ * Publisher's unique identifier for the package
2277
+ */
2278
+ package_id: string;
2279
+ /**
2280
+ * Buyer's reference identifier for this package
2281
+ */
2282
+ buyer_ref?: string;
2283
+ /**
2284
+ * ID of the product this package is based on
2285
+ */
2286
+ product_id?: string;
2287
+ /**
2288
+ * Budget allocation for this package in the currency specified by the pricing option
2289
+ */
2290
+ budget?: number;
2291
+ pacing?: Pacing;
2292
+ /**
2293
+ * ID of the selected pricing option from the product's pricing_options array
2294
+ */
2295
+ pricing_option_id?: string;
2296
+ /**
2297
+ * Bid price for auction-based CPM pricing (present if using cpm-auction-option)
2298
+ */
2299
+ bid_price?: number;
2300
+ /**
2301
+ * Impression goal for this package
2302
+ */
2303
+ impressions?: number;
2304
+ targeting_overlay?: TargetingOverlay;
2305
+ /**
2306
+ * Creative assets assigned to this package
2307
+ */
2308
+ creative_assignments?: CreativeAssignment[];
2309
+ /**
2310
+ * Format IDs that creative assets will be provided for this package
2311
+ */
2312
+ format_ids_to_provide?: FormatID[];
2313
+ /**
2314
+ * Whether this package is paused by the buyer. Paused packages do not deliver impressions. Defaults to false.
2315
+ */
2316
+ paused?: boolean;
2317
+ ext?: ExtensionObject;
2318
+ }
2319
+ /**
2320
+ * Assignment of a creative asset to a package with optional placement targeting. Used in create_media_buy and update_media_buy requests. Note: sync_creatives does not support placement_ids - use create/update_media_buy for placement-level targeting.
2321
+ */
2322
+ export interface CreativeAssignment {
2323
+ /**
2324
+ * Unique identifier for the creative
2325
+ */
2326
+ creative_id: string;
2327
+ /**
2328
+ * Delivery weight for this creative
2329
+ */
2330
+ weight?: number;
2331
+ /**
2332
+ * 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.
2333
+ */
2334
+ placement_ids?: string[];
2335
+ }
2336
+ /**
2337
+ * Error response - operation failed, no media buy created
2338
+ */
2339
+ export interface CreateMediaBuyError {
2340
+ /**
2341
+ * Array of errors explaining why the operation failed
2342
+ */
2343
+ errors: Error[];
2344
+ context?: ContextObject;
2345
+ ext?: ExtensionObject;
2346
+ }
2347
+ /**
2348
+ * Request parameters for syncing creative assets with upsert semantics - supports bulk operations, scoped updates, and assignment management
2349
+ */
2350
+ export interface SyncCreativesRequest {
2351
+ /**
2352
+ * Array of creative assets to sync (create or update)
2353
+ */
2354
+ creatives: CreativeAsset[];
2355
+ /**
2356
+ * 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.
2357
+ */
2358
+ creative_ids?: string[];
2359
+ /**
2360
+ * Optional bulk assignment of creatives to packages
2361
+ */
2362
+ assignments?: {
2363
+ /**
2364
+ * Array of package IDs to assign this creative to
2365
+ *
2366
+ * This interface was referenced by `undefined`'s JSON-Schema definition
2367
+ * via the `patternProperty` "^[a-zA-Z0-9_-]+$".
2368
+ */
2369
+ [k: string]: string[];
2370
+ };
2371
+ /**
2372
+ * When true, creatives not included in this sync will be archived. Use with caution for full library replacement.
2373
+ */
2374
+ delete_missing?: boolean;
2375
+ /**
2376
+ * When true, preview changes without applying them. Returns what would be created/updated/deleted.
2377
+ */
2378
+ dry_run?: boolean;
2379
+ validation_mode?: ValidationMode;
2380
+ push_notification_config?: PushNotificationConfig;
2381
+ context?: ContextObject;
2382
+ ext?: ExtensionObject;
2383
+ }
2384
+ /**
2385
+ * Optional webhook configuration for async sync notifications. Publisher will send webhook when sync completes if operation takes longer than immediate response time (typically for large bulk operations or manual approval/HITL).
2386
+ */
2387
+ export interface PushNotificationConfig {
2388
+ /**
2389
+ * Webhook endpoint URL for task status notifications
2390
+ */
2391
+ url: string;
2392
+ /**
2393
+ * Optional client-provided token for webhook validation. Echoed back in webhook payload to validate request authenticity.
2394
+ */
2395
+ token?: string;
2396
+ /**
2397
+ * Authentication configuration for webhook delivery (A2A-compatible)
2398
+ */
2399
+ authentication: {
2400
+ /**
2401
+ * Array of authentication schemes. Supported: ['Bearer'] for simple token auth, ['HMAC-SHA256'] for signature verification (recommended for production)
2402
+ */
2403
+ schemes: AuthenticationScheme[];
2404
+ /**
2405
+ * 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.
2406
+ */
2407
+ credentials: string;
2408
+ };
2409
+ }
2410
+ /**
2411
+ * Success response - sync operation processed creatives (may include per-item failures)
2412
+ */
2413
+ export interface SyncCreativesSuccess {
2414
+ /**
2415
+ * Whether this was a dry run (no actual changes made)
2416
+ */
2417
+ dry_run?: boolean;
2418
+ /**
2419
+ * Results for each creative processed. Items with action='failed' indicate per-item validation/processing failures, not operation-level failures.
2420
+ */
2421
+ creatives: {
2422
+ /**
2423
+ * Creative ID from the request
2424
+ */
2425
+ creative_id: string;
2426
+ action: CreativeAction;
2427
+ /**
2428
+ * Platform-specific ID assigned to the creative
2429
+ */
2430
+ platform_id?: string;
2431
+ /**
2432
+ * Field names that were modified (only present when action='updated')
2433
+ */
2434
+ changes?: string[];
2435
+ /**
2436
+ * Validation or processing errors (only present when action='failed')
2437
+ */
2438
+ errors?: string[];
2439
+ /**
2440
+ * Non-fatal warnings about this creative
2441
+ */
2442
+ warnings?: string[];
2443
+ /**
2444
+ * Preview URL for generative creatives (only present for generative formats)
2445
+ */
2446
+ preview_url?: string;
2447
+ /**
2448
+ * ISO 8601 timestamp when preview link expires (only present when preview_url exists)
2449
+ */
2450
+ expires_at?: string;
2451
+ /**
2452
+ * Package IDs this creative was successfully assigned to (only present when assignments were requested)
2453
+ */
2454
+ assigned_to?: string[];
2455
+ /**
2456
+ * Assignment errors by package ID (only present when assignment failures occurred)
2457
+ */
2458
+ assignment_errors?: {
2459
+ /**
2460
+ * Error message for this package assignment
2461
+ *
2462
+ * This interface was referenced by `undefined`'s JSON-Schema definition
2463
+ * via the `patternProperty` "^[a-zA-Z0-9_-]+$".
2464
+ */
2465
+ [k: string]: string;
2466
+ };
2467
+ }[];
2468
+ context?: ContextObject;
2469
+ ext?: ExtensionObject;
2470
+ }
2471
+ /**
2472
+ * Error response - operation failed completely, no creatives were processed
2473
+ */
2474
+ export interface SyncCreativesError {
2475
+ /**
2476
+ * Operation-level errors that prevented processing any creatives (e.g., authentication failure, service unavailable, invalid request format)
2477
+ */
2478
+ errors: Error[];
2479
+ context?: ContextObject;
2480
+ ext?: ExtensionObject;
2481
+ }
2482
+ /**
2483
+ * Request parameters for querying creative assets from the centralized library with filtering, sorting, and pagination
2484
+ */
2485
+ export interface ListCreativesRequest {
2486
+ filters?: CreativeFilters;
2487
+ /**
2488
+ * Sorting parameters
2489
+ */
2490
+ sort?: {
2491
+ field?: CreativeSortField;
2492
+ direction?: SortDirection;
2493
+ };
2494
+ /**
2495
+ * Pagination parameters
2496
+ */
2497
+ pagination?: {
2498
+ /**
2499
+ * Maximum number of creatives to return
2500
+ */
2501
+ limit?: number;
2502
+ /**
2503
+ * Number of creatives to skip
2504
+ */
2505
+ offset?: number;
2506
+ };
2507
+ /**
2508
+ * Include package assignment information in response
2509
+ */
2510
+ include_assignments?: boolean;
2511
+ /**
2512
+ * Include aggregated performance metrics in response
2513
+ */
2514
+ include_performance?: boolean;
2515
+ /**
2516
+ * Include sub-assets (for carousel/native formats) in response
2517
+ */
2518
+ include_sub_assets?: boolean;
2519
+ /**
2520
+ * Specific fields to include in response (omit for all fields)
2521
+ */
2522
+ fields?: ('creative_id' | 'name' | 'format' | 'status' | 'created_date' | 'updated_date' | 'tags' | 'assignments' | 'performance' | 'sub_assets')[];
2523
+ context?: ContextObject;
2524
+ ext?: ExtensionObject;
2525
+ }
2526
+ /**
2527
+ * Filter criteria for querying creative assets from the centralized library
2528
+ */
2529
+ export interface CreativeFilters {
2530
+ /**
2531
+ * Filter by creative format type (e.g., video, audio, display)
2532
+ */
2533
+ format?: string;
2534
+ /**
2535
+ * Filter by multiple creative format types
2536
+ */
2537
+ formats?: string[];
2538
+ status?: CreativeStatus;
2539
+ /**
2540
+ * Filter by multiple creative statuses
2541
+ */
2542
+ statuses?: CreativeStatus[];
2543
+ /**
2544
+ * Filter by creative tags (all tags must match)
2545
+ */
2546
+ tags?: string[];
2547
+ /**
2548
+ * Filter by creative tags (any tag must match)
2549
+ */
2550
+ tags_any?: string[];
2551
+ /**
2552
+ * Filter by creative names containing this text (case-insensitive)
2553
+ */
2554
+ name_contains?: string;
2555
+ /**
2556
+ * Filter by specific creative IDs
2557
+ */
2558
+ creative_ids?: string[];
2559
+ /**
2560
+ * Filter creatives created after this date (ISO 8601)
2561
+ */
2562
+ created_after?: string;
2563
+ /**
2564
+ * Filter creatives created before this date (ISO 8601)
2565
+ */
2566
+ created_before?: string;
2567
+ /**
2568
+ * Filter creatives last updated after this date (ISO 8601)
2569
+ */
2570
+ updated_after?: string;
2571
+ /**
2572
+ * Filter creatives last updated before this date (ISO 8601)
2573
+ */
2574
+ updated_before?: string;
2575
+ /**
2576
+ * Filter creatives assigned to this specific package
2577
+ */
2578
+ assigned_to_package?: string;
2579
+ /**
2580
+ * Filter creatives assigned to any of these packages
2581
+ */
2582
+ assigned_to_packages?: string[];
2583
+ /**
2584
+ * Filter creatives assigned to any of these media buys
2585
+ */
2586
+ media_buy_ids?: string[];
2587
+ /**
2588
+ * Filter creatives assigned to media buys with any of these buyer references
2589
+ */
2590
+ buyer_refs?: string[];
2591
+ /**
2592
+ * Filter for unassigned creatives when true, assigned creatives when false
2593
+ */
2594
+ unassigned?: boolean;
2595
+ /**
2596
+ * Filter creatives that have performance data when true
2597
+ */
2598
+ has_performance_data?: boolean;
2599
+ }
2600
+ /**
2601
+ * Response from creative library query with filtered results, metadata, and optional enriched data
2602
+ */
2603
+ export interface ListCreativesResponse {
2604
+ /**
2605
+ * Summary of the query that was executed
2606
+ */
2607
+ query_summary: {
2608
+ /**
2609
+ * Total number of creatives matching filters (across all pages)
2610
+ */
2611
+ total_matching: number;
2612
+ /**
2613
+ * Number of creatives returned in this response
2614
+ */
2615
+ returned: number;
2616
+ /**
2617
+ * List of filters that were applied to the query
2618
+ */
2619
+ filters_applied?: string[];
2620
+ /**
2621
+ * Sort order that was applied
2622
+ */
2623
+ sort_applied?: {
2624
+ field?: string;
2625
+ direction?: SortDirection;
2626
+ };
2627
+ };
2628
+ /**
2629
+ * Pagination information for navigating results
2630
+ */
2631
+ pagination: {
2632
+ /**
2633
+ * Maximum number of results requested
2634
+ */
2635
+ limit: number;
2636
+ /**
2637
+ * Number of results skipped
2638
+ */
2639
+ offset: number;
2640
+ /**
2641
+ * Whether more results are available
2642
+ */
2643
+ has_more: boolean;
2644
+ /**
2645
+ * Total number of pages available
2646
+ */
2647
+ total_pages?: number;
2648
+ /**
2649
+ * Current page number (1-based)
2650
+ */
2651
+ current_page?: number;
2652
+ };
2653
+ /**
2654
+ * Array of creative assets matching the query
2655
+ */
2656
+ creatives: {
2657
+ /**
2658
+ * Unique identifier for the creative
2659
+ */
2660
+ creative_id: string;
2661
+ /**
2662
+ * Human-readable creative name
2663
+ */
2664
+ name: string;
2665
+ format_id: FormatID;
2666
+ status: CreativeStatus;
2667
+ /**
2668
+ * When the creative was uploaded to the library
2669
+ */
2670
+ created_date: string;
2671
+ /**
2672
+ * When the creative was last modified
2673
+ */
2674
+ updated_date: string;
2675
+ /**
2676
+ * Assets for this creative, keyed by asset_role
2677
+ */
2678
+ assets?: {
2679
+ /**
2680
+ * This interface was referenced by `undefined`'s JSON-Schema definition
2681
+ * via the `patternProperty` "^[a-zA-Z0-9_-]+$".
2682
+ */
2683
+ [k: string]: ImageAsset | VideoAsset | AudioAsset | TextAsset | HTMLAsset | CSSAsset | JavaScriptAsset | VASTAsset | DAASTAsset | PromotedOfferings | URLAsset;
2684
+ };
2685
+ /**
2686
+ * User-defined tags for organization and searchability
2687
+ */
2688
+ tags?: string[];
2689
+ /**
2690
+ * Current package assignments (included when include_assignments=true)
2691
+ */
2692
+ assignments?: {
2693
+ /**
2694
+ * Total number of active package assignments
2695
+ */
2696
+ assignment_count: number;
2697
+ /**
2698
+ * List of packages this creative is assigned to
2699
+ */
2700
+ assigned_packages?: {
2701
+ /**
2702
+ * Package identifier
2703
+ */
2704
+ package_id: string;
2705
+ /**
2706
+ * Human-readable package name
2707
+ */
2708
+ package_name?: string;
2709
+ /**
2710
+ * When this assignment was created
2711
+ */
2712
+ assigned_date: string;
2713
+ /**
2714
+ * Status of this specific assignment
2715
+ */
2716
+ status: 'active' | 'paused' | 'ended';
2717
+ }[];
2718
+ };
2719
+ /**
2720
+ * Aggregated performance metrics (included when include_performance=true)
2721
+ */
2722
+ performance?: {
2723
+ /**
2724
+ * Total impressions across all assignments
2725
+ */
2726
+ impressions?: number;
2727
+ /**
2728
+ * Total clicks across all assignments
2729
+ */
2730
+ clicks?: number;
2731
+ /**
2732
+ * Click-through rate (clicks/impressions)
2733
+ */
2734
+ ctr?: number;
2735
+ /**
2736
+ * Conversion rate across all assignments
2737
+ */
2738
+ conversion_rate?: number;
2739
+ /**
2740
+ * Aggregated performance score (0-100)
2741
+ */
2742
+ performance_score?: number;
2743
+ /**
2744
+ * When performance data was last updated
2745
+ */
2746
+ last_updated: string;
2747
+ };
2748
+ /**
2749
+ * Sub-assets for multi-asset formats (included when include_sub_assets=true)
2750
+ */
2751
+ sub_assets?: SubAsset[];
2752
+ }[];
2753
+ /**
2754
+ * Breakdown of creatives by format type
2755
+ */
2756
+ format_summary?: {
2757
+ /**
2758
+ * Number of creatives with this format
2759
+ *
2760
+ * This interface was referenced by `undefined`'s JSON-Schema definition
2761
+ * via the `patternProperty` "^[a-zA-Z0-9_-]+$".
2762
+ */
2763
+ [k: string]: number;
2764
+ };
2765
+ /**
2766
+ * Breakdown of creatives by status
2767
+ */
2768
+ status_summary?: {
2769
+ /**
2770
+ * Number of approved creatives
2771
+ */
2772
+ approved?: number;
2773
+ /**
2774
+ * Number of creatives pending review
2775
+ */
2776
+ pending_review?: number;
2777
+ /**
2778
+ * Number of rejected creatives
2779
+ */
2780
+ rejected?: number;
2781
+ /**
2782
+ * Number of archived creatives
2783
+ */
2784
+ archived?: number;
2785
+ };
2786
+ context?: ContextObject;
2787
+ ext?: ExtensionObject;
2788
+ }
2789
+ /**
2790
+ * Success response - media buy updated successfully
2791
+ */
2792
+ export interface UpdateMediaBuySuccess {
2793
+ /**
2794
+ * Publisher's identifier for the media buy
2795
+ */
2796
+ media_buy_id: string;
2797
+ /**
2798
+ * Buyer's reference identifier for the media buy
2799
+ */
2800
+ buyer_ref: string;
2801
+ /**
2802
+ * ISO 8601 timestamp when changes take effect (null if pending approval)
2803
+ */
2804
+ implementation_date?: string | null;
2805
+ /**
2806
+ * Array of packages that were modified with complete state information
2807
+ */
2808
+ affected_packages?: Package[];
2809
+ context?: ContextObject;
2810
+ ext?: ExtensionObject;
2811
+ }
2812
+ /**
2813
+ * Error response - operation failed, no changes applied
2814
+ */
2815
+ export interface UpdateMediaBuyError {
2816
+ /**
2817
+ * Array of errors explaining why the operation failed
2818
+ */
2819
+ errors: Error[];
2820
+ context?: ContextObject;
2821
+ ext?: ExtensionObject;
2822
+ }
2823
+ /**
2824
+ * Request parameters for retrieving comprehensive delivery metrics
2825
+ */
2826
+ export interface GetMediaBuyDeliveryRequest {
2827
+ /**
2828
+ * Array of publisher media buy IDs to get delivery data for
2829
+ */
2830
+ media_buy_ids?: string[];
2831
+ /**
2832
+ * Array of buyer reference IDs to get delivery data for
2833
+ */
2834
+ buyer_refs?: string[];
2835
+ /**
2836
+ * Filter by status. Can be a single status or array of statuses
2837
+ */
2838
+ status_filter?: MediaBuyStatus | MediaBuyStatus[];
2839
+ /**
2840
+ * Start date for reporting period (YYYY-MM-DD)
2841
+ */
2842
+ start_date?: string;
2843
+ /**
2844
+ * End date for reporting period (YYYY-MM-DD)
2845
+ */
2846
+ end_date?: string;
2847
+ context?: ContextObject;
2848
+ ext?: ExtensionObject;
2849
+ }
2850
+ /**
2851
+ * Response payload for get_media_buy_delivery task
2852
+ */
2853
+ export interface GetMediaBuyDeliveryResponse {
2854
+ /**
2855
+ * Type of webhook notification (only present in webhook deliveries): scheduled = regular periodic update, final = campaign completed, delayed = data not yet available, adjusted = resending period with updated data
2856
+ */
2857
+ notification_type?: 'scheduled' | 'final' | 'delayed' | 'adjusted';
2858
+ /**
2859
+ * Indicates if any media buys in this webhook have missing/delayed data (only present in webhook deliveries)
2860
+ */
2861
+ partial_data?: boolean;
2862
+ /**
2863
+ * Number of media buys with reporting_delayed or failed status (only present in webhook deliveries when partial_data is true)
2864
+ */
2865
+ unavailable_count?: number;
2866
+ /**
2867
+ * Sequential notification number (only present in webhook deliveries, starts at 1)
2868
+ */
2869
+ sequence_number?: number;
2870
+ /**
2871
+ * ISO 8601 timestamp for next expected notification (only present in webhook deliveries when notification_type is not 'final')
2872
+ */
2873
+ next_expected_at?: string;
2874
+ /**
2875
+ * Date range for the report. All periods use UTC timezone.
2876
+ */
2877
+ reporting_period: {
2878
+ /**
2879
+ * ISO 8601 start timestamp in UTC (e.g., 2024-02-05T00:00:00Z)
2880
+ */
2881
+ start: string;
2882
+ /**
2883
+ * ISO 8601 end timestamp in UTC (e.g., 2024-02-05T23:59:59Z)
2884
+ */
2885
+ end: string;
2886
+ };
2887
+ /**
2888
+ * ISO 4217 currency code
2889
+ */
2890
+ currency: string;
2891
+ /**
2892
+ * Combined metrics across all returned media buys. Only included in API responses (get_media_buy_delivery), not in webhook notifications.
2893
+ */
2894
+ aggregated_totals?: {
2895
+ /**
2896
+ * Total impressions delivered across all media buys
2897
+ */
2898
+ impressions: number;
2899
+ /**
2900
+ * Total amount spent across all media buys
2901
+ */
2902
+ spend: number;
2903
+ /**
2904
+ * Total clicks across all media buys (if applicable)
2905
+ */
2906
+ clicks?: number;
2907
+ /**
2908
+ * Total video completions across all media buys (if applicable)
2909
+ */
2910
+ video_completions?: number;
2911
+ /**
2912
+ * Number of media buys included in the response
2913
+ */
2914
+ media_buy_count: number;
2915
+ };
2916
+ /**
2917
+ * Array of delivery data for media buys. When used in webhook notifications, may contain multiple media buys aggregated by publisher. When used in get_media_buy_delivery API responses, typically contains requested media buys.
2918
+ */
2919
+ media_buy_deliveries: {
2920
+ /**
2921
+ * Publisher's media buy identifier
2922
+ */
2923
+ media_buy_id: string;
2924
+ /**
2925
+ * Buyer's reference identifier for this media buy
2926
+ */
2927
+ buyer_ref?: string;
2928
+ /**
2929
+ * Current media buy status. In webhook context, reporting_delayed indicates data temporarily unavailable.
2930
+ */
2931
+ status: 'pending' | 'active' | 'paused' | 'completed' | 'failed' | 'reporting_delayed';
2932
+ /**
2933
+ * When delayed data is expected to be available (only present when status is reporting_delayed)
2934
+ */
2935
+ expected_availability?: string;
2936
+ /**
2937
+ * Indicates this delivery contains updated data for a previously reported period. Buyer should replace previous period data with these totals.
2938
+ */
2939
+ is_adjusted?: boolean;
2940
+ pricing_model?: PricingModel;
2941
+ totals: DeliveryMetrics & {
2942
+ /**
2943
+ * Effective rate paid per unit based on pricing_model (e.g., actual CPM for 'cpm', actual cost per completed view for 'cpcv', actual cost per point for 'cpp')
2944
+ */
2945
+ effective_rate?: number;
2946
+ };
2947
+ /**
2948
+ * Metrics broken down by package
2949
+ */
2950
+ by_package: (DeliveryMetrics & {
2951
+ /**
2952
+ * Publisher's package identifier
2953
+ */
2954
+ package_id: string;
2955
+ /**
2956
+ * Buyer's reference identifier for this package
2957
+ */
2958
+ buyer_ref?: string;
2959
+ /**
2960
+ * Delivery pace (1.0 = on track, <1.0 = behind, >1.0 = ahead)
2961
+ */
2962
+ pacing_index?: number;
2963
+ pricing_model: PricingModel;
2964
+ /**
2965
+ * The pricing rate for this package in the specified currency. For fixed-rate pricing, this is the agreed rate (e.g., CPM rate of 12.50 means $12.50 per 1,000 impressions). For auction-based pricing, this represents the effective rate based on actual delivery.
2966
+ */
2967
+ rate: number;
2968
+ /**
2969
+ * 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.
2970
+ */
2971
+ currency: string;
2972
+ /**
2973
+ * System-reported operational state of this package. Reflects actual delivery state independent of buyer pause control.
2974
+ */
2975
+ delivery_status?: 'delivering' | 'completed' | 'budget_exhausted' | 'flight_ended' | 'goal_met';
2976
+ /**
2977
+ * Whether this package is currently paused by the buyer
2978
+ */
2979
+ paused?: boolean;
2980
+ })[];
2981
+ /**
2982
+ * Day-by-day delivery
2983
+ */
2984
+ daily_breakdown?: {
2985
+ /**
2986
+ * Date (YYYY-MM-DD)
2987
+ */
2988
+ date: string;
2989
+ /**
2990
+ * Daily impressions
2991
+ */
2992
+ impressions: number;
2993
+ /**
2994
+ * Daily spend
2995
+ */
2996
+ spend: number;
2997
+ }[];
2998
+ }[];
2999
+ /**
3000
+ * Task-specific errors and warnings (e.g., missing delivery data, reporting platform issues)
3001
+ */
3002
+ errors?: Error[];
3003
+ context?: ContextObject;
3004
+ ext?: ExtensionObject;
3005
+ }
3006
+ /**
3007
+ * Standard delivery metrics that can be reported at media buy, package, or creative level
3008
+ */
3009
+ export interface DeliveryMetrics {
3010
+ /**
3011
+ * Impressions delivered
3012
+ */
3013
+ impressions?: number;
3014
+ /**
3015
+ * Amount spent
3016
+ */
3017
+ spend?: number;
3018
+ /**
3019
+ * Total clicks
3020
+ */
3021
+ clicks?: number;
3022
+ /**
3023
+ * Click-through rate (clicks/impressions)
3024
+ */
3025
+ ctr?: number;
3026
+ /**
3027
+ * Views at threshold (for CPV)
3028
+ */
3029
+ views?: number;
3030
+ /**
3031
+ * 100% completions (for CPCV)
3032
+ */
3033
+ completed_views?: number;
3034
+ /**
3035
+ * Completion rate (completed_views/impressions)
3036
+ */
3037
+ completion_rate?: number;
3038
+ /**
3039
+ * Conversions (reserved for future CPA pricing support)
3040
+ */
3041
+ conversions?: number;
3042
+ /**
3043
+ * Leads generated (reserved for future CPL pricing support)
3044
+ */
3045
+ leads?: number;
3046
+ /**
3047
+ * Gross Rating Points delivered (for CPP)
3048
+ */
3049
+ grps?: number;
3050
+ /**
3051
+ * Unique reach - units depend on measurement provider (e.g., individuals, households, devices, cookies). See delivery_measurement.provider for methodology.
3052
+ */
3053
+ reach?: number;
3054
+ /**
3055
+ * Average frequency per individual (typically measured over campaign duration, but can vary by measurement provider)
3056
+ */
3057
+ frequency?: number;
3058
+ /**
3059
+ * Video quartile completion data
3060
+ */
3061
+ quartile_data?: {
3062
+ /**
3063
+ * 25% completion views
3064
+ */
3065
+ q1_views?: number;
3066
+ /**
3067
+ * 50% completion views
3068
+ */
3069
+ q2_views?: number;
3070
+ /**
3071
+ * 75% completion views
3072
+ */
3073
+ q3_views?: number;
3074
+ /**
3075
+ * 100% completion views
3076
+ */
3077
+ q4_views?: number;
3078
+ };
3079
+ /**
3080
+ * DOOH-specific metrics (only included for DOOH campaigns)
3081
+ */
3082
+ dooh_metrics?: {
3083
+ /**
3084
+ * Number of times ad played in rotation
3085
+ */
3086
+ loop_plays?: number;
3087
+ /**
3088
+ * Number of unique screens displaying the ad
3089
+ */
3090
+ screens_used?: number;
3091
+ /**
3092
+ * Total display time in seconds
3093
+ */
3094
+ screen_time_seconds?: number;
3095
+ /**
3096
+ * Actual share of voice delivered (0.0 to 1.0)
3097
+ */
3098
+ sov_achieved?: number;
3099
+ /**
3100
+ * Explanation of how DOOH impressions were calculated
3101
+ */
3102
+ calculation_notes?: string;
3103
+ /**
3104
+ * Per-venue performance breakdown
3105
+ */
3106
+ venue_breakdown?: {
3107
+ /**
3108
+ * Venue identifier
3109
+ */
3110
+ venue_id: string;
3111
+ /**
3112
+ * Human-readable venue name
3113
+ */
3114
+ venue_name?: string;
3115
+ /**
3116
+ * Venue type (e.g., 'airport', 'transit', 'retail', 'billboard')
3117
+ */
3118
+ venue_type?: string;
3119
+ /**
3120
+ * Impressions delivered at this venue
3121
+ */
3122
+ impressions: number;
3123
+ /**
3124
+ * Loop plays at this venue
3125
+ */
3126
+ loop_plays?: number;
3127
+ /**
3128
+ * Number of screens used at this venue
3129
+ */
3130
+ screens_used?: number;
3131
+ }[];
3132
+ };
3133
+ }
3134
+ /**
3135
+ * Request parameters for discovering which publishers this agent is authorized to represent
3136
+ */
3137
+ export interface ListAuthorizedPropertiesRequest {
3138
+ /**
3139
+ * Filter to specific publisher domains (optional). If omitted, returns all publishers this agent represents.
3140
+ */
3141
+ publisher_domains?: string[];
3142
+ context?: ContextObject;
3143
+ ext?: ExtensionObject;
3144
+ }
3145
+ /**
3146
+ * 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.
3147
+ */
3148
+ export interface ListAuthorizedPropertiesResponse {
3149
+ /**
3150
+ * Publisher domains this agent is authorized to represent. Buyers should fetch each publisher's adagents.json to see property definitions and verify this agent is in their authorized_agents list with authorization scope.
3151
+ */
3152
+ publisher_domains: string[];
3153
+ /**
3154
+ * Primary advertising channels represented in this property portfolio. Helps buying agents quickly filter relevance.
3155
+ */
3156
+ primary_channels?: AdvertisingChannels[];
3157
+ /**
3158
+ * Primary countries (ISO 3166-1 alpha-2 codes) where properties are concentrated. Helps buying agents quickly filter relevance.
3159
+ */
3160
+ primary_countries?: string[];
3161
+ /**
3162
+ * Markdown-formatted description of the property portfolio, including inventory types, audience characteristics, and special features.
3163
+ */
3164
+ portfolio_description?: string;
3165
+ /**
3166
+ * Publisher's advertising content policies, restrictions, and guidelines in natural language. May include prohibited categories, blocked advertisers, restricted tactics, brand safety requirements, or links to full policy documentation.
3167
+ */
3168
+ advertising_policies?: string;
3169
+ /**
3170
+ * ISO 8601 timestamp of when the agent's publisher authorization list was last updated. Buyers can use this to determine if their cached publisher adagents.json files might be stale.
3171
+ */
3172
+ last_updated?: string;
3173
+ /**
3174
+ * Task-specific errors and warnings (e.g., property availability issues)
3175
+ */
3176
+ errors?: Error[];
3177
+ context?: ContextObject;
3178
+ ext?: ExtensionObject;
3179
+ }
3180
+ /**
3181
+ * Success response - feedback received and processed
3182
+ */
3183
+ export interface ProvidePerformanceFeedbackSuccess {
3184
+ /**
3185
+ * Whether the performance feedback was successfully received
3186
+ */
3187
+ success: true;
3188
+ context?: ContextObject;
3189
+ ext?: ExtensionObject;
3190
+ }
3191
+ /**
3192
+ * Error response - feedback rejected or could not be processed
3193
+ */
3194
+ export interface ProvidePerformanceFeedbackError {
3195
+ /**
3196
+ * Array of errors explaining why feedback was rejected (e.g., invalid measurement period, missing campaign data)
3197
+ */
3198
+ errors: Error[];
3199
+ context?: ContextObject;
3200
+ ext?: ExtensionObject;
3201
+ }
3202
+ /**
3203
+ * Request to transform or generate a creative manifest. Takes a source manifest (which may be minimal for pure generation) and produces a target manifest in the specified format. The source manifest should include all assets required by the target format (e.g., promoted_offerings for generative formats).
3204
+ */
3205
+ export interface BuildCreativeRequest {
3206
+ /**
3207
+ * Natural language instructions for the transformation or generation. For pure generation, this is the creative brief. For transformation, this provides guidance on how to adapt the creative.
3208
+ */
3209
+ message?: string;
3210
+ creative_manifest?: CreativeManifest;
3211
+ target_format_id: FormatID;
3212
+ context?: ContextObject;
3213
+ ext?: ExtensionObject;
3214
+ }
3215
+ /**
3216
+ * 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.
3217
+ */
3218
+ export interface CreativeManifest {
3219
+ format_id: FormatID;
3220
+ /**
3221
+ * Product name or offering being advertised. Maps to promoted_offerings in create_media_buy request to associate creative with the product being promoted.
3222
+ */
3223
+ promoted_offering?: string;
3224
+ /**
3225
+ * Map of asset IDs to actual asset content. Each key MUST match an asset_id from the format's assets_required array (e.g., 'banner_image', 'clickthrough_url', 'video_file', 'vast_tag'). The asset_id is the technical identifier used to match assets to format requirements.
3226
+ *
3227
+ * IMPORTANT: Creative manifest validation MUST be performed in the context of the format specification. The format defines what type each asset_id should be, which eliminates any validation ambiguity.
3228
+ */
3229
+ assets: {
3230
+ /**
3231
+ * This interface was referenced by `undefined`'s JSON-Schema definition
3232
+ * via the `patternProperty` "^[a-z0-9_]+$".
3233
+ */
3234
+ [k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset | PromotedOfferings;
3235
+ };
3236
+ ext?: ExtensionObject;
3237
+ }
3238
+ /**
3239
+ * Webhook for server-side dynamic content rendering (DCO)
3240
+ */
3241
+ export interface WebhookAsset {
3242
+ /**
3243
+ * Webhook URL to call for dynamic content
3244
+ */
3245
+ url: string;
3246
+ method?: HTTPMethod;
3247
+ /**
3248
+ * Maximum time to wait for response in milliseconds
3249
+ */
3250
+ timeout_ms?: number;
3251
+ /**
3252
+ * Universal macros that can be passed to webhook (e.g., {DEVICE_TYPE}, {COUNTRY})
3253
+ */
3254
+ supported_macros?: string[];
3255
+ /**
3256
+ * Universal macros that must be provided for webhook to function
3257
+ */
3258
+ required_macros?: string[];
3259
+ response_type: WebhookResponseType;
3260
+ /**
3261
+ * Security configuration for webhook calls
3262
+ */
3263
+ security: {
3264
+ method: WebhookSecurityMethod;
3265
+ /**
3266
+ * Header name for HMAC signature (e.g., 'X-Signature')
3267
+ */
3268
+ hmac_header?: string;
3269
+ /**
3270
+ * Header name for API key (e.g., 'X-API-Key')
3271
+ */
3272
+ api_key_header?: string;
3273
+ };
3274
+ }
3275
+ /**
3276
+ * Success response - creative manifest generated successfully
3277
+ */
3278
+ export interface BuildCreativeSuccess {
3279
+ creative_manifest: CreativeManifest;
3280
+ context?: ContextObject;
3281
+ ext?: ExtensionObject;
3282
+ }
3283
+ /**
3284
+ * Error response - creative generation failed
3285
+ */
3286
+ export interface BuildCreativeError {
3287
+ /**
3288
+ * Array of errors explaining why creative generation failed
3289
+ */
3290
+ errors: Error[];
3291
+ context?: ContextObject;
3292
+ ext?: ExtensionObject;
3293
+ }
3294
+ /**
3295
+ * Single preview response - each preview URL returns an HTML page that can be embedded in an iframe
3296
+ */
3297
+ export interface PreviewCreativeSingleResponse {
3298
+ /**
3299
+ * Discriminator indicating this is a single preview response
3300
+ */
3301
+ response_type: 'single';
3302
+ /**
3303
+ * Array of preview variants. Each preview corresponds to an input set from the request. If no inputs were provided, returns a single default preview.
3304
+ */
3305
+ previews: {
3306
+ /**
3307
+ * Unique identifier for this preview variant
3308
+ */
3309
+ preview_id: string;
3310
+ /**
3311
+ * Array of rendered pieces for this preview variant. Most formats render as a single piece. Companion ad formats (video + banner), multi-placement formats, and adaptive formats render as multiple pieces.
3312
+ */
3313
+ renders: PreviewRender[];
3314
+ /**
3315
+ * The input parameters that generated this preview variant. Echoes back the request input or shows defaults used.
3316
+ */
3317
+ input: {
3318
+ /**
3319
+ * Human-readable name for this variant
3320
+ */
3321
+ name: string;
3322
+ /**
3323
+ * Macro values applied to this variant
3324
+ */
3325
+ macros?: {
3326
+ [k: string]: string | undefined;
3327
+ };
3328
+ /**
3329
+ * Context description applied to this variant
3330
+ */
3331
+ context_description?: string;
3332
+ };
3333
+ }[];
3334
+ /**
3335
+ * Optional URL to an interactive testing page that shows all preview variants with controls to switch between them, modify macro values, and test different scenarios.
3336
+ */
3337
+ interactive_url?: string;
3338
+ /**
3339
+ * ISO 8601 timestamp when preview links expire
3340
+ */
3341
+ expires_at: string;
3342
+ context?: ContextObject;
3343
+ ext?: ExtensionObject;
3344
+ }
3345
+ /**
3346
+ * Batch preview response - contains results for multiple creative requests
3347
+ */
3348
+ export interface PreviewCreativeBatchResponse {
3349
+ /**
3350
+ * Discriminator indicating this is a batch preview response
3351
+ */
3352
+ response_type: 'batch';
3353
+ /**
3354
+ * 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.
3355
+ */
3356
+ results: (PreviewBatchResultSuccess | PreviewBatchResultError)[];
3357
+ context?: ContextObject;
3358
+ ext?: ExtensionObject;
3359
+ }
3360
+ export interface PreviewBatchResultSuccess {
3361
+ success?: true;
3362
+ }
3363
+ export interface PreviewBatchResultError {
3364
+ success?: false;
3365
+ }
3366
+ /**
3367
+ * Request parameters for discovering signals based on description
3368
+ */
3369
+ export interface GetSignalsRequest {
3370
+ /**
3371
+ * Natural language description of the desired signals
3372
+ */
3373
+ signal_spec: string;
3374
+ /**
3375
+ * Deployment targets where signals need to be activated
3376
+ */
3377
+ deliver_to: {
3378
+ /**
3379
+ * 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.
3380
+ */
3381
+ deployments: Destination[];
3382
+ /**
3383
+ * Countries where signals will be used (ISO codes)
3384
+ */
3385
+ countries: string[];
3386
+ };
3387
+ filters?: SignalFilters;
3388
+ /**
3389
+ * Maximum number of results to return
3390
+ */
3391
+ max_results?: number;
3392
+ context?: ContextObject;
3393
+ ext?: ExtensionObject;
3394
+ }
3395
+ /**
3396
+ * Filters to refine signal discovery results
3397
+ */
3398
+ export interface SignalFilters {
3399
+ /**
3400
+ * Filter by catalog type
3401
+ */
3402
+ catalog_types?: SignalCatalogType[];
3403
+ /**
3404
+ * Filter by specific data providers
3405
+ */
3406
+ data_providers?: string[];
3407
+ /**
3408
+ * Maximum CPM price filter
3409
+ */
3410
+ max_cpm?: number;
3411
+ /**
3412
+ * Minimum coverage requirement
3413
+ */
3414
+ min_coverage_percentage?: number;
3415
+ }
3416
+ /**
3417
+ * Response payload for get_signals task
3418
+ */
3419
+ export interface GetSignalsResponse {
3420
+ /**
3421
+ * Array of matching signals
3422
+ */
3423
+ signals: {
3424
+ /**
3425
+ * Unique identifier for the signal
3426
+ */
3427
+ signal_agent_segment_id: string;
3428
+ /**
3429
+ * Human-readable signal name
3430
+ */
3431
+ name: string;
3432
+ /**
3433
+ * Detailed signal description
3434
+ */
3435
+ description: string;
3436
+ signal_type: SignalCatalogType;
3437
+ /**
3438
+ * Name of the data provider
3439
+ */
3440
+ data_provider: string;
3441
+ /**
3442
+ * Percentage of audience coverage
3443
+ */
3444
+ coverage_percentage: number;
3445
+ /**
3446
+ * Array of deployment targets
3447
+ */
3448
+ deployments: Deployment[];
3449
+ /**
3450
+ * Pricing information
3451
+ */
3452
+ pricing: {
3453
+ /**
3454
+ * Cost per thousand impressions
3455
+ */
3456
+ cpm: number;
3457
+ /**
3458
+ * Currency code
3459
+ */
3460
+ currency: string;
3461
+ };
3462
+ }[];
3463
+ /**
3464
+ * Task-specific errors and warnings (e.g., signal discovery or pricing issues)
3465
+ */
3466
+ errors?: Error[];
3467
+ context?: ContextObject;
3468
+ ext?: ExtensionObject;
3469
+ }
3470
+ /**
3471
+ * Request parameters for activating a signal on a specific deployment target
3472
+ */
3473
+ export interface ActivateSignalRequest {
3474
+ /**
3475
+ * The universal identifier for the signal to activate
3476
+ */
3477
+ signal_agent_segment_id: string;
3478
+ /**
3479
+ * Target deployment(s) for activation. If the authenticated caller matches one of these deployment targets, activation keys will be included in the response.
3480
+ */
3481
+ deployments: Destination[];
3482
+ context?: ContextObject;
3483
+ ext?: ExtensionObject;
3484
+ }
3485
+ /**
3486
+ * Success response - signal activated successfully to one or more deployment targets
3487
+ */
3488
+ export interface ActivateSignalSuccess {
3489
+ /**
3490
+ * Array of deployment results for each deployment target
3491
+ */
3492
+ deployments: Deployment[];
3493
+ context?: ContextObject;
3494
+ ext?: ExtensionObject;
3495
+ }
3496
+ /**
3497
+ * Error response - operation failed, signal not activated
3498
+ */
3499
+ export interface ActivateSignalError {
3500
+ /**
3501
+ * Array of errors explaining why activation failed (e.g., platform connectivity issues, signal definition problems, authentication failures)
3502
+ */
3503
+ errors: Error[];
3504
+ context?: ContextObject;
3505
+ ext?: ExtensionObject;
3506
+ }
3507
+ //# sourceMappingURL=tools.generated.d.ts.map