@adcp/client 3.16.0 → 3.18.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 (48) hide show
  1. package/dist/lib/adapters/property-list-adapter.js +2 -2
  2. package/dist/lib/adapters/property-list-adapter.js.map +1 -1
  3. package/dist/lib/adapters/proposal-manager.d.ts +3 -3
  4. package/dist/lib/adapters/proposal-manager.d.ts.map +1 -1
  5. package/dist/lib/adapters/proposal-manager.js.map +1 -1
  6. package/dist/lib/agents/index.generated.d.ts +9 -1
  7. package/dist/lib/agents/index.generated.d.ts.map +1 -1
  8. package/dist/lib/agents/index.generated.js +12 -0
  9. package/dist/lib/agents/index.generated.js.map +1 -1
  10. package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
  11. package/dist/lib/core/TaskExecutor.js +3 -2
  12. package/dist/lib/core/TaskExecutor.js.map +1 -1
  13. package/dist/lib/index.d.ts +3 -1
  14. package/dist/lib/index.d.ts.map +1 -1
  15. package/dist/lib/index.js +6 -4
  16. package/dist/lib/index.js.map +1 -1
  17. package/dist/lib/testing/client.d.ts +6 -0
  18. package/dist/lib/testing/client.d.ts.map +1 -1
  19. package/dist/lib/testing/client.js +13 -5
  20. package/dist/lib/testing/client.js.map +1 -1
  21. package/dist/lib/testing/scenarios/index.d.ts +1 -1
  22. package/dist/lib/testing/scenarios/index.d.ts.map +1 -1
  23. package/dist/lib/testing/scenarios/index.js +2 -1
  24. package/dist/lib/testing/scenarios/index.js.map +1 -1
  25. package/dist/lib/testing/scenarios/media-buy.d.ts +8 -0
  26. package/dist/lib/testing/scenarios/media-buy.d.ts.map +1 -1
  27. package/dist/lib/testing/scenarios/media-buy.js +127 -12
  28. package/dist/lib/testing/scenarios/media-buy.js.map +1 -1
  29. package/dist/lib/testing/types.d.ts +6 -1
  30. package/dist/lib/testing/types.d.ts.map +1 -1
  31. package/dist/lib/types/compat.d.ts +60 -0
  32. package/dist/lib/types/compat.d.ts.map +1 -0
  33. package/dist/lib/types/compat.js +29 -0
  34. package/dist/lib/types/compat.js.map +1 -0
  35. package/dist/lib/types/core.generated.d.ts +53 -322
  36. package/dist/lib/types/core.generated.d.ts.map +1 -1
  37. package/dist/lib/types/core.generated.js +1 -1
  38. package/dist/lib/types/schemas.generated.d.ts +303 -1294
  39. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  40. package/dist/lib/types/schemas.generated.js +114 -108
  41. package/dist/lib/types/schemas.generated.js.map +1 -1
  42. package/dist/lib/types/tools.generated.d.ts +334 -339
  43. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  44. package/dist/lib/utils/capabilities.d.ts +3 -1
  45. package/dist/lib/utils/capabilities.d.ts.map +1 -1
  46. package/dist/lib/utils/capabilities.js +4 -0
  47. package/dist/lib/utils/capabilities.js.map +1 -1
  48. package/package.json +6 -4
@@ -1,11 +1,7 @@
1
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.
2
+ * Brand identifier within the house portfolio. Optional for single-brand domains.
3
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';
4
+ export type BrandID = string;
9
5
  /**
10
6
  * Type of inventory delivery
11
7
  */
