@adcp/client 2.0.2 → 2.3.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.
@@ -1050,19 +1050,19 @@ export interface Format {
1050
1050
  }[]
1051
1051
  ];
1052
1052
  /**
1053
- * Array of required assets or asset groups for this format. Can contain individual assets or repeatable asset sequences (e.g., carousel products, slideshow frames).
1053
+ * 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).
1054
1054
  */
1055
1055
  assets_required?: ({
1056
1056
  /**
1057
- * Identifier for this asset in the format
1057
+ * Unique identifier for this asset. Creative manifests MUST use this exact value as the key in the assets object.
1058
1058
  */
1059
1059
  asset_id: string;
1060
1060
  /**
1061
1061
  * Type of asset
1062
1062
  */
1063
- asset_type: 'image' | 'video' | 'audio' | 'text' | 'html' | 'javascript' | 'url' | 'brand_manifest';
1063
+ asset_type: 'image' | 'video' | 'audio' | 'vast' | 'daast' | 'text' | 'html' | 'css' | 'javascript' | 'url' | 'webhook' | 'promoted_offerings';
1064
1064
  /**
1065
- * Purpose of this asset (e.g., 'hero_image', 'logo', 'headline', 'cta_button')
1065
+ * 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.
1066
1066
  */
1067
1067
  asset_role?: string;
1068
1068
  /**
@@ -1103,9 +1103,9 @@ export interface Format {
1103
1103
  /**
1104
1104
  * Type of asset
1105
1105
  */
1106
- asset_type: 'image' | 'video' | 'audio' | 'text' | 'html' | 'javascript' | 'url' | 'brand_manifest';
1106
+ asset_type: 'image' | 'video' | 'audio' | 'vast' | 'daast' | 'text' | 'html' | 'css' | 'javascript' | 'url' | 'webhook' | 'promoted_offerings';
1107
1107
  /**
1108
- * Purpose of this asset
1108
+ * 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.
1109
1109
  */
1110
1110
  asset_role?: string;
1111
1111
  /**
@@ -1174,7 +1174,11 @@ export type DAASTAsset2 = {
1174
1174
  [k: string]: unknown;
1175
1175
  };
1176
1176
  /**
1177
- * 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.
1177
+ * Brand information manifest containing assets, themes, and guidelines. Can be provided inline or as a URL reference to a hosted manifest.
1178
+ */
1179
+ export type BrandManifestReference1 = BrandManifest1 | string;
1180
+ /**
1181
+ * Campaign start timing: 'asap' or ISO 8601 date-time
1178
1182
  */
1179
1183
  export type StartTiming = 'asap' | string;
1180
1184
  /**
@@ -1189,7 +1193,7 @@ export interface CreateMediaBuyRequest {
1189
1193
  * Array of package configurations
1190
1194
  */
1191
1195
  packages: PackageRequest[];
1192
- brand_manifest: BrandManifestReference;
1196
+ brand_manifest: BrandManifestReference1;
1193
1197
  /**
1194
1198
  * Purchase order number for tracking
1195
1199
  */
@@ -1309,7 +1313,7 @@ export interface CreativeAsset {
1309
1313
  * This interface was referenced by `undefined`'s JSON-Schema definition
1310
1314
  * via the `patternProperty` "^[a-zA-Z0-9_-]+$".
1311
1315
  */
1312
- [k: string]: ImageAsset | VideoAsset | AudioAsset | TextAsset | HTMLAsset | CSSAsset | JavaScriptAsset | VASTAsset | DAASTAsset | PromotedOfferingsAsset | URLAsset;
1316
+ [k: string]: ImageAsset | VideoAsset | AudioAsset | TextAsset | HTMLAsset | CSSAsset | JavaScriptAsset | VASTAsset | DAASTAsset | PromotedOfferings | URLAsset;
1313
1317
  };
1314
1318
  /**
1315
1319
  * Preview contexts for generative formats - defines what scenarios to generate previews for
@@ -1343,7 +1347,6 @@ export interface CreativeAsset {
1343
1347
  * Structured format identifier with agent URL and format name
1344
1348
  */
1345
1349
  export interface ImageAsset {
1346
- asset_type: 'image';
1347
1350
  /**
1348
1351
  * URL to the image asset
1349
1352
  */
@@ -1369,7 +1372,6 @@ export interface ImageAsset {
1369
1372
  * Video asset with URL and specifications
1370
1373
  */
1371
1374
  export interface VideoAsset {
1372
- asset_type: 'video';
1373
1375
  /**
1374
1376
  * URL to the video asset
1375
1377
  */
@@ -1399,7 +1401,6 @@ export interface VideoAsset {
1399
1401
  * Audio asset with URL and specifications
1400
1402
  */
1401
1403
  export interface AudioAsset {
1402
- asset_type: 'audio';
1403
1404
  /**
1404
1405
  * URL to the audio asset
1405
1406
  */
@@ -1421,15 +1422,10 @@ export interface AudioAsset {
1421
1422
  * Text content asset
1422
1423
  */
1423
1424
  export interface TextAsset {
1424
- asset_type: 'text';
1425
1425
  /**
1426
1426
  * Text content
1427
1427
  */
1428
1428
  content: string;
1429
- /**
1430
- * Maximum character length constraint
1431
- */
1432
- max_length?: number;
1433
1429
  /**
1434
1430
  * Language code (e.g., 'en', 'es', 'fr')
1435
1431
  */
@@ -1439,7 +1435,6 @@ export interface TextAsset {
1439
1435
  * HTML content asset
1440
1436
  */
1441
1437
  export interface HTMLAsset {
1442
- asset_type: 'html';
1443
1438
  /**
1444
1439
  * HTML content
1445
1440
  */
@@ -1453,7 +1448,6 @@ export interface HTMLAsset {
1453
1448
  * CSS stylesheet asset
1454
1449
  */
1455
1450
  export interface CSSAsset {
1456
- asset_type: 'css';
1457
1451
  /**
1458
1452
  * CSS content
1459
1453
  */
@@ -1467,7 +1461,6 @@ export interface CSSAsset {
1467
1461
  * JavaScript code asset
1468
1462
  */
1469
1463
  export interface JavaScriptAsset {
1470
- asset_type: 'javascript';
1471
1464
  /**
1472
1465
  * JavaScript content
1473
1466
  */
@@ -1478,7 +1471,6 @@ export interface JavaScriptAsset {
1478
1471
  module_type?: 'esm' | 'commonjs' | 'script';
1479
1472
  }
1480
1473
  export interface VASTAsset1 {
1481
- asset_type?: 'vast';
1482
1474
  /**
1483
1475
  * URL endpoint that returns VAST XML
1484
1476
  */
@@ -1495,10 +1487,6 @@ export interface VASTAsset1 {
1495
1487
  * Whether VPAID (Video Player-Ad Interface Definition) is supported
1496
1488
  */
1497
1489
  vpaid_enabled?: boolean;
1498
- /**
1499
- * Maximum allowed wrapper/redirect depth
1500
- */
1501
- max_wrapper_depth?: number;
1502
1490
  /**
1503
1491
  * Expected video duration in milliseconds (if known)
1504
1492
  */
@@ -1509,7 +1497,6 @@ export interface VASTAsset1 {
1509
1497
  tracking_events?: ('start' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'complete' | 'impression' | 'click' | 'pause' | 'resume' | 'skip' | 'mute' | 'unmute' | 'fullscreen' | 'exitFullscreen' | 'playerExpand' | 'playerCollapse')[];
1510
1498
  }
1511
1499
  export interface DAASTAsset1 {
1512
- asset_type?: 'daast';
1513
1500
  /**
1514
1501
  * URL endpoint that returns DAAST XML
1515
1502
  */
@@ -1536,36 +1523,70 @@ export interface DAASTAsset1 {
1536
1523
  companion_ads?: boolean;
1537
1524
  }
1538
1525
  /**
1539
- * Reference to promoted offerings specification
1526
+ * Complete offering specification combining brand manifest, product selectors, and asset filters. Provides all context needed for creative generation about what is being promoted.
1540
1527
  */
1541
- export interface PromotedOfferingsAsset {
1542
- asset_type: 'promoted_offerings';
1528
+ export interface PromotedOfferings {
1529
+ brand_manifest: BrandManifestReference;
1530
+ product_selectors?: PromotedProducts;
1543
1531
  /**
1544
- * URL of the advertiser's brand or offering (e.g., https://retailer.com)
1532
+ * Inline offerings for campaigns without a product catalog. Each offering has a name, description, and associated assets.
1545
1533
  */
1546
- url?: string;
1534
+ offerings?: {
1535
+ /**
1536
+ * Offering name (e.g., 'Winter Sale', 'New Product Launch')
1537
+ */
1538
+ name: string;
1539
+ /**
1540
+ * Description of what's being offered
1541
+ */
1542
+ description?: string;
1543
+ /**
1544
+ * Assets specific to this offering
1545
+ */
1546
+ assets?: {
1547
+ [k: string]: unknown;
1548
+ }[];
1549
+ }[];
1547
1550
  /**
1548
- * Brand colors
1551
+ * Selectors to choose specific assets from the brand manifest
1549
1552
  */
1550
- colors?: {
1551
- primary?: string;
1552
- secondary?: string;
1553
- accent?: string;
1553
+ asset_selectors?: {
1554
+ /**
1555
+ * Select assets with specific tags (e.g., ['holiday', 'premium'])
1556
+ */
1557
+ tags?: string[];
1558
+ /**
1559
+ * Filter by asset type (e.g., ['image', 'video'])
1560
+ */
1561
+ asset_types?: ('image' | 'video' | 'audio' | 'vast' | 'daast' | 'text' | 'url' | 'html' | 'css' | 'javascript' | 'webhook')[];
1562
+ /**
1563
+ * Exclude assets with these tags
1564
+ */
1565
+ exclude_tags?: string[];
1554
1566
  };
1567
+ }
1568
+ export interface PromotedProducts {
1555
1569
  /**
1556
- * Brand fonts
1570
+ * Direct product SKU references from the brand manifest product catalog
1557
1571
  */
1558
- fonts?: string[];
1572
+ manifest_skus?: string[];
1559
1573
  /**
1560
- * Brand tone/voice
1574
+ * Select products by tags from the brand manifest product catalog (e.g., 'organic', 'sauces', 'holiday')
1561
1575
  */
1562
- tone?: string;
1576
+ manifest_tags?: string[];
1577
+ /**
1578
+ * Select products from a specific category in the brand manifest product catalog (e.g., 'beverages/soft-drinks', 'food/sauces')
1579
+ */
1580
+ manifest_category?: string;
1581
+ /**
1582
+ * Natural language query to select products from the brand manifest (e.g., 'all Kraft Heinz pasta sauces', 'organic products under $20')
1583
+ */
1584
+ manifest_query?: string;
1563
1585
  }
1564
1586
  /**
1565
1587
  * URL reference asset
1566
1588
  */
1567
1589
  export interface URLAsset {
1568
- asset_type: 'url';
1569
1590
  /**
1570
1591
  * URL reference
1571
1592
  */
@@ -1575,6 +1596,9 @@ export interface URLAsset {
1575
1596
  */
1576
1597
  description?: string;
1577
1598
  }
1599
+ /**
1600
+ * Webhook configuration for asynchronous task notifications. Uses A2A-compatible PushNotificationConfig structure. Supports Bearer tokens (simple) or HMAC signatures (production-recommended).
1601
+ */
1578
1602
  export interface PushNotificationConfig {
1579
1603
  /**
1580
1604
  * Webhook endpoint URL for task status notifications
@@ -1962,7 +1986,7 @@ export interface ListCreativesResponse {
1962
1986
  * This interface was referenced by `undefined`'s JSON-Schema definition
1963
1987
  * via the `patternProperty` "^[a-zA-Z0-9_-]+$".
1964
1988
  */
1965
- [k: string]: ImageAsset | VideoAsset | AudioAsset | TextAsset | HTMLAsset | CSSAsset | JavaScriptAsset | VASTAsset | DAASTAsset | PromotedOfferingsAsset | URLAsset;
1989
+ [k: string]: ImageAsset | VideoAsset | AudioAsset | TextAsset | HTMLAsset | CSSAsset | JavaScriptAsset | VASTAsset | DAASTAsset | PromotedOfferings | URLAsset;
1966
1990
  };
1967
1991
  /**
1968
1992
  * Landing page URL for the creative
@@ -2605,6 +2629,386 @@ export interface ProvidePerformanceFeedbackResponse {
2605
2629
  /**
2606
2630
  * Standard error structure for task-specific errors and warnings
2607
2631
  */
2632
+ /**
2633
+ * VAST (Video Ad Serving Template) tag for third-party video ad serving
2634
+ */
2635
+ export interface BuildCreativeRequest {
2636
+ /**
2637
+ * 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.
2638
+ */
2639
+ message?: string;
2640
+ creative_manifest?: CreativeManifest;
2641
+ target_format_id: FormatID1;
2642
+ }
2643
+ /**
2644
+ * 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.
2645
+ */
2646
+ export interface CreativeManifest {
2647
+ format_id: FormatID;
2648
+ /**
2649
+ * Product name or offering being advertised. Maps to promoted_offerings in create_media_buy request to associate creative with the product being promoted.
2650
+ */
2651
+ promoted_offering?: string;
2652
+ /**
2653
+ * 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.
2654
+ *
2655
+ * 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.
2656
+ */
2657
+ assets: {
2658
+ /**
2659
+ * This interface was referenced by `undefined`'s JSON-Schema definition
2660
+ * via the `patternProperty` "^[a-z0-9_]+$".
2661
+ */
2662
+ [k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset | PromotedOfferings;
2663
+ };
2664
+ }
2665
+ /**
2666
+ * Format identifier this manifest is for
2667
+ */
2668
+ export interface WebhookAsset {
2669
+ /**
2670
+ * Webhook URL to call for dynamic content
2671
+ */
2672
+ url: string;
2673
+ /**
2674
+ * HTTP method
2675
+ */
2676
+ method?: 'GET' | 'POST';
2677
+ /**
2678
+ * Maximum time to wait for response in milliseconds
2679
+ */
2680
+ timeout_ms?: number;
2681
+ /**
2682
+ * Universal macros that can be passed to webhook (e.g., {DEVICE_TYPE}, {COUNTRY})
2683
+ */
2684
+ supported_macros?: string[];
2685
+ /**
2686
+ * Universal macros that must be provided for webhook to function
2687
+ */
2688
+ required_macros?: string[];
2689
+ /**
2690
+ * Expected content type of webhook response
2691
+ */
2692
+ response_type: 'html' | 'json' | 'xml' | 'javascript';
2693
+ /**
2694
+ * Security configuration for webhook calls
2695
+ */
2696
+ security: {
2697
+ /**
2698
+ * Authentication method
2699
+ */
2700
+ method: 'hmac_sha256' | 'api_key' | 'none';
2701
+ /**
2702
+ * Header name for HMAC signature (e.g., 'X-Signature')
2703
+ */
2704
+ hmac_header?: string;
2705
+ /**
2706
+ * Header name for API key (e.g., 'X-API-Key')
2707
+ */
2708
+ api_key_header?: string;
2709
+ };
2710
+ }
2711
+ /**
2712
+ * CSS stylesheet asset
2713
+ */
2714
+ /**
2715
+ * VAST (Video Ad Serving Template) tag for third-party video ad serving
2716
+ */
2717
+ export interface BuildCreativeResponse {
2718
+ creative_manifest: CreativeManifest;
2719
+ /**
2720
+ * Task-specific errors and warnings
2721
+ */
2722
+ errors?: Error[];
2723
+ }
2724
+ /**
2725
+ * The generated or transformed creative manifest
2726
+ */
2727
+ /**
2728
+ * VAST (Video Ad Serving Template) tag for third-party video ad serving
2729
+ */
2730
+ export interface PreviewCreativeRequest {
2731
+ format_id: FormatID;
2732
+ creative_manifest: CreativeManifest;
2733
+ /**
2734
+ * 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.
2735
+ */
2736
+ inputs?: {
2737
+ /**
2738
+ * Human-readable name for this input set (e.g., 'Sunny morning on mobile', 'Evening podcast ad', 'Desktop dark mode')
2739
+ */
2740
+ name: string;
2741
+ /**
2742
+ * Macro values to use for this preview. Supports all universal macros from the format's supported_macros list. See docs/media-buy/creatives/universal-macros.md for available macros.
2743
+ */
2744
+ macros?: {
2745
+ [k: string]: string;
2746
+ };
2747
+ /**
2748
+ * 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')
2749
+ */
2750
+ context_description?: string;
2751
+ }[];
2752
+ /**
2753
+ * Specific template ID for custom format rendering
2754
+ */
2755
+ template_id?: string;
2756
+ }
2757
+ /**
2758
+ * Format identifier for rendering the preview
2759
+ */
2760
+ /**
2761
+ * Response containing preview links for a creative. Each preview URL returns an HTML page that can be embedded in an iframe to display the rendered creative.
2762
+ */
2763
+ export interface PreviewCreativeResponse {
2764
+ /**
2765
+ * Array of preview variants. Each preview corresponds to an input set from the request. If no inputs were provided, returns a single default preview.
2766
+ *
2767
+ * @minItems 1
2768
+ */
2769
+ previews: [
2770
+ {
2771
+ /**
2772
+ * Unique identifier for this preview variant
2773
+ */
2774
+ preview_id: string;
2775
+ /**
2776
+ * 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.
2777
+ *
2778
+ * @minItems 1
2779
+ */
2780
+ renders: [
2781
+ {
2782
+ /**
2783
+ * Unique identifier for this rendered piece within the variant
2784
+ */
2785
+ render_id: string;
2786
+ /**
2787
+ * URL to an HTML page that renders this piece. Can be embedded in an iframe. Handles all rendering complexity internally (images, video players, audio players, interactive content, etc.).
2788
+ */
2789
+ preview_url: string;
2790
+ /**
2791
+ * Semantic role of this rendered piece. Use 'primary' for main content, 'companion' for associated banners, descriptive strings for device variants or custom roles.
2792
+ */
2793
+ role: string;
2794
+ /**
2795
+ * Dimensions for this rendered piece. For companion ads with multiple sizes, this specifies which size this piece is.
2796
+ */
2797
+ dimensions?: {
2798
+ width: number;
2799
+ height: number;
2800
+ };
2801
+ /**
2802
+ * Optional security and embedding metadata for safe iframe integration
2803
+ */
2804
+ embedding?: {
2805
+ /**
2806
+ * Recommended iframe sandbox attribute value (e.g., 'allow-scripts allow-same-origin')
2807
+ */
2808
+ recommended_sandbox?: string;
2809
+ /**
2810
+ * Whether this output requires HTTPS for secure embedding
2811
+ */
2812
+ requires_https?: boolean;
2813
+ /**
2814
+ * Whether this output supports fullscreen mode
2815
+ */
2816
+ supports_fullscreen?: boolean;
2817
+ /**
2818
+ * Content Security Policy requirements for embedding
2819
+ */
2820
+ csp_policy?: string;
2821
+ };
2822
+ },
2823
+ ...{
2824
+ /**
2825
+ * Unique identifier for this rendered piece within the variant
2826
+ */
2827
+ render_id: string;
2828
+ /**
2829
+ * URL to an HTML page that renders this piece. Can be embedded in an iframe. Handles all rendering complexity internally (images, video players, audio players, interactive content, etc.).
2830
+ */
2831
+ preview_url: string;
2832
+ /**
2833
+ * Semantic role of this rendered piece. Use 'primary' for main content, 'companion' for associated banners, descriptive strings for device variants or custom roles.
2834
+ */
2835
+ role: string;
2836
+ /**
2837
+ * Dimensions for this rendered piece. For companion ads with multiple sizes, this specifies which size this piece is.
2838
+ */
2839
+ dimensions?: {
2840
+ width: number;
2841
+ height: number;
2842
+ };
2843
+ /**
2844
+ * Optional security and embedding metadata for safe iframe integration
2845
+ */
2846
+ embedding?: {
2847
+ /**
2848
+ * Recommended iframe sandbox attribute value (e.g., 'allow-scripts allow-same-origin')
2849
+ */
2850
+ recommended_sandbox?: string;
2851
+ /**
2852
+ * Whether this output requires HTTPS for secure embedding
2853
+ */
2854
+ requires_https?: boolean;
2855
+ /**
2856
+ * Whether this output supports fullscreen mode
2857
+ */
2858
+ supports_fullscreen?: boolean;
2859
+ /**
2860
+ * Content Security Policy requirements for embedding
2861
+ */
2862
+ csp_policy?: string;
2863
+ };
2864
+ }[]
2865
+ ];
2866
+ /**
2867
+ * The input parameters that generated this preview variant. Echoes back the request input or shows defaults used.
2868
+ */
2869
+ input: {
2870
+ /**
2871
+ * Human-readable name for this variant
2872
+ */
2873
+ name: string;
2874
+ /**
2875
+ * Macro values applied to this variant
2876
+ */
2877
+ macros?: {
2878
+ [k: string]: string;
2879
+ };
2880
+ /**
2881
+ * Context description applied to this variant
2882
+ */
2883
+ context_description?: string;
2884
+ };
2885
+ },
2886
+ ...{
2887
+ /**
2888
+ * Unique identifier for this preview variant
2889
+ */
2890
+ preview_id: string;
2891
+ /**
2892
+ * 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.
2893
+ *
2894
+ * @minItems 1
2895
+ */
2896
+ renders: [
2897
+ {
2898
+ /**
2899
+ * Unique identifier for this rendered piece within the variant
2900
+ */
2901
+ render_id: string;
2902
+ /**
2903
+ * URL to an HTML page that renders this piece. Can be embedded in an iframe. Handles all rendering complexity internally (images, video players, audio players, interactive content, etc.).
2904
+ */
2905
+ preview_url: string;
2906
+ /**
2907
+ * Semantic role of this rendered piece. Use 'primary' for main content, 'companion' for associated banners, descriptive strings for device variants or custom roles.
2908
+ */
2909
+ role: string;
2910
+ /**
2911
+ * Dimensions for this rendered piece. For companion ads with multiple sizes, this specifies which size this piece is.
2912
+ */
2913
+ dimensions?: {
2914
+ width: number;
2915
+ height: number;
2916
+ };
2917
+ /**
2918
+ * Optional security and embedding metadata for safe iframe integration
2919
+ */
2920
+ embedding?: {
2921
+ /**
2922
+ * Recommended iframe sandbox attribute value (e.g., 'allow-scripts allow-same-origin')
2923
+ */
2924
+ recommended_sandbox?: string;
2925
+ /**
2926
+ * Whether this output requires HTTPS for secure embedding
2927
+ */
2928
+ requires_https?: boolean;
2929
+ /**
2930
+ * Whether this output supports fullscreen mode
2931
+ */
2932
+ supports_fullscreen?: boolean;
2933
+ /**
2934
+ * Content Security Policy requirements for embedding
2935
+ */
2936
+ csp_policy?: string;
2937
+ };
2938
+ },
2939
+ ...{
2940
+ /**
2941
+ * Unique identifier for this rendered piece within the variant
2942
+ */
2943
+ render_id: string;
2944
+ /**
2945
+ * URL to an HTML page that renders this piece. Can be embedded in an iframe. Handles all rendering complexity internally (images, video players, audio players, interactive content, etc.).
2946
+ */
2947
+ preview_url: string;
2948
+ /**
2949
+ * Semantic role of this rendered piece. Use 'primary' for main content, 'companion' for associated banners, descriptive strings for device variants or custom roles.
2950
+ */
2951
+ role: string;
2952
+ /**
2953
+ * Dimensions for this rendered piece. For companion ads with multiple sizes, this specifies which size this piece is.
2954
+ */
2955
+ dimensions?: {
2956
+ width: number;
2957
+ height: number;
2958
+ };
2959
+ /**
2960
+ * Optional security and embedding metadata for safe iframe integration
2961
+ */
2962
+ embedding?: {
2963
+ /**
2964
+ * Recommended iframe sandbox attribute value (e.g., 'allow-scripts allow-same-origin')
2965
+ */
2966
+ recommended_sandbox?: string;
2967
+ /**
2968
+ * Whether this output requires HTTPS for secure embedding
2969
+ */
2970
+ requires_https?: boolean;
2971
+ /**
2972
+ * Whether this output supports fullscreen mode
2973
+ */
2974
+ supports_fullscreen?: boolean;
2975
+ /**
2976
+ * Content Security Policy requirements for embedding
2977
+ */
2978
+ csp_policy?: string;
2979
+ };
2980
+ }[]
2981
+ ];
2982
+ /**
2983
+ * The input parameters that generated this preview variant. Echoes back the request input or shows defaults used.
2984
+ */
2985
+ input: {
2986
+ /**
2987
+ * Human-readable name for this variant
2988
+ */
2989
+ name: string;
2990
+ /**
2991
+ * Macro values applied to this variant
2992
+ */
2993
+ macros?: {
2994
+ [k: string]: string;
2995
+ };
2996
+ /**
2997
+ * Context description applied to this variant
2998
+ */
2999
+ context_description?: string;
3000
+ };
3001
+ }[]
3002
+ ];
3003
+ /**
3004
+ * 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.
3005
+ */
3006
+ interactive_url?: string;
3007
+ /**
3008
+ * ISO 8601 timestamp when preview links expire
3009
+ */
3010
+ expires_at: string;
3011
+ }
2608
3012
  /**
2609
3013
  * Request parameters for discovering signals based on description
2610
3014
  */