@@ -173,7 +169,7 @@ export interface GetProductsRequest {
173
169
  * Natural language description of campaign requirements.
174
170
  */
175
171
  brief?: string;
176
- brand_manifest?: BrandManifestReference;
172
+ brand?: BrandReference;
177
173
  product_selectors?: PromotedProducts;
178
174
  /**
179
175
  * Account ID for product lookup. Required when the seller declares account.required_for_products = true in capabilities. Returns products with pricing specific to this account's rate card.
@@ -186,318 +182,17 @@ export interface GetProductsRequest {
186
182
  ext?: ExtensionObject;
187
183
  }
188
184
  /**
189
- * Inline brand manifest object
185
+ * Brand reference for product discovery context. Resolved to full brand identity at execution time.
190
186
  */
191
- export interface BrandManifest {
192
- /**
193
- * Primary brand URL for context and asset discovery. Creative agents can infer brand information from this URL.
194
- */
195
- url?: string;
196
- /**
197
- * URL to the brand's privacy policy. Used for consumer consent flows when personal data may be shared with the advertiser. AI platforms can use this to present explicit privacy choices to users before data handoff.
198
- */
199
- privacy_policy_url?: string;
200
- /**
201
- * Brand or business name
202
- */
203
- name: string;
204
- /**
205
- * Brand logo assets with structured fields for orientation, background compatibility, and variant type. Use the orientation, background, and variant enum fields for reliable filtering by creative agents.
206
- */
207
- logos?: {
208
- /**
209
- * URL to the logo asset
210
- */
211
- url: string;
212
- /**
213
- * Logo aspect ratio orientation. square: ~1:1, horizontal: wide, vertical: tall, stacked: vertically arranged elements
214
- */
215
- orientation?: 'square' | 'horizontal' | 'vertical' | 'stacked';
216
- /**
217
- * Background compatibility. dark-bg: use on dark backgrounds, light-bg: use on light backgrounds, transparent-bg: has transparent background
218
- */
219
- background?: 'dark-bg' | 'light-bg' | 'transparent-bg';
220
- /**
221
- * Logo variant type. primary: main logo, secondary: alternative, icon: symbol only, wordmark: text only, full-lockup: complete logo
222
- */
223
- variant?: 'primary' | 'secondary' | 'icon' | 'wordmark' | 'full-lockup';
224
- /**
225
- * Additional semantic tags for custom categorization beyond the standard orientation, background, and variant fields.
226
- */
227
- tags?: string[];
228
- /**
229
- * Human-readable description of when to use this logo variant (e.g., 'Primary logo for use on light backgrounds', 'Icon-only variant for small formats')
230
- */
231
- usage?: string;
232
- /**
233
- * Logo width in pixels
234
- */
235
- width?: number;
236
- /**
237
- * Logo height in pixels
238
- */
239
- height?: number;
240
- }[];
241
- /**
242
- * Brand color palette. Each role accepts a single hex color or an array of hex colors for brands with multiple values per role.
243
- */
244
- colors?: {
245
- /**
246
- * Primary brand color(s)
247
- */
248
- primary?: string | [string, ...string[]];
249
- /**
250
- * Secondary brand color(s)
251
- */
252
- secondary?: string | [string, ...string[]];
253
- /**
254
- * Accent color(s)
255
- */
256
- accent?: string | [string, ...string[]];
257
- /**
258
- * Background color(s)
259
- */
260
- background?: string | [string, ...string[]];
261
- /**
262
- * Text color(s)
263
- */
264
- text?: string | [string, ...string[]];
265
- };
266
- /**
267
- * Brand typography guidelines
268
- */
269
- fonts?: {
270
- /**
271
- * Primary font family name
272
- */
273
- primary?: string;
274
- /**
275
- * Secondary font family name
276
- */
277
- secondary?: string;
278
- /**
279
- * URLs to web font files if using custom fonts
280
- */
281
- font_urls?: string[];
282
- };
283
- /**
284
- * Brand voice and messaging tone guidelines for creative agents.
285
- */
286
- tone?: string | {
287
- /**
288
- * High-level voice descriptor (e.g., 'warm and inviting', 'professional and trustworthy')
289
- */
290
- voice?: string;
291
- /**
292
- * Personality traits that characterize the brand voice
293
- */
294
- attributes?: string[];
295
- /**
296
- * Specific guidance for copy generation - what TO do
297
- */
298
- dos?: string[];
299
- /**
300
- * Guardrails to avoid brand violations - what NOT to do
301
- */
302
- donts?: string[];
303
- };
304
- /**
305
- * Brand voice configuration for audio/conversational experiences
306
- */
307
- voice?: {
308
- /**
309
- * TTS provider (e.g., 'elevenlabs', 'openai', 'amazon_polly')
310
- */
311
- provider?: string;
312
- /**
313
- * Provider-specific voice identifier
314
- */
315
- voice_id?: string;
316
- /**
317
- * Provider-specific voice settings (speed, pitch, etc.)
318
- */
319
- settings?: {
320
- [k: string]: unknown | undefined;
321
- };
322
- };
323
- /**
324
- * Brand avatar configuration for visual conversational experiences
325
- */
326
- avatar?: {
327
- /**
328
- * Avatar provider (e.g., 'd-id', 'heygen', 'synthesia')
329
- */
330
- provider?: string;
331
- /**
332
- * Provider-specific avatar identifier
333
- */
334
- avatar_id?: string;
335
- /**
336
- * Provider-specific avatar settings
337
- */
338
- settings?: {
339
- [k: string]: unknown | undefined;
340
- };
341
- };
342
- /**
343
- * Brand tagline or slogan
344
- */
345
- tagline?: string;
346
- /**
347
- * Brand asset library with explicit assets and tags. Assets are referenced inline with URLs pointing to CDN-hosted files.
348
- */
349
- assets?: {
350
- /**
351
- * Unique identifier for this asset
352
- */
353
- asset_id: string;
354
- asset_type: AssetContentType;
355
- /**
356
- * URL to CDN-hosted asset file
357
- */
358
- url: string;
359
- /**
360
- * Tags for asset discovery (e.g., 'holiday', 'lifestyle', 'product_shot')
361
- */
362
- tags?: string[];
363
- /**
364
- * Human-readable asset name
365
- */
366
- name?: string;
367
- /**
368
- * Asset description or usage notes
369
- */
370
- description?: string;
371
- /**
372
- * Image/video width in pixels
373
- */
374
- width?: number;
375
- /**
376
- * Image/video height in pixels
377
- */
378
- height?: number;
379
- /**
380
- * Video/audio duration in seconds
381
- */
382
- duration_seconds?: number;
383
- /**
384
- * File size in bytes
385
- */
386
- file_size_bytes?: number;
387
- /**
388
- * File format (e.g., 'jpg', 'mp4', 'mp3')
389
- */
390
- format?: string;
391
- /**
392
- * Additional asset-specific metadata
393
- */
394
- metadata?: {
395
- [k: string]: unknown | undefined;
396
- };
397
- [k: string]: unknown | undefined;
398
- }[];
187
+ export interface BrandReference {
399
188
  /**
400
- * Product catalog information for e-commerce advertisers. Enables SKU-level creative generation and product selection.
189
+ * Domain where /.well-known/brand.json is hosted, or the brand's operating domain
401
190
  */
402
- product_catalog?: {
403
- /**
404
- * URL to product catalog feed
405
- */
406
- feed_url: string;
407
- /**
408
- * Format of the product feed. Use 'openai_product_feed' for feeds conforming to the OpenAI Commerce Product Feed specification.
409
- */
410
- feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'openai_product_feed' | 'custom';
411
- /**
412
- * Product categories available in the catalog (for filtering)
413
- */
414
- categories?: string[];
415
- /**
416
- * When the product catalog was last updated
417
- */
418
- last_updated?: string;
419
- /**
420
- * How frequently the product catalog is updated
421
- */
422
- update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly';
423
- /**
424
- * Agentic checkout endpoint configuration. Enables AI agents to complete purchases on behalf of users through a structured checkout API.
425
- */
426
- agentic_checkout?: {
427
- /**
428
- * Base URL for checkout session API (e.g., https://merchant.com/api/checkout_sessions)
429
- */
430
- endpoint: string;
431
- /**
432
- * Checkout API specification implemented by the endpoint
433
- */
434
- spec: 'openai_agentic_checkout_v1';
435
- /**
436
- * Payment providers supported by this checkout endpoint
437
- */
438
- supported_payment_providers?: string[];
439
- };
440
- [k: string]: unknown | undefined;
441
- };
442
- /**
443
- * Legal disclaimers or required text that must appear in creatives
444
- */
445
- disclaimers?: {
446
- /**
447
- * Disclaimer text
448
- */
449
- text: string;
450
- /**
451
- * When this disclaimer applies (e.g., 'financial_products', 'health_claims', 'all')
452
- */
453
- context?: string;
454
- /**
455
- * Whether this disclaimer must appear
456
- */
457
- required?: boolean;
458
- }[];
459
- /**
460
- * Industry or vertical (e.g., 'retail', 'automotive', 'finance', 'healthcare')
461
- */
462
- industry?: string;
463
- /**
464
- * Primary target audience description
465
- */
466
- target_audience?: string;
467
- /**
468
- * Brand contact information
469
- */
470
- contact?: {
471
- /**
472
- * Contact email
473
- */
474
- email?: string;
475
- /**
476
- * Contact phone number
477
- */
478
- phone?: string;
479
- };
480
- /**
481
- * Additional brand metadata
482
- */
483
- metadata?: {
484
- /**
485
- * When this brand manifest was created
486
- */
487
- created_date?: string;
488
- /**
489
- * When this brand manifest was last updated
490
- */
491
- updated_date?: string;
492
- /**
493
- * Brand card version number
494
- */
495
- version?: string;
496
- };
497
- [k: string]: unknown | undefined;
191
+ domain: string;
192
+ brand_id?: BrandID;
498
193
  }
499
194
  /**
500
- * Selectors to filter the brand manifest product catalog for product discovery. When provided, sellers should only return advertising products where the selected catalog items have matches. Uses the same selection methods as promoted-offerings.
195
+ * Selectors to filter the brand's product catalog for product discovery. When provided, sellers should only return advertising products where the selected catalog items have matches. Uses the same selection methods as promoted-offerings.
501
196
  */
502
197
  export interface PromotedProducts {
503
198
  /**
@@ -505,19 +200,19 @@ export interface PromotedProducts {
505
200
  */
506
201
  manifest_gtins?: string[];
507
202
  /**
508
- * Direct product SKU references from the brand manifest product catalog
203
+ * Direct product SKU references from the brand's product catalog
509
204
  */
510
205
  manifest_skus?: string[];
511
206
  /**
512
- * Select products by tags from the brand manifest product catalog (e.g., 'organic', 'sauces', 'holiday')
207
+ * Select products by tags from the brand's product catalog (e.g., 'organic', 'sauces', 'holiday')
513
208
  */
514
209
  manifest_tags?: string[];
515
210
  /**
516
- * Select products from a specific category in the brand manifest product catalog (e.g., 'beverages/soft-drinks', 'food/sauces')
211
+ * Select products from a specific category in the brand's product catalog (e.g., 'beverages/soft-drinks', 'food/sauces')
517
212
  */
518
213
  manifest_category?: string;
519
214
  /**
520
- * Natural language query to select products from the brand manifest (e.g., 'all Kraft Heinz pasta sauces', 'organic products under $20')
215
+ * Natural language query to select products from the brand's catalog (e.g., 'all pasta sauces', 'organic products under $20')
521
216
  */
522
217
  manifest_query?: string;
523
218
  [k: string]: unknown | undefined;
@@ -686,6 +381,14 @@ export interface MediaBuyFeatures {
686
381
  * Supports sync_event_sources and log_event tasks for conversion event tracking
687
382
  */
688
383
  conversion_tracking?: boolean;
384
+ /**
385
+ * Supports sync_audiences task and audience_include/audience_exclude in targeting overlays for first-party CRM audience management
386
+ */
387
+ audience_targeting?: boolean;
388
+ /**
389
+ * Supports sandbox mode for operations without real platform calls or spend
390
+ */
391
+ sandbox?: boolean;
689
392
  [k: string]: boolean | undefined;
690
393
  }
691
394
  /**
@@ -907,6 +610,10 @@ export interface GetProductsResponse {
907
610
  */
908
611
  product_selectors_applied?: boolean;
909
612
  pagination?: PaginationResponse;
613
+ /**
614
+ * When true, this response contains simulated data from sandbox mode.
615
+ */
616
+ sandbox?: boolean;
910
617
  context?: ContextObject;
911
618
  ext?: ExtensionObject;
912
619
  }
@@ -1012,7 +719,7 @@ export interface Product {
1012
719
  [k: string]: unknown | undefined;
1013
720
  };
1014
721
  /**
1015
- * When the buyer provides a brand_manifest with product_catalog, indicates which of the buyer's catalog items are eligible for this product. Enables buyers to make informed product_selector choices in create_media_buy. Only present for products where catalog matching is relevant (e.g. sponsored product listings on retail media). Sellers SHOULD include at least one of matched_gtins or matched_skus.
722
+ * When the buyer provides a brand with product_catalog, indicates which of the buyer's catalog items are eligible for this product. Enables buyers to make informed product_selector choices in create_media_buy. Only present for products where catalog matching is relevant (e.g. sponsored product listings on retail media). Sellers SHOULD include at least one of matched_gtins or matched_skus.
1016
723
  */
1017
724
  catalog_match?: {
1018
725
  /**
@@ -2058,6 +1765,10 @@ export interface PaginationResponse {
2058
1765
  /**
2059
1766
  * Filter by format type (technical categories with distinct requirements)
2060
1767
  */
1768
+ export type AssetContentType = 'image' | 'video' | 'audio' | 'text' | 'markdown' | 'html' | 'css' | 'javascript' | 'vast' | 'daast' | 'promoted_offerings' | 'url' | 'webhook';
1769
+ /**
1770
+ * Filter to formats that meet at least this WCAG conformance level (A < AA < AAA)
1771
+ */
2061
1772
  export type WCAGLevel = 'A' | 'AA' | 'AAA';
2062
1773
  /**
2063
1774
  * Request parameters for discovering supported creative formats
@@ -2097,6 +1808,14 @@ export interface ListCreativeFormatsRequest {
2097
1808
  */
2098
1809
  name_search?: string;
2099
1810
  wcag_level?: WCAGLevel;
1811
+ /**
1812
+ * Filter to formats whose output_format_ids includes any of these format IDs. Returns formats that can produce these outputs — inspect each result's input_format_ids to see what inputs they accept.
1813
+ */
1814
+ output_format_ids?: FormatID[];
1815
+ /**
1816
+ * Filter to formats whose input_format_ids includes any of these format IDs. Returns formats that accept these creatives as input — inspect each result's output_format_ids to see what they can produce.
1817
+ */
1818
+ input_format_ids?: FormatID[];
2100
1819
  pagination?: PaginationRequest;
2101
1820
  context?: ContextObject;
2102
1821
  ext?: ExtensionObject;
@@ -2146,6 +1865,10 @@ export interface ListCreativeFormatsResponse {
2146
1865
  */
2147
1866
  errors?: Error[];
2148
1867
  pagination?: PaginationResponse;
1868
+ /**
1869
+ * When true, this response contains simulated data from sandbox mode.
1870
+ */
1871
+ sandbox?: boolean;
2149
1872
  context?: ContextObject;
2150
1873
  ext?: ExtensionObject;
2151
1874
  }
@@ -2232,7 +1955,11 @@ export interface Format {
2232
1955
  */
2233
1956
  supported_macros?: (UniversalMacro | string)[];
2234
1957
  /**
2235
- * 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).
1958
+ * Array of format IDs this format accepts as input creative manifests. When present, indicates this format can take existing creatives in these formats as input. Omit for formats that work from raw assets (images, text, etc.) rather than existing creatives.
1959
+ */
1960
+ input_format_ids?: FormatID1[];
1961
+ /**
1962
+ * Array of format IDs that this format can produce as output. When present, indicates this format can build creatives in these output formats (e.g., a multi-publisher template format might produce standard display formats across many publishers). Omit for formats that produce a single fixed output (the format itself).
2236
1963
  */
2237
1964
  output_format_ids?: FormatID1[];
2238
1965
  /**
@@ -2520,17 +2247,13 @@ export type DAASTTrackingEvent = 'start' | 'firstQuartile' | 'midpoint' | 'third
2520
2247
  */
2521
2248
  export type DAASTVersion1 = '1.0' | '1.1';
2522
2249
  /**
2523
- * Brand information manifest containing assets, themes, and guidelines. Can be provided inline or as a URL reference to a hosted manifest.
2250
+ * Brand identifier within the house portfolio. Optional for single-brand domains.
2524
2251
  */
2525
2252
  export type URLAssetType = 'clickthrough' | 'tracker_pixel' | 'tracker_script';
2526
2253
  /**
2527
2254
  * For generative creatives: set to 'approved' to finalize, 'rejected' to request regeneration with updated assets/message. Omit for non-generative creatives (system will set based on processing state).
2528
2255
  */
2529
2256
  export type CreativeStatus = 'processing' | 'approved' | 'rejected' | 'pending_review' | 'archived';
2530
- /**
2531
- * Brand information manifest serving as the namespace and identity for this media buy. Provides brand context, assets, and product catalog. Can be provided inline or as a URL reference to a hosted manifest. Can be cached and reused across multiple requests.
2532
- */
2533
- export type BrandManifestReference1 = BrandManifest | string;
2534
2257
  /**
2535
2258
  * Campaign start timing: 'asap' or ISO 8601 date-time
2536
2259
  */
@@ -2572,7 +2295,7 @@ export interface CreateMediaBuyRequest {
2572
2295
  * Array of package configurations. Required when not using proposal_id. When executing a proposal, this can be omitted and packages will be derived from the proposal's allocations.
2573
2296
  */
2574
2297
  packages?: PackageRequest[];
2575
- brand_manifest: BrandManifestReference1;
2298
+ brand: BrandReference1;
2576
2299
  /**
2577
2300
  * Purchase order number for tracking
2578
2301
  */
@@ -2858,6 +2581,18 @@ export interface TargetingOverlay {
2858
2581
  * AXE segment ID to exclude from targeting
2859
2582
  */
2860
2583
  axe_exclude_segment?: string;
2584
+ /**
2585
+ * Restrict delivery to members of these first-party CRM audiences. Only users present in the uploaded lists are eligible. References audience_id values from sync_audiences on the same seller account — audience IDs are not portable across sellers. Not for lookalike expansion — express that intent in the campaign brief. Seller must declare support in get_adcp_capabilities.
2586
+ *
2587
+ * @minItems 1
2588
+ */
2589
+ audience_include?: [string, ...string[]];
2590
+ /**
2591
+ * Suppress delivery to members of these first-party CRM audiences. Matched users are excluded regardless of other targeting. References audience_id values from sync_audiences on the same seller account — audience IDs are not portable across sellers. Seller must declare support in get_adcp_capabilities.
2592
+ *
2593
+ * @minItems 1
2594
+ */
2595
+ audience_exclude?: [string, ...string[]];
2861
2596
  frequency_cap?: FrequencyCap;
2862
2597
  property_list?: PropertyListReference;
2863
2598
  /**
@@ -3277,10 +3012,10 @@ export interface JavaScriptAsset {
3277
3012
  [k: string]: unknown | undefined;
3278
3013
  }
3279
3014
  /**
3280
- * Complete offering specification combining brand manifest, product selectors, and optional SI agent endpoint. Provides all context needed for creative generation and/or conversational experiences about what is being promoted. When si_agent_url is present, hosts can connect users to conversational experiences about any of the offerings.
3015
+ * Complete offering specification combining brand reference, product selectors, and optional SI agent endpoint. Provides all context needed for creative generation and/or conversational experiences about what is being promoted. When si_agent_url is present, hosts can connect users to conversational experiences about any of the offerings.
3281
3016
  */
3282
3017
  export interface PromotedOfferings {
3283
- brand_manifest: BrandManifestReference;
3018
+ brand: BrandReference;
3284
3019
  /**
3285
3020
  * MCP endpoint URL for the brand's SI agent. When present, hosts can connect users to conversational experiences about any of the offerings. The agent handles si_get_offering lookups and full conversations.
3286
3021
  */
@@ -3291,7 +3026,7 @@ export interface PromotedOfferings {
3291
3026
  */
3292
3027
  offerings?: Offering[];
3293
3028
  /**
3294
- * Selectors to choose specific assets from the brand manifest
3029
+ * Selectors to choose specific assets from the brand's asset library
3295
3030
  */
3296
3031
  asset_selectors?: {
3297
3032
  /**
@@ -3311,7 +3046,7 @@ export interface PromotedOfferings {
3311
3046
  [k: string]: unknown | undefined;
3312
3047
  }
3313
3048
  /**
3314
- * Inline brand manifest object
3049
+ * Brand reference. Resolved to full brand identity (logos, colors, tone, assets) at execution time for creative generation.
3315
3050
  */
3316
3051
  export interface Offering {
3317
3052
  /**
@@ -3382,6 +3117,16 @@ export interface URLAsset {
3382
3117
  description?: string;
3383
3118
  [k: string]: unknown | undefined;
3384
3119
  }
3120
+ /**
3121
+ * Brand reference for this media buy. Resolved to full brand identity at execution time from brand.json or the registry.
3122
+ */
3123
+ export interface BrandReference1 {
3124
+ /**
3125
+ * Domain where /.well-known/brand.json is hosted, or the brand's operating domain
3126
+ */
3127
+ domain: string;
3128
+ brand_id?: BrandID;
3129
+ }
3385
3130
  /**
3386
3131
  * Optional webhook configuration for automated reporting delivery
3387
3132
  */
@@ -3448,6 +3193,10 @@ export interface CreateMediaBuySuccess {
3448
3193
  * Array of created packages with complete state information
3449
3194
  */
3450
3195
  packages: Package[];
3196
+ /**
3197
+ * When true, this response contains simulated data from sandbox mode.
3198
+ */
3199
+ sandbox?: boolean;
3451
3200
  context?: ContextObject;
3452
3201
  ext?: ExtensionObject;
3453
3202
  }
@@ -3506,6 +3255,10 @@ export interface Account {
3506
3255
  amount: number;
3507
3256
  currency: string;
3508
3257
  };
3258
+ /**
3259
+ * When true, this is a sandbox account. All requests using this account_id are treated as sandbox — no real platform calls, no real spend.
3260
+ */
3261
+ sandbox?: boolean;
3509
3262
  ext?: ExtensionObject;
3510
3263
  [k: string]: unknown | undefined;
3511
3264
  }
@@ -3721,6 +3474,10 @@ export interface SyncCreativesSuccess {
3721
3474
  [k: string]: string;
3722
3475
  };
3723
3476
  }[];
3477
+ /**
3478
+ * When true, this response contains simulated data from sandbox mode.
3479
+ */
3480
+ sandbox?: boolean;
3724
3481
  context?: ContextObject;
3725
3482
  ext?: ExtensionObject;
3726
3483
  }
@@ -4073,6 +3830,10 @@ export interface ListCreativesResponse {
4073
3830
  */
4074
3831
  archived?: number;
4075
3832
  };
3833
+ /**
3834
+ * When true, this response contains simulated data from sandbox mode.
3835
+ */
3836
+ sandbox?: boolean;
4076
3837
  context?: ContextObject;
4077
3838
  ext?: ExtensionObject;
4078
3839
  }
@@ -4185,6 +3946,10 @@ export interface UpdateMediaBuySuccess {
4185
3946
  * Array of packages that were modified with complete state information
4186
3947
  */
4187
3948
  affected_packages?: Package[];
3949
+ /**
3950
+ * When true, this response contains simulated data from sandbox mode.
3951
+ */
3952
+ sandbox?: boolean;
4188
3953
  context?: ContextObject;
4189
3954
  ext?: ExtensionObject;
4190
3955
  }
@@ -4455,6 +4220,10 @@ export interface GetMediaBuyDeliveryResponse {
4455
4220
  * Task-specific errors and warnings (e.g., missing delivery data, reporting platform issues)
4456
4221
  */
4457
4222
  errors?: Error[];
4223
+ /**
4224
+ * When true, this response contains simulated data from sandbox mode.
4225
+ */
4226
+ sandbox?: boolean;
4458
4227
  context?: ContextObject;
4459
4228
  ext?: ExtensionObject;
4460
4229
  }
@@ -4758,6 +4527,10 @@ export interface ProvidePerformanceFeedbackSuccess {
4758
4527
  * Whether the performance feedback was successfully received
4759
4528
  */
4760
4529
  success: true;
4530
+ /**
4531
+ * When true, this response contains simulated data from sandbox mode.
4532
+ */
4533
+ sandbox?: boolean;
4761
4534
  context?: ContextObject;
4762
4535
  ext?: ExtensionObject;
4763
4536
  }
@@ -4873,6 +4646,10 @@ export interface SyncEventSourcesSuccess {
4873
4646
  */
4874
4647
  errors?: string[];
4875
4648
  }[];
4649
+ /**
4650
+ * When true, this response contains simulated data from sandbox mode.
4651
+ */
4652
+ sandbox?: boolean;
4876
4653
  context?: ContextObject;
4877
4654
  ext?: ExtensionObject;
4878
4655
  }
@@ -5107,6 +4884,10 @@ export interface LogEventSuccess {
5107
4884
  * Overall match quality score for the batch (0.0 = no matches, 1.0 = all matched)
5108
4885
  */
5109
4886
  match_quality?: number;
4887
+ /**
4888
+ * When true, this response contains simulated data from sandbox mode.
4889
+ */
4890
+ sandbox?: boolean;
5110
4891
  context?: ContextObject;
5111
4892
  ext?: ExtensionObject;
5112
4893
  }
@@ -5124,6 +4905,164 @@ export interface LogEventError {
5124
4905
  /**
5125
4906
  * Standard error structure for task-specific errors and warnings
5126
4907
  */
4908
+ /**
4909
+ * Hashed identifiers for a CRM audience member. All identifiers must be normalized before hashing: emails to lowercase+trim, phone numbers to E.164 format (e.g. +12065551234). At least one identifier is required. Providing multiple identifiers for the same person improves match rates. Composite identifiers (e.g. hashed first name + last name + zip for Google Customer Match) are not yet standardized — use the ext field for platform-specific extensions.
4910
+ */
4911
+ export type AudienceMember = {
4912
+ [k: string]: unknown | undefined;
4913
+ } & {
4914
+ /**
4915
+ * SHA-256 hash of lowercase, trimmed email address.
4916
+ */
4917
+ hashed_email?: string;
4918
+ /**
4919
+ * SHA-256 hash of E.164-formatted phone number (e.g. +12065551234).
4920
+ */
4921
+ hashed_phone?: string;
4922
+ /**
4923
+ * Universal ID values (MAIDs, RampID, UID2, etc.) for user matching.
4924
+ *
4925
+ * @minItems 1
4926
+ */
4927
+ uids?: [
4928
+ {
4929
+ type: UIDType;
4930
+ /**
4931
+ * Universal ID value
4932
+ */
4933
+ value: string;
4934
+ [k: string]: unknown | undefined;
4935
+ },
4936
+ ...{
4937
+ type: UIDType;
4938
+ /**
4939
+ * Universal ID value
4940
+ */
4941
+ value: string;
4942
+ [k: string]: unknown | undefined;
4943
+ }[]
4944
+ ];
4945
+ ext?: ExtensionObject;
4946
+ [k: string]: unknown | undefined;
4947
+ };
4948
+ /**
4949
+ * Universal ID type
4950
+ */
4951
+ export interface SyncAudiencesRequest {
4952
+ /**
4953
+ * Account to manage audiences for
4954
+ */
4955
+ account_id: string;
4956
+ /**
4957
+ * Audiences to sync (create or update). When omitted, the call is discovery-only and returns all existing audiences on the account without modification.
4958
+ */
4959
+ audiences?: {
4960
+ /**
4961
+ * Buyer's identifier for this audience. Used to reference the audience in targeting overlays.
4962
+ */
4963
+ audience_id: string;
4964
+ /**
4965
+ * Human-readable name for this audience
4966
+ */
4967
+ name?: string;
4968
+ /**
4969
+ * Members to add to this audience. Hashed before sending — normalize emails to lowercase+trim, phones to E.164.
4970
+ */
4971
+ add?: AudienceMember[];
4972
+ /**
4973
+ * Members to remove from this audience. If the same identifier appears in both add and remove in a single request, remove takes precedence.
4974
+ */
4975
+ remove?: AudienceMember[];
4976
+ /**
4977
+ * When true, delete this audience from the account entirely. All other fields on this audience object are ignored. Use this to delete a specific audience without affecting others.
4978
+ */
4979
+ delete?: boolean;
4980
+ /**
4981
+ * GDPR lawful basis for processing this audience list. Informational — not validated by the protocol, but required by some sellers operating in regulated markets (e.g. EU). When omitted, the buyer asserts they have a lawful basis appropriate to their jurisdiction.
4982
+ */
4983
+ consent_basis?: 'consent' | 'legitimate_interest' | 'contract' | 'legal_obligation';
4984
+ }[];
4985
+ /**
4986
+ * When true, buyer-managed audiences on the account not included in this sync will be removed. Does not affect seller-managed audiences. Do not combine with an omitted audiences array or all buyer-managed audiences will be deleted.
4987
+ */
4988
+ delete_missing?: boolean;
4989
+ context?: ContextObject;
4990
+ ext?: ExtensionObject;
4991
+ }
4992
+ /**
4993
+ * 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.
4994
+ */
4995
+ /**
4996
+ * Response from audience sync operation. Returns either per-audience results OR operation-level errors.
4997
+ */
4998
+ export type SyncAudiencesResponse = SyncAudiencesSuccess | SyncAudiencesError;
4999
+ /**
5000
+ * Success response - sync operation processed audiences
5001
+ */
5002
+ export interface SyncAudiencesSuccess {
5003
+ /**
5004
+ * Results for each audience on the account
5005
+ */
5006
+ audiences: {
5007
+ /**
5008
+ * Audience ID from the request (buyer's identifier)
5009
+ */
5010
+ audience_id: string;
5011
+ /**
5012
+ * Name of the audience
5013
+ */
5014
+ name?: string;
5015
+ /**
5016
+ * Seller-assigned identifier for this audience in their ad platform
5017
+ */
5018
+ seller_id?: string;
5019
+ /**
5020
+ * Action taken for this audience. 'status' is present when action is created, updated, or unchanged. 'status' is absent when action is deleted or failed.
5021
+ */
5022
+ action: 'created' | 'updated' | 'unchanged' | 'deleted' | 'failed';
5023
+ /**
5024
+ * Matching status. Present when action is created, updated, or unchanged; absent when action is deleted or failed. 'processing': platform is still matching members against its user base. 'ready': audience is available for targeting, matched_count is populated. 'too_small': matched audience is below the platform's minimum size — add more members and re-sync.
5025
+ */
5026
+ status?: 'processing' | 'ready' | 'too_small';
5027
+ /**
5028
+ * Number of members submitted in this sync operation (delta, not cumulative). In discovery-only calls (no audiences array), this is 0.
5029
+ */
5030
+ uploaded_count?: number;
5031
+ /**
5032
+ * Total members matched to platform users across all syncs (cumulative, not just this call). Populated when status is 'ready'.
5033
+ */
5034
+ matched_count?: number;
5035
+ /**
5036
+ * ISO 8601 timestamp of when the most recent sync operation was accepted by the platform. Useful for agents reasoning about audience freshness. Omitted if the seller does not track this.
5037
+ */
5038
+ last_synced_at?: string;
5039
+ /**
5040
+ * Minimum matched audience size required for targeting on this platform. Populated when status is 'too_small'. Helps agents know how many more members are needed.
5041
+ */
5042
+ minimum_size?: number;
5043
+ /**
5044
+ * Errors for this audience (only present when action='failed')
5045
+ */
5046
+ errors?: Error[];
5047
+ }[];
5048
+ /**
5049
+ * When true, this response contains simulated data from sandbox mode.
5050
+ */
5051
+ sandbox?: boolean;
5052
+ context?: ContextObject;
5053
+ ext?: ExtensionObject;
5054
+ }
5055
+ /**
5056
+ * Standard error structure for task-specific errors and warnings
5057
+ */
5058
+ export interface SyncAudiencesError {
5059
+ /**
5060
+ * Operation-level errors that prevented processing
5061
+ */
5062
+ errors: Error[];
5063
+ context?: ContextObject;
5064
+ ext?: ExtensionObject;
5065
+ }
5127
5066
  /**
5128
5067
  * VAST (Video Ad Serving Template) tag for third-party video ad serving
5129
5068
  */
@@ -5150,7 +5089,7 @@ export interface BuildCreativeRequest {
5150
5089
  message?: string;
5151
5090
  creative_manifest?: CreativeManifest;
5152
5091
  target_format_id: FormatID1;
5153
- brand_manifest?: BrandManifestReference1;
5092
+ brand?: BrandReference1;
5154
5093
  creative_brief?: CreativeBriefReference;
5155
5094
  context?: ContextObject;
5156
5095
  ext?: ExtensionObject;
@@ -5295,6 +5234,10 @@ export type BuildCreativeResponse = BuildCreativeSuccess | BuildCreativeError;
5295
5234
  */
5296
5235
  export interface BuildCreativeSuccess {
5297
5236
  creative_manifest: CreativeManifest;
5237
+ /**
5238
+ * When true, this response contains simulated data from sandbox mode.
5239
+ */
5240
+ sandbox?: boolean;
5298
5241
  context?: ContextObject;
5299
5242
  ext?: ExtensionObject;
5300
5243
  }
@@ -6096,7 +6039,7 @@ export interface DeliveryMetrics1 {
6096
6039
  [k: string]: unknown | undefined;
6097
6040
  }
6098
6041
  /**
6099
- * The rendered creative manifest for this variant — the actual output that was served, not the input assets. Contains format_id and the resolved assets (specific headline, image, video, etc. the platform selected or generated). For Tier 2, shows which asset combination was picked. For Tier 3, contains the generated assets which may differ entirely from the input brand manifest. Pass to preview_creative to re-render.
6042
+ * The rendered creative manifest for this variant — the actual output that was served, not the input assets. Contains format_id and the resolved assets (specific headline, image, video, etc. the platform selected or generated). For Tier 2, shows which asset combination was picked. For Tier 3, contains the generated assets which may differ entirely from the input brand identity. Pass to preview_creative to re-render.
6100
6043
  */
6101
6044
  export interface Identifier {
6102
6045
  type: PropertyIdentifierTypes;
@@ -6381,6 +6324,10 @@ export interface GetSignalsResponse {
6381
6324
  */
6382
6325
  errors?: Error[];
6383
6326
  pagination?: PaginationResponse;
6327
+ /**
6328
+ * When true, this response contains simulated data from sandbox mode.
6329
+ */
6330
+ sandbox?: boolean;
6384
6331
  context?: ContextObject;
6385
6332
  ext?: ExtensionObject;
6386
6333
  }
@@ -6417,6 +6364,10 @@ export interface ActivateSignalSuccess {
6417
6364
  * Array of deployment results for each deployment target
6418
6365
  */
6419
6366
  deployments: Deployment[];
6367
+ /**
6368
+ * When true, this response contains simulated data from sandbox mode.
6369
+ */
6370
+ sandbox?: boolean;
6420
6371
  context?: ContextObject;
6421
6372
  ext?: ExtensionObject;
6422
6373
  }
@@ -6443,7 +6394,7 @@ export type BasePropertySource = PublisherTagsSource | PublisherPropertyIDsSourc
6443
6394
  */
6444
6395
  export type PropertyType = 'website' | 'mobile_app' | 'ctv_app' | 'desktop_app' | 'dooh' | 'podcast' | 'radio' | 'streaming_audio';
6445
6396
  /**
6446
- * 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.
6397
+ * Brand identifier within the house portfolio. Optional for single-brand domains.
6447
6398
  */
6448
6399
  export interface CreatePropertyListRequest {
6449
6400
  /**
@@ -6459,7 +6410,7 @@ export interface CreatePropertyListRequest {
6459
6410
  */
6460
6411
  base_properties?: BasePropertySource[];
6461
6412
  filters?: PropertyListFilters;
6462
- brand_manifest?: BrandManifest;
6413
+ brand?: BrandReference;
6463
6414
  context?: ContextObject;
6464
6415
  ext?: ExtensionObject;
6465
6416
  }
@@ -6579,7 +6530,7 @@ export interface FeatureRequirement {
6579
6530
  if_not_covered?: 'exclude' | 'include';
6580
6531
  }
6581
6532
  /**
6582
- * Brand identity and requirements. When provided, the agent automatically applies appropriate rules based on brand characteristics (industry, target_audience, etc.).
6533
+ * Brand reference. When provided, the agent automatically applies appropriate rules based on brand characteristics (industry, target_audience, etc.). Resolved at execution time.
6583
6534
  */
6584
6535
  /**
6585
6536
  * A source of properties for a property list. Supports three selection patterns: publisher with tags, publisher with property IDs, or direct identifiers.
@@ -6617,7 +6568,7 @@ export interface PropertyList {
6617
6568
  */
6618
6569
  base_properties?: BasePropertySource[];
6619
6570
  filters?: PropertyListFilters;
6620
- brand_manifest?: BrandManifest;
6571
+ brand?: BrandReference;
6621
6572
  /**
6622
6573
  * URL to receive notifications when the resolved list changes
6623
6574
  */
@@ -6663,7 +6614,7 @@ export interface UpdatePropertyListRequest {
6663
6614
  */
6664
6615
  base_properties?: BasePropertySource[];
6665
6616
  filters?: PropertyListFilters;
6666
- brand_manifest?: BrandManifest;
6617
+ brand?: BrandReference;
6667
6618
  /**
6668
6619
  * Update the webhook URL for list change notifications (set to empty string to remove)
6669
6620
  */
@@ -8738,6 +8689,38 @@ export interface GetAdCPCapabilitiesResponse {
8738
8689
  * Whether seller supports language targeting (ISO 639-1 codes)
8739
8690
  */
8740
8691
  language?: boolean;
8692
+ /**
8693
+ * Whether seller supports audience_include in targeting overlays (requires features.audience_targeting)
8694
+ */
8695
+ audience_include?: boolean;
8696
+ /**
8697
+ * Whether seller supports audience_exclude in targeting overlays (requires features.audience_targeting)
8698
+ */
8699
+ audience_exclude?: boolean;
8700
+ };
8701
+ };
8702
+ /**
8703
+ * Audience targeting capabilities. Only present when features.audience_targeting is true.
8704
+ */
8705
+ audience_targeting?: {
8706
+ /**
8707
+ * Hashed PII types accepted for audience matching. Buyers should only send identifiers the seller supports.
8708
+ */
8709
+ supported_identifier_types: ('hashed_email' | 'hashed_phone')[];
8710
+ /**
8711
+ * Universal ID types accepted for audience matching (MAIDs, RampID, UID2, etc.). MAID support varies significantly by platform — check this field before sending uids with type: maid.
8712
+ */
8713
+ supported_uid_types?: UIDType[];
8714
+ /**
8715
+ * Minimum matched audience size required for targeting. Audiences below this threshold will have status: too_small. Varies by platform (100–1000 is typical).
8716
+ */
8717
+ minimum_audience_size: number;
8718
+ /**
8719
+ * Expected matching latency range in hours after upload. Use to calibrate polling cadence and set appropriate expectations before configuring push_notification_config.
8720
+ */
8721
+ matching_latency_hours?: {
8722
+ min?: number;
8723
+ max?: number;
8741
8724
  };
8742
8725
  };
8743
8726
  /**
@@ -8891,9 +8874,9 @@ export interface GetAdCPCapabilitiesResponse {
8891
8874
  };
8892
8875
  capabilities: SICapabilities;
8893
8876
  /**
8894
- * URL to brand manifest with colors, fonts, logos, tone
8877
+ * URL to brand.json with colors, fonts, logos, tone
8895
8878
  */
8896
- brand_manifest_url?: string;
8879
+ brand_url?: string;
8897
8880
  };
8898
8881
  /**
8899
8882
  * Creative protocol capabilities. Only present if creative is in supported_protocols.
@@ -8931,6 +8914,10 @@ export interface ListAccountsRequest {
8931
8914
  */
8932
8915
  status?: 'active' | 'pending_approval' | 'payment_required' | 'suspended' | 'closed';
8933
8916
  pagination?: PaginationRequest;
8917
+ /**
8918
+ * Filter by sandbox status. true returns only sandbox accounts, false returns only production accounts. Omit to return all accounts.
8919
+ */
8920
+ sandbox?: boolean;
8934
8921
  context?: ContextObject;
8935
8922
  ext?: ExtensionObject;
8936
8923
  }
@@ -8982,6 +8969,10 @@ export interface SyncAccountsRequest {
8982
8969
  * Who should be invoiced. brand: seller invoices the brand directly. operator: seller invoices the operator (agency). agent: agent consolidates billing across brands. Omit to accept the seller's default.
8983
8970
  */
8984
8971
  billing?: 'brand' | 'operator' | 'agent';
8972
+ /**
8973
+ * When true, provision this as a sandbox account. No real platform calls or billing. Sandbox accounts are identified by account_id in subsequent requests.
8974
+ */
8975
+ sandbox?: boolean;
8985
8976
  }[];
8986
8977
  /**
8987
8978
  * When true, accounts previously synced by this agent but not included in this request will be deactivated. Scoped to the authenticated agent — does not affect accounts managed by other agents. Use with caution.
@@ -9087,6 +9078,10 @@ export interface SyncAccountsSuccess {
9087
9078
  * Non-fatal warnings about this account
9088
9079
  */
9089
9080
  warnings?: string[];
9081
+ /**
9082
+ * Whether this is a sandbox account, echoed from the request.
9083
+ */
9084
+ sandbox?: boolean;
9090
9085
  }[];
9091
9086
  context?: ContextObject;
9092
9087
  ext?: ExtensionObject;