@adcp/client 4.7.2 → 4.9.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.
- package/bin/adcp.js +8 -0
- package/dist/lib/adapters/governance-adapter.d.ts +88 -0
- package/dist/lib/adapters/governance-adapter.d.ts.map +1 -0
- package/dist/lib/adapters/governance-adapter.js +96 -0
- package/dist/lib/adapters/governance-adapter.js.map +1 -0
- package/dist/lib/adapters/index.d.ts +1 -0
- package/dist/lib/adapters/index.d.ts.map +1 -1
- package/dist/lib/adapters/index.js +7 -1
- package/dist/lib/adapters/index.js.map +1 -1
- package/dist/lib/agents/index.generated.d.ts +49 -17
- package/dist/lib/agents/index.generated.d.ts.map +1 -1
- package/dist/lib/agents/index.generated.js +72 -24
- package/dist/lib/agents/index.generated.js.map +1 -1
- package/dist/lib/core/AgentClient.d.ts.map +1 -1
- package/dist/lib/core/AsyncHandler.d.ts +1 -1
- package/dist/lib/core/AsyncHandler.d.ts.map +1 -1
- package/dist/lib/core/AsyncHandler.js.map +1 -1
- package/dist/lib/core/ConversationTypes.d.ts +8 -2
- package/dist/lib/core/ConversationTypes.d.ts.map +1 -1
- package/dist/lib/core/CreativeAgentClient.d.ts +17 -1
- package/dist/lib/core/CreativeAgentClient.d.ts.map +1 -1
- package/dist/lib/core/CreativeAgentClient.js +21 -0
- package/dist/lib/core/CreativeAgentClient.js.map +1 -1
- package/dist/lib/core/GovernanceMiddleware.d.ts +86 -0
- package/dist/lib/core/GovernanceMiddleware.d.ts.map +1 -0
- package/dist/lib/core/GovernanceMiddleware.js +289 -0
- package/dist/lib/core/GovernanceMiddleware.js.map +1 -0
- package/dist/lib/core/GovernanceTypes.d.ts +118 -0
- package/dist/lib/core/GovernanceTypes.d.ts.map +1 -0
- package/dist/lib/core/GovernanceTypes.js +69 -0
- package/dist/lib/core/GovernanceTypes.js.map +1 -0
- package/dist/lib/core/SingleAgentClient.d.ts +35 -1
- package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
- package/dist/lib/core/SingleAgentClient.js +45 -0
- package/dist/lib/core/SingleAgentClient.js.map +1 -1
- package/dist/lib/core/TaskExecutor.d.ts +10 -0
- package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
- package/dist/lib/core/TaskExecutor.js +95 -10
- package/dist/lib/core/TaskExecutor.js.map +1 -1
- package/dist/lib/index.d.ts +7 -3
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +22 -4
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/observability/index.d.ts +8 -0
- package/dist/lib/observability/index.d.ts.map +1 -0
- package/dist/lib/observability/index.js +17 -0
- package/dist/lib/observability/index.js.map +1 -0
- package/dist/lib/observability/tracing.d.ts +42 -0
- package/dist/lib/observability/tracing.d.ts.map +1 -0
- package/dist/lib/observability/tracing.js +126 -0
- package/dist/lib/observability/tracing.js.map +1 -0
- package/dist/lib/protocols/a2a.d.ts.map +1 -1
- package/dist/lib/protocols/a2a.js +16 -1
- package/dist/lib/protocols/a2a.js.map +1 -1
- package/dist/lib/protocols/index.d.ts.map +1 -1
- package/dist/lib/protocols/index.js +37 -29
- package/dist/lib/protocols/index.js.map +1 -1
- package/dist/lib/protocols/mcp.d.ts.map +1 -1
- package/dist/lib/protocols/mcp.js +21 -1
- package/dist/lib/protocols/mcp.js.map +1 -1
- package/dist/lib/registry/types.generated.d.ts +750 -1
- package/dist/lib/registry/types.generated.d.ts.map +1 -1
- package/dist/lib/registry/types.generated.js +1 -1
- package/dist/lib/testing/agent-tester.d.ts +1 -1
- package/dist/lib/testing/agent-tester.d.ts.map +1 -1
- package/dist/lib/testing/agent-tester.js +37 -11
- package/dist/lib/testing/agent-tester.js.map +1 -1
- package/dist/lib/testing/formatter.d.ts.map +1 -1
- package/dist/lib/testing/formatter.js +6 -5
- package/dist/lib/testing/formatter.js.map +1 -1
- package/dist/lib/testing/index.d.ts +1 -1
- package/dist/lib/testing/index.d.ts.map +1 -1
- package/dist/lib/testing/index.js +3 -2
- package/dist/lib/testing/index.js.map +1 -1
- package/dist/lib/testing/orchestrator.d.ts +0 -2
- package/dist/lib/testing/orchestrator.d.ts.map +1 -1
- package/dist/lib/testing/orchestrator.js +24 -6
- package/dist/lib/testing/orchestrator.js.map +1 -1
- package/dist/lib/testing/scenarios/capabilities.d.ts.map +1 -1
- package/dist/lib/testing/scenarios/capabilities.js +111 -40
- package/dist/lib/testing/scenarios/capabilities.js.map +1 -1
- package/dist/lib/testing/scenarios/creative.d.ts +14 -0
- package/dist/lib/testing/scenarios/creative.d.ts.map +1 -1
- package/dist/lib/testing/scenarios/creative.js +241 -42
- package/dist/lib/testing/scenarios/creative.js.map +1 -1
- package/dist/lib/testing/scenarios/governance.d.ts +48 -0
- package/dist/lib/testing/scenarios/governance.d.ts.map +1 -1
- package/dist/lib/testing/scenarios/governance.js +675 -0
- package/dist/lib/testing/scenarios/governance.js.map +1 -1
- package/dist/lib/testing/scenarios/index.d.ts +3 -3
- package/dist/lib/testing/scenarios/index.d.ts.map +1 -1
- package/dist/lib/testing/scenarios/index.js +9 -1
- package/dist/lib/testing/scenarios/index.js.map +1 -1
- package/dist/lib/testing/scenarios/media-buy.d.ts +21 -1
- package/dist/lib/testing/scenarios/media-buy.d.ts.map +1 -1
- package/dist/lib/testing/scenarios/media-buy.js +282 -49
- package/dist/lib/testing/scenarios/media-buy.js.map +1 -1
- package/dist/lib/testing/types.d.ts +2 -2
- package/dist/lib/testing/types.d.ts.map +1 -1
- package/dist/lib/types/core.generated.d.ts +747 -8
- package/dist/lib/types/core.generated.d.ts.map +1 -1
- package/dist/lib/types/core.generated.js +1 -1
- package/dist/lib/types/schemas.generated.d.ts +25143 -19145
- package/dist/lib/types/schemas.generated.d.ts.map +1 -1
- package/dist/lib/types/schemas.generated.js +795 -282
- package/dist/lib/types/schemas.generated.js.map +1 -1
- package/dist/lib/types/tools.generated.d.ts +3529 -1964
- package/dist/lib/types/tools.generated.d.ts.map +1 -1
- package/dist/lib/utils/capabilities.d.ts +17 -2
- package/dist/lib/utils/capabilities.d.ts.map +1 -1
- package/dist/lib/utils/capabilities.js +35 -6
- package/dist/lib/utils/capabilities.js.map +1 -1
- package/package.json +14 -21
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
* Brand identifier within the house portfolio. Optional for single-brand domains.
|
|
3
3
|
*/
|
|
4
4
|
export type BrandID = string;
|
|
5
|
+
/**
|
|
6
|
+
* Authentication schemes for push notification endpoints
|
|
7
|
+
*/
|
|
8
|
+
export type AuthenticationScheme = 'Bearer' | 'HMAC-SHA256';
|
|
5
9
|
/**
|
|
6
10
|
* Status of a media buy.
|
|
7
11
|
*/
|
|
@@ -270,9 +274,9 @@ export interface Account {
|
|
|
270
274
|
*/
|
|
271
275
|
rate_card?: string;
|
|
272
276
|
/**
|
|
273
|
-
* Payment terms
|
|
277
|
+
* Payment terms agreed for this account. Binding for all invoices when the account is active.
|
|
274
278
|
*/
|
|
275
|
-
payment_terms?:
|
|
279
|
+
payment_terms?: 'net_15' | 'net_30' | 'net_45' | 'net_60' | 'net_90' | 'prepay';
|
|
276
280
|
/**
|
|
277
281
|
* Maximum outstanding balance allowed
|
|
278
282
|
*/
|
|
@@ -301,6 +305,29 @@ export interface Account {
|
|
|
301
305
|
* How the seller scoped this account. operator: shared across all brands for this operator. brand: shared across all operators for this brand. operator_brand: dedicated to a specific operator+brand combination. agent: the agent's default account with no brand or operator association.
|
|
302
306
|
*/
|
|
303
307
|
account_scope?: 'operator' | 'brand' | 'operator_brand' | 'agent';
|
|
308
|
+
/**
|
|
309
|
+
* Governance agent endpoints for this account. When present, the seller MUST call these agents for governance approval before confirming media buy requests. Each agent can be scoped to specific validation categories. All applicable agents must approve for the action to proceed (unanimous approval).
|
|
310
|
+
*/
|
|
311
|
+
governance_agents?: {
|
|
312
|
+
/**
|
|
313
|
+
* Governance agent endpoint URL.
|
|
314
|
+
*/
|
|
315
|
+
url: string;
|
|
316
|
+
authentication: {
|
|
317
|
+
/**
|
|
318
|
+
* @maxItems 1
|
|
319
|
+
*/
|
|
320
|
+
schemes: [] | [AuthenticationScheme];
|
|
321
|
+
/**
|
|
322
|
+
* Authentication credential (e.g., Bearer token).
|
|
323
|
+
*/
|
|
324
|
+
credentials: string;
|
|
325
|
+
};
|
|
326
|
+
/**
|
|
327
|
+
* Governance categories this agent handles (e.g., ['budget_authority', 'strategic_alignment']). When omitted, the agent handles all categories.
|
|
328
|
+
*/
|
|
329
|
+
categories?: string[];
|
|
330
|
+
}[];
|
|
304
331
|
/**
|
|
305
332
|
* When true, this is a sandbox account — no real platform calls, no real spend. For explicit accounts (require_operator_auth: true), sandbox accounts are pre-existing test accounts on the platform discovered via list_accounts. For implicit accounts, sandbox is part of the natural key: the same brand/operator pair can have both a production and sandbox account.
|
|
306
333
|
*/
|
|
@@ -1653,11 +1680,15 @@ export type PropertyTag = string;
|
|
|
1653
1680
|
/**
|
|
1654
1681
|
* Standardized advertising media channels describing how buyers allocate budget. Channels are planning abstractions, not technical substrates. See the Media Channel Taxonomy specification for detailed definitions.
|
|
1655
1682
|
*/
|
|
1656
|
-
export type MediaChannel = 'display' | 'olv' | 'social' | 'search' | 'ctv' | 'linear_tv' | 'radio' | 'streaming_audio' | 'podcast' | 'dooh' | 'ooh' | 'print' | 'cinema' | 'email' | 'gaming' | 'retail_media' | 'influencer' | 'affiliate' | 'product_placement';
|
|
1683
|
+
export type MediaChannel = 'display' | 'olv' | 'social' | 'search' | 'ctv' | 'linear_tv' | 'radio' | 'streaming_audio' | 'podcast' | 'dooh' | 'ooh' | 'print' | 'cinema' | 'email' | 'gaming' | 'retail_media' | 'influencer' | 'affiliate' | 'product_placement' | 'ai_media';
|
|
1657
1684
|
/**
|
|
1658
1685
|
* Type of inventory delivery
|
|
1659
1686
|
*/
|
|
1660
1687
|
export type DeliveryType = 'guaranteed' | 'non_guaranteed';
|
|
1688
|
+
/**
|
|
1689
|
+
* Whether this product offers exclusive access to its inventory. Defaults to 'none' when absent. Most relevant for guaranteed products tied to specific shows or placements.
|
|
1690
|
+
*/
|
|
1691
|
+
export type Exclusivity = 'none' | 'category' | 'exclusive';
|
|
1661
1692
|
/**
|
|
1662
1693
|
* A pricing model option offered by a publisher for a product. Discriminated by pricing_model field. If fixed_price is present, it's fixed pricing. If absent, it's auction-based (floor_price and price_guidance optional). Bid-based auction models may also include max_bid as a boolean signal to interpret bid_price as a buyer ceiling instead of an exact honored price.
|
|
1663
1694
|
*/
|
|
@@ -1733,6 +1764,22 @@ export type DataProviderSignalSelector = {
|
|
|
1733
1764
|
* Where the conversion event originated
|
|
1734
1765
|
*/
|
|
1735
1766
|
export type ActionSource = 'website' | 'app' | 'offline' | 'phone_call' | 'chat' | 'email' | 'in_store' | 'system_generated' | 'other';
|
|
1767
|
+
/**
|
|
1768
|
+
* Lifecycle status of the episode
|
|
1769
|
+
*/
|
|
1770
|
+
export type EpisodeStatus = 'scheduled' | 'tentative' | 'live' | 'postponed' | 'cancelled' | 'aired' | 'published';
|
|
1771
|
+
/**
|
|
1772
|
+
* Rating system used
|
|
1773
|
+
*/
|
|
1774
|
+
export type ContentRatingSystem = 'tv_parental' | 'mpaa' | 'podcast' | 'esrb' | 'bbfc' | 'fsk' | 'acb' | 'custom';
|
|
1775
|
+
/**
|
|
1776
|
+
* Role of this person on the show or episode
|
|
1777
|
+
*/
|
|
1778
|
+
export type TalentRole = 'host' | 'guest' | 'creator' | 'cast' | 'narrator' | 'producer' | 'correspondent';
|
|
1779
|
+
/**
|
|
1780
|
+
* What kind of derivative content this is
|
|
1781
|
+
*/
|
|
1782
|
+
export type DerivativeType = 'clip' | 'highlight' | 'recap' | 'trailer' | 'bonus';
|
|
1736
1783
|
/**
|
|
1737
1784
|
* Represents available advertising inventory
|
|
1738
1785
|
*/
|
|
@@ -1766,6 +1813,7 @@ export interface Product {
|
|
|
1766
1813
|
*/
|
|
1767
1814
|
placements?: Placement[];
|
|
1768
1815
|
delivery_type: DeliveryType;
|
|
1816
|
+
exclusivity?: Exclusivity;
|
|
1769
1817
|
/**
|
|
1770
1818
|
* Available pricing models for this product
|
|
1771
1819
|
*/
|
|
@@ -1773,9 +1821,9 @@ export interface Product {
|
|
|
1773
1821
|
forecast?: DeliveryForecast;
|
|
1774
1822
|
outcome_measurement?: OutcomeMeasurement;
|
|
1775
1823
|
/**
|
|
1776
|
-
* Measurement provider and methodology for delivery metrics. The buyer accepts the declared provider as the source of truth for the buy.
|
|
1824
|
+
* Measurement provider and methodology for delivery metrics. The buyer accepts the declared provider as the source of truth for the buy. When absent, buyers should apply their own measurement defaults.
|
|
1777
1825
|
*/
|
|
1778
|
-
delivery_measurement
|
|
1826
|
+
delivery_measurement?: {
|
|
1779
1827
|
/**
|
|
1780
1828
|
* Measurement provider(s) used for this product (e.g., 'Google Ad Manager with IAS viewability', 'Nielsen DAR', 'Geopath for DOOH impressions')
|
|
1781
1829
|
*/
|
|
@@ -1898,6 +1946,18 @@ export interface Product {
|
|
|
1898
1946
|
*/
|
|
1899
1947
|
manifest: {};
|
|
1900
1948
|
};
|
|
1949
|
+
/**
|
|
1950
|
+
* References to shows in the response's top-level shows array. When present, the product covers inventory associated with these shows. A product can span multiple shows (e.g., a podcast network bundle).
|
|
1951
|
+
*/
|
|
1952
|
+
show_ids?: string[];
|
|
1953
|
+
/**
|
|
1954
|
+
* Specific episodes included in this product. Each episode references its parent show via show_id when the product spans multiple shows. When absent with show_ids present, the product covers the shows broadly (run-of-show).
|
|
1955
|
+
*/
|
|
1956
|
+
episodes?: Episode[];
|
|
1957
|
+
/**
|
|
1958
|
+
* Registry policy IDs the seller enforces for this product. Enforcement level comes from the policy registry. Buyers can filter products by required policies.
|
|
1959
|
+
*/
|
|
1960
|
+
enforced_policies?: string[];
|
|
1901
1961
|
ext?: ExtensionObject;
|
|
1902
1962
|
}
|
|
1903
1963
|
/**
|
|
@@ -2509,6 +2569,118 @@ export interface CreativePolicy {
|
|
|
2509
2569
|
*/
|
|
2510
2570
|
provenance_required?: boolean;
|
|
2511
2571
|
}
|
|
2572
|
+
/**
|
|
2573
|
+
* A specific installment of a show. Episodes inherit show-level fields they don't override: content_rating defaults to the show's baseline, guest_talent is additive to the show's recurring talent, and topics add context beyond the show's genre.
|
|
2574
|
+
*/
|
|
2575
|
+
export interface Episode {
|
|
2576
|
+
/**
|
|
2577
|
+
* Unique identifier for this episode within the show
|
|
2578
|
+
*/
|
|
2579
|
+
episode_id: string;
|
|
2580
|
+
/**
|
|
2581
|
+
* Parent show reference. Required when the product spans multiple shows (has multiple entries in show_ids on the product).
|
|
2582
|
+
*/
|
|
2583
|
+
show_id?: string;
|
|
2584
|
+
/**
|
|
2585
|
+
* Episode title
|
|
2586
|
+
*/
|
|
2587
|
+
name?: string;
|
|
2588
|
+
/**
|
|
2589
|
+
* Season identifier (e.g., '1', '2024', 'spring_2026')
|
|
2590
|
+
*/
|
|
2591
|
+
season?: string;
|
|
2592
|
+
/**
|
|
2593
|
+
* Episode number within the season (e.g., '3', '47')
|
|
2594
|
+
*/
|
|
2595
|
+
episode_number?: string;
|
|
2596
|
+
/**
|
|
2597
|
+
* When the episode airs or publishes (ISO 8601)
|
|
2598
|
+
*/
|
|
2599
|
+
scheduled_at?: string;
|
|
2600
|
+
status?: EpisodeStatus;
|
|
2601
|
+
/**
|
|
2602
|
+
* Expected duration of the episode in seconds
|
|
2603
|
+
*/
|
|
2604
|
+
duration_seconds?: number;
|
|
2605
|
+
/**
|
|
2606
|
+
* Whether the end time is approximate (live events, sports)
|
|
2607
|
+
*/
|
|
2608
|
+
flexible_end?: boolean;
|
|
2609
|
+
/**
|
|
2610
|
+
* When this episode data expires and should be re-queried. Agents should re-query before committing budget to products with tentative episodes.
|
|
2611
|
+
*/
|
|
2612
|
+
valid_until?: string;
|
|
2613
|
+
content_rating?: ContentRating;
|
|
2614
|
+
/**
|
|
2615
|
+
* Content topics for this episode. Uses the same taxonomy as the show's genre_taxonomy when present. Enables episode-level brand safety evaluation beyond content_rating.
|
|
2616
|
+
*/
|
|
2617
|
+
topics?: string[];
|
|
2618
|
+
/**
|
|
2619
|
+
* Episode-specific guests and talent. Additive to the show's recurring talent.
|
|
2620
|
+
*/
|
|
2621
|
+
guest_talent?: Talent[];
|
|
2622
|
+
ad_inventory?: AdInventoryConfiguration;
|
|
2623
|
+
/**
|
|
2624
|
+
* When this episode is a clip, highlight, or recap derived from a full episode. The source episode_id must reference an episode within the same response.
|
|
2625
|
+
*/
|
|
2626
|
+
derivative_of?: {
|
|
2627
|
+
/**
|
|
2628
|
+
* The source episode this content is derived from
|
|
2629
|
+
*/
|
|
2630
|
+
episode_id: string;
|
|
2631
|
+
type: DerivativeType;
|
|
2632
|
+
};
|
|
2633
|
+
ext?: ExtensionObject;
|
|
2634
|
+
}
|
|
2635
|
+
/**
|
|
2636
|
+
* Episode-specific content rating. Overrides the show's baseline content_rating when present.
|
|
2637
|
+
*/
|
|
2638
|
+
export interface ContentRating {
|
|
2639
|
+
system: ContentRatingSystem;
|
|
2640
|
+
/**
|
|
2641
|
+
* Rating value within the system (e.g., 'TV-PG', 'R', 'explicit')
|
|
2642
|
+
*/
|
|
2643
|
+
rating: string;
|
|
2644
|
+
}
|
|
2645
|
+
/**
|
|
2646
|
+
* A person associated with a show or episode, with an optional link to their brand.json identity
|
|
2647
|
+
*/
|
|
2648
|
+
export interface Talent {
|
|
2649
|
+
role: TalentRole;
|
|
2650
|
+
/**
|
|
2651
|
+
* Person's name as credited on the show
|
|
2652
|
+
*/
|
|
2653
|
+
name: string;
|
|
2654
|
+
/**
|
|
2655
|
+
* URL to this person's brand.json entry. Enables buyer agents to evaluate the talent's brand identity and associations.
|
|
2656
|
+
*/
|
|
2657
|
+
brand_url?: string;
|
|
2658
|
+
}
|
|
2659
|
+
/**
|
|
2660
|
+
* Break-based ad inventory for this episode. For non-break formats (host reads, integrations), use product placements.
|
|
2661
|
+
*/
|
|
2662
|
+
export interface AdInventoryConfiguration {
|
|
2663
|
+
/**
|
|
2664
|
+
* Number of planned ad breaks in the episode
|
|
2665
|
+
*/
|
|
2666
|
+
expected_breaks: number;
|
|
2667
|
+
/**
|
|
2668
|
+
* Total seconds of ad time across all breaks
|
|
2669
|
+
*/
|
|
2670
|
+
total_ad_seconds?: number;
|
|
2671
|
+
/**
|
|
2672
|
+
* Maximum duration in seconds for a single ad within a break. Buyers need this to know whether their creative fits.
|
|
2673
|
+
*/
|
|
2674
|
+
max_ad_duration_seconds?: number;
|
|
2675
|
+
/**
|
|
2676
|
+
* Whether ad breaks are dynamic and driven by live conditions (sports timeouts, election coverage). When false, all breaks are pre-defined.
|
|
2677
|
+
*/
|
|
2678
|
+
unplanned_breaks?: boolean;
|
|
2679
|
+
/**
|
|
2680
|
+
* Ad format types supported in breaks (e.g., 'video', 'audio', 'display')
|
|
2681
|
+
*/
|
|
2682
|
+
supported_formats?: string[];
|
|
2683
|
+
}
|
|
2512
2684
|
/**
|
|
2513
2685
|
* Type of advertising property
|
|
2514
2686
|
*/
|
|
@@ -2553,11 +2725,11 @@ export interface Property {
|
|
|
2553
2725
|
/**
|
|
2554
2726
|
* Type of AdCP operation that triggered this webhook. Enables webhook handlers to route to appropriate processing logic.
|
|
2555
2727
|
*/
|
|
2556
|
-
export type TaskType = 'create_media_buy' | 'update_media_buy' | 'sync_creatives' | 'activate_signal' | 'get_signals' | 'create_property_list' | 'update_property_list' | 'get_property_list' | 'list_property_lists' | 'delete_property_list' | 'sync_accounts' | 'get_account_financials' | 'get_creative_delivery' | 'sync_event_sources' | 'sync_audiences' | 'sync_catalogs' | 'log_event';
|
|
2728
|
+
export type TaskType = 'create_media_buy' | 'update_media_buy' | 'sync_creatives' | 'activate_signal' | 'get_signals' | 'create_property_list' | 'update_property_list' | 'get_property_list' | 'list_property_lists' | 'delete_property_list' | 'sync_accounts' | 'get_account_financials' | 'get_creative_delivery' | 'sync_event_sources' | 'sync_audiences' | 'sync_catalogs' | 'log_event' | 'get_brand_identity' | 'get_rights' | 'acquire_rights';
|
|
2557
2729
|
/**
|
|
2558
2730
|
* AdCP domain this task belongs to. Helps classify the operation type at a high level.
|
|
2559
2731
|
*/
|
|
2560
|
-
export type AdCPDomain = 'media-buy' | 'signals' | 'governance' | 'creative';
|
|
2732
|
+
export type AdCPDomain = 'media-buy' | 'signals' | 'governance' | 'creative' | 'brand';
|
|
2561
2733
|
/**
|
|
2562
2734
|
* Current task status. Webhooks are triggered for status changes after initial submission.
|
|
2563
2735
|
*/
|
|
@@ -2565,7 +2737,27 @@ export type TaskStatus = 'submitted' | 'working' | 'input-required' | 'completed
|
|
|
2565
2737
|
/**
|
|
2566
2738
|
* Task-specific payload matching the status. For completed/failed, contains the full task response. For working/input-required/submitted, contains status-specific data. This is the data layer that AdCP specs - same structure used in A2A status.message.parts[].data.
|
|
2567
2739
|
*/
|
|
2568
|
-
export type AdCPAsyncResponseData = GetProductsResponse | GetProductsAsyncWorking | GetProductsAsyncInputRequired | GetProductsAsyncSubmitted | CreateMediaBuyResponse | CreateMediaBuyAsyncWorking | CreateMediaBuyAsyncInputRequired | CreateMediaBuyAsyncSubmitted | UpdateMediaBuyResponse | UpdateMediaBuyAsyncWorking | UpdateMediaBuyAsyncInputRequired | UpdateMediaBuyAsyncSubmitted | SyncCreativesResponse | SyncCreativesAsyncWorking | SyncCreativesAsyncInputRequired | SyncCreativesAsyncSubmitted | SyncCatalogsResponse | SyncCatalogsAsyncWorking | SyncCatalogsAsyncInputRequired | SyncCatalogsAsyncSubmitted;
|
|
2740
|
+
export type AdCPAsyncResponseData = GetProductsResponse | GetProductsAsyncWorking | GetProductsAsyncInputRequired | GetProductsAsyncSubmitted | CreateMediaBuyResponse | CreateMediaBuyAsyncWorking | CreateMediaBuyAsyncInputRequired | CreateMediaBuyAsyncSubmitted | UpdateMediaBuyResponse | UpdateMediaBuyAsyncWorking | UpdateMediaBuyAsyncInputRequired | UpdateMediaBuyAsyncSubmitted | BuildCreativeResponse | BuildCreativeAsyncWorking | BuildCreativeAsyncInputRequired | BuildCreativeAsyncSubmitted | SyncCreativesResponse | SyncCreativesAsyncWorking | SyncCreativesAsyncInputRequired | SyncCreativesAsyncSubmitted | SyncCatalogsResponse | SyncCatalogsAsyncWorking | SyncCatalogsAsyncInputRequired | SyncCatalogsAsyncSubmitted;
|
|
2741
|
+
/**
|
|
2742
|
+
* How frequently the show releases new episodes
|
|
2743
|
+
*/
|
|
2744
|
+
export type ShowCadence = 'daily' | 'weekly' | 'seasonal' | 'event' | 'irregular';
|
|
2745
|
+
/**
|
|
2746
|
+
* Lifecycle status of the show
|
|
2747
|
+
*/
|
|
2748
|
+
export type ShowStatus = 'active' | 'hiatus' | 'ended' | 'upcoming';
|
|
2749
|
+
/**
|
|
2750
|
+
* Production quality tier. Seller-declared. Maps to OpenRTB content.prodq (professional=1, prosumer=2, ugc=3).
|
|
2751
|
+
*/
|
|
2752
|
+
export type ProductionQuality = 'professional' | 'prosumer' | 'ugc';
|
|
2753
|
+
/**
|
|
2754
|
+
* Type of distribution identifier
|
|
2755
|
+
*/
|
|
2756
|
+
export type DistributionIdentifierType = 'apple_podcast_id' | 'spotify_show_id' | 'rss_url' | 'podcast_guid' | 'amazon_music_id' | 'iheart_id' | 'podcast_index_id' | 'youtube_channel_id' | 'youtube_playlist_id' | 'amazon_title_id' | 'roku_channel_id' | 'pluto_channel_id' | 'tubi_id' | 'peacock_id' | 'tiktok_id' | 'twitch_channel' | 'imdb_id' | 'gracenote_id' | 'eidr_id' | 'domain' | 'substack_id';
|
|
2757
|
+
/**
|
|
2758
|
+
* How the shows are related
|
|
2759
|
+
*/
|
|
2760
|
+
export type ShowRelationship = 'spinoff' | 'companion' | 'sequel' | 'prequel' | 'crossover';
|
|
2569
2761
|
/**
|
|
2570
2762
|
* Response for completed or failed create_media_buy
|
|
2571
2763
|
*/
|
|
@@ -2574,6 +2766,161 @@ export type CreateMediaBuyResponse = CreateMediaBuySuccess | CreateMediaBuyError
|
|
|
2574
2766
|
* Response for completed or failed update_media_buy
|
|
2575
2767
|
*/
|
|
2576
2768
|
export type UpdateMediaBuyResponse = UpdateMediaBuySuccess | UpdateMediaBuyError;
|
|
2769
|
+
/**
|
|
2770
|
+
* Response for completed or failed build_creative
|
|
2771
|
+
*/
|
|
2772
|
+
export type BuildCreativeResponse = BuildCreativeSuccess | BuildCreativeMultiSuccess | BuildCreativeError;
|
|
2773
|
+
/**
|
|
2774
|
+
* Types of rights usage that can be licensed through the brand protocol. Aligned with DDEX UseType direction for interoperability with music and media rights systems.
|
|
2775
|
+
*/
|
|
2776
|
+
export type RightUse = 'likeness' | 'voice' | 'name' | 'endorsement' | 'motion_capture' | 'signature' | 'catchphrase' | 'sync' | 'background_music' | 'editorial' | 'commercial';
|
|
2777
|
+
/**
|
|
2778
|
+
* Type of rights (talent, music, etc.). Helps identify constraints when a creative combines multiple rights types.
|
|
2779
|
+
*/
|
|
2780
|
+
export type RightType = 'talent' | 'character' | 'brand_ip' | 'music' | 'stock_media';
|
|
2781
|
+
/**
|
|
2782
|
+
* A single rendered piece of a creative preview with discriminated output format
|
|
2783
|
+
*/
|
|
2784
|
+
export type PreviewRender = {
|
|
2785
|
+
/**
|
|
2786
|
+
* Unique identifier for this rendered piece within the variant
|
|
2787
|
+
*/
|
|
2788
|
+
render_id: string;
|
|
2789
|
+
/**
|
|
2790
|
+
* Discriminator indicating preview_url is provided
|
|
2791
|
+
*/
|
|
2792
|
+
output_format: 'url';
|
|
2793
|
+
/**
|
|
2794
|
+
* URL to an HTML page that renders this piece. Can be embedded in an iframe.
|
|
2795
|
+
*/
|
|
2796
|
+
preview_url: string;
|
|
2797
|
+
/**
|
|
2798
|
+
* Semantic role of this rendered piece. Use 'primary' for main content, 'companion' for associated banners, descriptive strings for device variants or custom roles.
|
|
2799
|
+
*/
|
|
2800
|
+
role: string;
|
|
2801
|
+
/**
|
|
2802
|
+
* Dimensions for this rendered piece
|
|
2803
|
+
*/
|
|
2804
|
+
dimensions?: {
|
|
2805
|
+
width: number;
|
|
2806
|
+
height: number;
|
|
2807
|
+
};
|
|
2808
|
+
/**
|
|
2809
|
+
* Optional security and embedding metadata for safe iframe integration
|
|
2810
|
+
*/
|
|
2811
|
+
embedding?: {
|
|
2812
|
+
/**
|
|
2813
|
+
* Recommended iframe sandbox attribute value (e.g., 'allow-scripts allow-same-origin')
|
|
2814
|
+
*/
|
|
2815
|
+
recommended_sandbox?: string;
|
|
2816
|
+
/**
|
|
2817
|
+
* Whether this output requires HTTPS for secure embedding
|
|
2818
|
+
*/
|
|
2819
|
+
requires_https?: boolean;
|
|
2820
|
+
/**
|
|
2821
|
+
* Whether this output supports fullscreen mode
|
|
2822
|
+
*/
|
|
2823
|
+
supports_fullscreen?: boolean;
|
|
2824
|
+
/**
|
|
2825
|
+
* Content Security Policy requirements for embedding
|
|
2826
|
+
*/
|
|
2827
|
+
csp_policy?: string;
|
|
2828
|
+
};
|
|
2829
|
+
} | {
|
|
2830
|
+
/**
|
|
2831
|
+
* Unique identifier for this rendered piece within the variant
|
|
2832
|
+
*/
|
|
2833
|
+
render_id: string;
|
|
2834
|
+
/**
|
|
2835
|
+
* Discriminator indicating preview_html is provided
|
|
2836
|
+
*/
|
|
2837
|
+
output_format: 'html';
|
|
2838
|
+
/**
|
|
2839
|
+
* 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.
|
|
2840
|
+
*/
|
|
2841
|
+
preview_html: string;
|
|
2842
|
+
/**
|
|
2843
|
+
* Semantic role of this rendered piece. Use 'primary' for main content, 'companion' for associated banners, descriptive strings for device variants or custom roles.
|
|
2844
|
+
*/
|
|
2845
|
+
role: string;
|
|
2846
|
+
/**
|
|
2847
|
+
* Dimensions for this rendered piece
|
|
2848
|
+
*/
|
|
2849
|
+
dimensions?: {
|
|
2850
|
+
width: number;
|
|
2851
|
+
height: number;
|
|
2852
|
+
};
|
|
2853
|
+
/**
|
|
2854
|
+
* Optional security and embedding metadata
|
|
2855
|
+
*/
|
|
2856
|
+
embedding?: {
|
|
2857
|
+
/**
|
|
2858
|
+
* Recommended iframe sandbox attribute value (e.g., 'allow-scripts allow-same-origin')
|
|
2859
|
+
*/
|
|
2860
|
+
recommended_sandbox?: string;
|
|
2861
|
+
/**
|
|
2862
|
+
* Whether this output requires HTTPS for secure embedding
|
|
2863
|
+
*/
|
|
2864
|
+
requires_https?: boolean;
|
|
2865
|
+
/**
|
|
2866
|
+
* Whether this output supports fullscreen mode
|
|
2867
|
+
*/
|
|
2868
|
+
supports_fullscreen?: boolean;
|
|
2869
|
+
/**
|
|
2870
|
+
* Content Security Policy requirements for embedding
|
|
2871
|
+
*/
|
|
2872
|
+
csp_policy?: string;
|
|
2873
|
+
};
|
|
2874
|
+
} | {
|
|
2875
|
+
/**
|
|
2876
|
+
* Unique identifier for this rendered piece within the variant
|
|
2877
|
+
*/
|
|
2878
|
+
render_id: string;
|
|
2879
|
+
/**
|
|
2880
|
+
* Discriminator indicating both preview_url and preview_html are provided
|
|
2881
|
+
*/
|
|
2882
|
+
output_format: 'both';
|
|
2883
|
+
/**
|
|
2884
|
+
* URL to an HTML page that renders this piece. Can be embedded in an iframe.
|
|
2885
|
+
*/
|
|
2886
|
+
preview_url: string;
|
|
2887
|
+
/**
|
|
2888
|
+
* 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.
|
|
2889
|
+
*/
|
|
2890
|
+
preview_html: string;
|
|
2891
|
+
/**
|
|
2892
|
+
* Semantic role of this rendered piece. Use 'primary' for main content, 'companion' for associated banners, descriptive strings for device variants or custom roles.
|
|
2893
|
+
*/
|
|
2894
|
+
role: string;
|
|
2895
|
+
/**
|
|
2896
|
+
* Dimensions for this rendered piece
|
|
2897
|
+
*/
|
|
2898
|
+
dimensions?: {
|
|
2899
|
+
width: number;
|
|
2900
|
+
height: number;
|
|
2901
|
+
};
|
|
2902
|
+
/**
|
|
2903
|
+
* Optional security and embedding metadata for safe iframe integration
|
|
2904
|
+
*/
|
|
2905
|
+
embedding?: {
|
|
2906
|
+
/**
|
|
2907
|
+
* Recommended iframe sandbox attribute value (e.g., 'allow-scripts allow-same-origin')
|
|
2908
|
+
*/
|
|
2909
|
+
recommended_sandbox?: string;
|
|
2910
|
+
/**
|
|
2911
|
+
* Whether this output requires HTTPS for secure embedding
|
|
2912
|
+
*/
|
|
2913
|
+
requires_https?: boolean;
|
|
2914
|
+
/**
|
|
2915
|
+
* Whether this output supports fullscreen mode
|
|
2916
|
+
*/
|
|
2917
|
+
supports_fullscreen?: boolean;
|
|
2918
|
+
/**
|
|
2919
|
+
* Content Security Policy requirements for embedding
|
|
2920
|
+
*/
|
|
2921
|
+
csp_policy?: string;
|
|
2922
|
+
};
|
|
2923
|
+
};
|
|
2577
2924
|
/**
|
|
2578
2925
|
* Response for completed or failed sync_creatives
|
|
2579
2926
|
*/
|
|
@@ -2631,6 +2978,10 @@ export interface GetProductsResponse {
|
|
|
2631
2978
|
* Array of matching products
|
|
2632
2979
|
*/
|
|
2633
2980
|
products: Product[];
|
|
2981
|
+
/**
|
|
2982
|
+
* Shows referenced by products in this response. Only includes shows referenced by the returned products. Under pagination, each page includes all show objects needed for that page's products.
|
|
2983
|
+
*/
|
|
2984
|
+
shows?: Show[];
|
|
2634
2985
|
/**
|
|
2635
2986
|
* Optional array of proposed media plans with budget allocations across products. Publishers include proposals when they can provide strategic guidance based on the brief. Proposals are actionable - buyers can refine them via follow-up get_products calls within the same session, or execute them directly via create_media_buy.
|
|
2636
2987
|
*/
|
|
@@ -2693,6 +3044,81 @@ export interface GetProductsResponse {
|
|
|
2693
3044
|
context?: ContextObject;
|
|
2694
3045
|
ext?: ExtensionObject;
|
|
2695
3046
|
}
|
|
3047
|
+
/**
|
|
3048
|
+
* A persistent content program that produces episodes over time. Shows are reusable objects that products reference by show_id. The show_id is seller-scoped — use distribution identifiers for cross-seller matching.
|
|
3049
|
+
*/
|
|
3050
|
+
export interface Show {
|
|
3051
|
+
/**
|
|
3052
|
+
* Seller-assigned identifier for this show. Unique within a single get_products response but not globally unique across sellers. Use distribution identifiers for cross-seller matching.
|
|
3053
|
+
*/
|
|
3054
|
+
show_id: string;
|
|
3055
|
+
/**
|
|
3056
|
+
* Human-readable show name
|
|
3057
|
+
*/
|
|
3058
|
+
name: string;
|
|
3059
|
+
/**
|
|
3060
|
+
* What the show is about
|
|
3061
|
+
*/
|
|
3062
|
+
description?: string;
|
|
3063
|
+
/**
|
|
3064
|
+
* Genre tags. When genre_taxonomy is present, values are taxonomy IDs (e.g., IAB Content Taxonomy 3.0 codes). Otherwise free-form.
|
|
3065
|
+
*/
|
|
3066
|
+
genre?: string[];
|
|
3067
|
+
/**
|
|
3068
|
+
* Taxonomy system for genre values (e.g., 'iab_content_3.0'). When present, genre values should be valid taxonomy IDs. Recommended for machine-readable brand safety evaluation.
|
|
3069
|
+
*/
|
|
3070
|
+
genre_taxonomy?: string;
|
|
3071
|
+
/**
|
|
3072
|
+
* Primary language (BCP 47 tag, e.g., 'en', 'es-MX')
|
|
3073
|
+
*/
|
|
3074
|
+
language?: string;
|
|
3075
|
+
content_rating?: ContentRating;
|
|
3076
|
+
cadence?: ShowCadence;
|
|
3077
|
+
/**
|
|
3078
|
+
* Current or most recent season identifier (e.g., '3', '2026', 'spring_2026'). A lightweight label — not a full season object.
|
|
3079
|
+
*/
|
|
3080
|
+
season?: string;
|
|
3081
|
+
status?: ShowStatus;
|
|
3082
|
+
production_quality?: ProductionQuality;
|
|
3083
|
+
/**
|
|
3084
|
+
* Hosts, recurring cast, creators associated with the show. Each talent entry may include a brand_url linking to their brand.json identity.
|
|
3085
|
+
*/
|
|
3086
|
+
talent?: Talent[];
|
|
3087
|
+
/**
|
|
3088
|
+
* Where this show is distributed. Each entry maps the show to a publisher platform with platform-specific identifiers. Shows SHOULD include at least one platform-independent identifier (imdb_id, gracenote_id, eidr_id) when available.
|
|
3089
|
+
*/
|
|
3090
|
+
distribution?: ShowDistribution[];
|
|
3091
|
+
/**
|
|
3092
|
+
* Relationships to other shows (spin-offs, companion shows, etc.). Each entry references another show by show_id within the same response.
|
|
3093
|
+
*/
|
|
3094
|
+
related_shows?: {
|
|
3095
|
+
/**
|
|
3096
|
+
* The related show's show_id within this seller's response
|
|
3097
|
+
*/
|
|
3098
|
+
show_id: string;
|
|
3099
|
+
relationship: ShowRelationship;
|
|
3100
|
+
}[];
|
|
3101
|
+
ext?: ExtensionObject;
|
|
3102
|
+
}
|
|
3103
|
+
/**
|
|
3104
|
+
* A show's presence on a specific publisher platform, identified by platform-specific identifiers. Enables cross-seller matching when the same show is sold by different agents.
|
|
3105
|
+
*/
|
|
3106
|
+
export interface ShowDistribution {
|
|
3107
|
+
/**
|
|
3108
|
+
* Domain of the publisher platform where the show is distributed (e.g., 'youtube.com', 'spotify.com')
|
|
3109
|
+
*/
|
|
3110
|
+
publisher_domain: string;
|
|
3111
|
+
/**
|
|
3112
|
+
* Platform-specific identifiers for the show on this publisher
|
|
3113
|
+
*/
|
|
3114
|
+
identifiers: {
|
|
3115
|
+
type: DistributionIdentifierType;
|
|
3116
|
+
/**
|
|
3117
|
+
* The identifier value
|
|
3118
|
+
*/
|
|
3119
|
+
value: string;
|
|
3120
|
+
}[];
|
|
3121
|
+
}
|
|
2696
3122
|
/**
|
|
2697
3123
|
* A proposed media plan with budget allocations across products. Represents the publisher's strategic recommendation for how to structure a campaign based on the brief. Proposals are actionable - buyers can execute them directly via create_media_buy by providing the proposal_id.
|
|
2698
3124
|
*/
|
|
@@ -2921,6 +3347,7 @@ export interface CreateMediaBuySuccess {
|
|
|
2921
3347
|
* Array of created packages with complete state information
|
|
2922
3348
|
*/
|
|
2923
3349
|
packages: Package[];
|
|
3350
|
+
planned_delivery?: PlannedDelivery;
|
|
2924
3351
|
/**
|
|
2925
3352
|
* When true, this response contains simulated data from sandbox mode.
|
|
2926
3353
|
*/
|
|
@@ -2928,6 +3355,54 @@ export interface CreateMediaBuySuccess {
|
|
|
2928
3355
|
context?: ContextObject;
|
|
2929
3356
|
ext?: ExtensionObject;
|
|
2930
3357
|
}
|
|
3358
|
+
/**
|
|
3359
|
+
* The seller's interpreted delivery parameters. Describes what the seller will actually run -- geo, channels, flight dates, frequency caps, and budget. Present when the account has governance_agents or when the seller chooses to provide delivery transparency.
|
|
3360
|
+
*/
|
|
3361
|
+
export interface PlannedDelivery {
|
|
3362
|
+
/**
|
|
3363
|
+
* Geographic targeting the seller will apply.
|
|
3364
|
+
*/
|
|
3365
|
+
geo?: {
|
|
3366
|
+
/**
|
|
3367
|
+
* ISO 3166-1 alpha-2 country codes where ads will deliver.
|
|
3368
|
+
*/
|
|
3369
|
+
countries?: string[];
|
|
3370
|
+
/**
|
|
3371
|
+
* ISO 3166-2 subdivision codes where ads will deliver.
|
|
3372
|
+
*/
|
|
3373
|
+
regions?: string[];
|
|
3374
|
+
};
|
|
3375
|
+
/**
|
|
3376
|
+
* Channels the seller will deliver on.
|
|
3377
|
+
*/
|
|
3378
|
+
channels?: MediaChannel[];
|
|
3379
|
+
/**
|
|
3380
|
+
* Actual flight start the seller will use.
|
|
3381
|
+
*/
|
|
3382
|
+
start_time?: string;
|
|
3383
|
+
/**
|
|
3384
|
+
* Actual flight end the seller will use.
|
|
3385
|
+
*/
|
|
3386
|
+
end_time?: string;
|
|
3387
|
+
frequency_cap?: FrequencyCap;
|
|
3388
|
+
/**
|
|
3389
|
+
* Human-readable summary of the audience the seller will target.
|
|
3390
|
+
*/
|
|
3391
|
+
audience_summary?: string;
|
|
3392
|
+
/**
|
|
3393
|
+
* Total budget the seller will deliver against.
|
|
3394
|
+
*/
|
|
3395
|
+
total_budget?: number;
|
|
3396
|
+
/**
|
|
3397
|
+
* ISO 4217 currency code for the budget.
|
|
3398
|
+
*/
|
|
3399
|
+
currency?: string;
|
|
3400
|
+
/**
|
|
3401
|
+
* Registry policy IDs the seller will enforce for this delivery.
|
|
3402
|
+
*/
|
|
3403
|
+
enforced_policies?: string[];
|
|
3404
|
+
ext?: ExtensionObject;
|
|
3405
|
+
}
|
|
2931
3406
|
/**
|
|
2932
3407
|
* Error response - operation failed, no media buy created
|
|
2933
3408
|
*/
|
|
@@ -3063,6 +3538,270 @@ export interface UpdateMediaBuyAsyncSubmitted {
|
|
|
3063
3538
|
context?: ContextObject;
|
|
3064
3539
|
ext?: ExtensionObject;
|
|
3065
3540
|
}
|
|
3541
|
+
/**
|
|
3542
|
+
* Single-format success response. Returned when the request used target_format_id.
|
|
3543
|
+
*/
|
|
3544
|
+
export interface BuildCreativeSuccess {
|
|
3545
|
+
creative_manifest: CreativeManifest;
|
|
3546
|
+
/**
|
|
3547
|
+
* When true, this response contains simulated data from sandbox mode.
|
|
3548
|
+
*/
|
|
3549
|
+
sandbox?: boolean;
|
|
3550
|
+
/**
|
|
3551
|
+
* ISO 8601 timestamp when generated asset URLs in the manifest expire. Set to the earliest expiration across all generated assets. Re-build the creative after this time to get fresh URLs.
|
|
3552
|
+
*/
|
|
3553
|
+
expires_at?: string;
|
|
3554
|
+
/**
|
|
3555
|
+
* Preview renders included when the request set include_preview to true and the agent supports it. Contains the same content fields as a preview_creative single response (previews, interactive_url, expires_at) minus the response_type discriminator, so clients can reuse the same preview rendering logic.
|
|
3556
|
+
*/
|
|
3557
|
+
preview?: {
|
|
3558
|
+
/**
|
|
3559
|
+
* Array of preview variants. Each preview corresponds to an input set from preview_inputs, or a single default preview if no inputs were provided.
|
|
3560
|
+
*/
|
|
3561
|
+
previews: {
|
|
3562
|
+
/**
|
|
3563
|
+
* Unique identifier for this preview variant
|
|
3564
|
+
*/
|
|
3565
|
+
preview_id: string;
|
|
3566
|
+
/**
|
|
3567
|
+
* Array of rendered pieces for this preview variant. Most formats render as a single piece. Companion ad formats render as multiple pieces.
|
|
3568
|
+
*/
|
|
3569
|
+
renders: PreviewRender[];
|
|
3570
|
+
/**
|
|
3571
|
+
* The input parameters that generated this preview variant. Echoes back the request input or shows defaults used.
|
|
3572
|
+
*/
|
|
3573
|
+
input: {
|
|
3574
|
+
/**
|
|
3575
|
+
* Human-readable name for this variant
|
|
3576
|
+
*/
|
|
3577
|
+
name: string;
|
|
3578
|
+
/**
|
|
3579
|
+
* Macro values applied to this variant
|
|
3580
|
+
*/
|
|
3581
|
+
macros?: {
|
|
3582
|
+
[k: string]: string | undefined;
|
|
3583
|
+
};
|
|
3584
|
+
/**
|
|
3585
|
+
* Context description applied to this variant
|
|
3586
|
+
*/
|
|
3587
|
+
context_description?: string;
|
|
3588
|
+
};
|
|
3589
|
+
}[];
|
|
3590
|
+
/**
|
|
3591
|
+
* Optional URL to an interactive testing page that shows all preview variants with controls to switch between them.
|
|
3592
|
+
*/
|
|
3593
|
+
interactive_url?: string;
|
|
3594
|
+
/**
|
|
3595
|
+
* ISO 8601 timestamp when preview URLs expire. May differ from the manifest's expires_at.
|
|
3596
|
+
*/
|
|
3597
|
+
expires_at: string;
|
|
3598
|
+
};
|
|
3599
|
+
preview_error?: Error;
|
|
3600
|
+
context?: ContextObject;
|
|
3601
|
+
ext?: ExtensionObject;
|
|
3602
|
+
}
|
|
3603
|
+
/**
|
|
3604
|
+
* The generated or transformed creative manifest
|
|
3605
|
+
*/
|
|
3606
|
+
export interface CreativeManifest {
|
|
3607
|
+
format_id: FormatID;
|
|
3608
|
+
/**
|
|
3609
|
+
* Map of asset IDs to actual asset content. Each key MUST match an asset_id from the format's assets 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.
|
|
3610
|
+
*
|
|
3611
|
+
* IMPORTANT: Full validation requires format context. The format defines what type each asset_id should be. Standalone schema validation only checks structural conformance — each asset must match at least one valid asset type schema.
|
|
3612
|
+
*/
|
|
3613
|
+
assets: {
|
|
3614
|
+
/**
|
|
3615
|
+
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
3616
|
+
* via the `patternProperty` "^[a-z0-9_]+$".
|
|
3617
|
+
*/
|
|
3618
|
+
[k: string]: ImageAsset | VideoAsset | AudioAsset | VASTAsset | TextAsset | URLAsset | HTMLAsset | JavaScriptAsset | WebhookAsset | CSSAsset | DAASTAsset | MarkdownAsset | BriefAsset | CatalogAsset;
|
|
3619
|
+
};
|
|
3620
|
+
/**
|
|
3621
|
+
* Rights constraints attached to this creative. Each entry represents constraints from a single rights holder. A creative may combine multiple rights constraints (e.g., talent likeness + music license). For v1, rights constraints are informational metadata — the buyer/orchestrator manages creative lifecycle against these terms.
|
|
3622
|
+
*/
|
|
3623
|
+
rights?: RightsConstraint[];
|
|
3624
|
+
provenance?: Provenance;
|
|
3625
|
+
ext?: ExtensionObject;
|
|
3626
|
+
}
|
|
3627
|
+
/**
|
|
3628
|
+
* Rights metadata attached to a creative manifest. Each entry represents constraints from a single rights holder. A creative may combine multiple rights constraints (e.g., talent likeness + music license). For v1, rights constraints are informational metadata — the buyer/orchestrator manages creative lifecycle against these terms.
|
|
3629
|
+
*/
|
|
3630
|
+
export interface RightsConstraint {
|
|
3631
|
+
/**
|
|
3632
|
+
* Rights grant identifier from the acquire_rights response
|
|
3633
|
+
*/
|
|
3634
|
+
rights_id: string;
|
|
3635
|
+
/**
|
|
3636
|
+
* The agent that granted these rights
|
|
3637
|
+
*/
|
|
3638
|
+
rights_agent: {
|
|
3639
|
+
/**
|
|
3640
|
+
* MCP endpoint URL of the rights agent
|
|
3641
|
+
*/
|
|
3642
|
+
url: string;
|
|
3643
|
+
/**
|
|
3644
|
+
* Agent identifier
|
|
3645
|
+
*/
|
|
3646
|
+
id: string;
|
|
3647
|
+
};
|
|
3648
|
+
/**
|
|
3649
|
+
* Start of the rights validity period
|
|
3650
|
+
*/
|
|
3651
|
+
valid_from?: string;
|
|
3652
|
+
/**
|
|
3653
|
+
* End of the rights validity period. Creative should not be served after this time.
|
|
3654
|
+
*/
|
|
3655
|
+
valid_until?: string;
|
|
3656
|
+
/**
|
|
3657
|
+
* Rights uses covered by this constraint
|
|
3658
|
+
*/
|
|
3659
|
+
uses: RightUse[];
|
|
3660
|
+
/**
|
|
3661
|
+
* Countries where this creative may be served under these rights (ISO 3166-1 alpha-2). If omitted, no country restriction. When both countries and excluded_countries are present, the effective set is countries minus excluded_countries.
|
|
3662
|
+
*/
|
|
3663
|
+
countries?: string[];
|
|
3664
|
+
/**
|
|
3665
|
+
* Countries excluded from rights availability (ISO 3166-1 alpha-2). Use when the grant is worldwide except specific markets.
|
|
3666
|
+
*/
|
|
3667
|
+
excluded_countries?: string[];
|
|
3668
|
+
/**
|
|
3669
|
+
* Maximum total impressions allowed for the full validity period (valid_from to valid_until). This is the absolute cap across all creatives using this rights grant, not a per-creative or per-period limit.
|
|
3670
|
+
*/
|
|
3671
|
+
impression_cap?: number;
|
|
3672
|
+
right_type?: RightType;
|
|
3673
|
+
/**
|
|
3674
|
+
* Approval status from the rights holder at manifest creation time (snapshot, not a live value)
|
|
3675
|
+
*/
|
|
3676
|
+
approval_status?: 'pending' | 'approved' | 'rejected';
|
|
3677
|
+
/**
|
|
3678
|
+
* URL where downstream supply chain participants can verify this rights grant is active. Returns HTTP 200 with the current grant status, or 404 if revoked. Enables SSPs and verification vendors to confirm rights before serving.
|
|
3679
|
+
*/
|
|
3680
|
+
verification_url?: string;
|
|
3681
|
+
ext?: ExtensionObject;
|
|
3682
|
+
}
|
|
3683
|
+
/**
|
|
3684
|
+
* Multi-format success response. Returned when the request used target_format_ids. Contains one manifest per requested format. Multi-format requests are atomic — all formats must succeed or the entire request fails with an error response. Array order corresponds to the target_format_ids request order.
|
|
3685
|
+
*/
|
|
3686
|
+
export interface BuildCreativeMultiSuccess {
|
|
3687
|
+
/**
|
|
3688
|
+
* Array of generated creative manifests, one per requested format. Each manifest contains its own format_id identifying which format it was generated for.
|
|
3689
|
+
*/
|
|
3690
|
+
creative_manifests: CreativeManifest[];
|
|
3691
|
+
/**
|
|
3692
|
+
* When true, this response contains simulated data from sandbox mode.
|
|
3693
|
+
*/
|
|
3694
|
+
sandbox?: boolean;
|
|
3695
|
+
/**
|
|
3696
|
+
* ISO 8601 timestamp when the earliest generated asset URL expires across all manifests. Re-build after this time to get fresh URLs.
|
|
3697
|
+
*/
|
|
3698
|
+
expires_at?: string;
|
|
3699
|
+
/**
|
|
3700
|
+
* Preview renders included when the request set include_preview to true and the agent supports it. Contains one default preview per requested format. preview_inputs is ignored for multi-format requests.
|
|
3701
|
+
*/
|
|
3702
|
+
preview?: {
|
|
3703
|
+
/**
|
|
3704
|
+
* Array of preview entries, one per requested format. Array order matches creative_manifests. Each entry includes a format_id for explicit correlation.
|
|
3705
|
+
*/
|
|
3706
|
+
previews: {
|
|
3707
|
+
/**
|
|
3708
|
+
* Unique identifier for this preview
|
|
3709
|
+
*/
|
|
3710
|
+
preview_id: string;
|
|
3711
|
+
format_id: FormatID;
|
|
3712
|
+
/**
|
|
3713
|
+
* Array of rendered pieces for this format's preview. Most formats render as a single piece. Companion ad formats render as multiple pieces.
|
|
3714
|
+
*/
|
|
3715
|
+
renders: PreviewRender[];
|
|
3716
|
+
/**
|
|
3717
|
+
* The input parameters that generated this preview. For multi-format responses, this is always a default input.
|
|
3718
|
+
*/
|
|
3719
|
+
input: {
|
|
3720
|
+
/**
|
|
3721
|
+
* Human-readable name for this preview
|
|
3722
|
+
*/
|
|
3723
|
+
name: string;
|
|
3724
|
+
/**
|
|
3725
|
+
* Macro values applied to this preview
|
|
3726
|
+
*/
|
|
3727
|
+
macros?: {
|
|
3728
|
+
[k: string]: string | undefined;
|
|
3729
|
+
};
|
|
3730
|
+
/**
|
|
3731
|
+
* Context description applied to this preview
|
|
3732
|
+
*/
|
|
3733
|
+
context_description?: string;
|
|
3734
|
+
};
|
|
3735
|
+
}[];
|
|
3736
|
+
/**
|
|
3737
|
+
* Optional URL to an interactive testing page that shows all format previews with controls to switch between them.
|
|
3738
|
+
*/
|
|
3739
|
+
interactive_url?: string;
|
|
3740
|
+
/**
|
|
3741
|
+
* ISO 8601 timestamp when preview URLs expire. May differ from the manifest's expires_at.
|
|
3742
|
+
*/
|
|
3743
|
+
expires_at: string;
|
|
3744
|
+
};
|
|
3745
|
+
preview_error?: Error;
|
|
3746
|
+
context?: ContextObject;
|
|
3747
|
+
ext?: ExtensionObject;
|
|
3748
|
+
}
|
|
3749
|
+
/**
|
|
3750
|
+
* Error response - creative generation failed
|
|
3751
|
+
*/
|
|
3752
|
+
export interface BuildCreativeError {
|
|
3753
|
+
/**
|
|
3754
|
+
* Array of errors explaining why creative generation failed
|
|
3755
|
+
*/
|
|
3756
|
+
errors: Error[];
|
|
3757
|
+
context?: ContextObject;
|
|
3758
|
+
ext?: ExtensionObject;
|
|
3759
|
+
}
|
|
3760
|
+
/**
|
|
3761
|
+
* Progress data for working build_creative
|
|
3762
|
+
*/
|
|
3763
|
+
export interface BuildCreativeAsyncWorking {
|
|
3764
|
+
/**
|
|
3765
|
+
* Completion percentage (0-100)
|
|
3766
|
+
*/
|
|
3767
|
+
percentage?: number;
|
|
3768
|
+
/**
|
|
3769
|
+
* Current step or phase of the operation (e.g., 'generating_assets', 'resolving_macros', 'rendering_preview')
|
|
3770
|
+
*/
|
|
3771
|
+
current_step?: string;
|
|
3772
|
+
/**
|
|
3773
|
+
* Total number of steps in the operation
|
|
3774
|
+
*/
|
|
3775
|
+
total_steps?: number;
|
|
3776
|
+
/**
|
|
3777
|
+
* Current step number
|
|
3778
|
+
*/
|
|
3779
|
+
step_number?: number;
|
|
3780
|
+
context?: ContextObject;
|
|
3781
|
+
ext?: ExtensionObject;
|
|
3782
|
+
}
|
|
3783
|
+
/**
|
|
3784
|
+
* Input requirements for build_creative needing user input
|
|
3785
|
+
*/
|
|
3786
|
+
export interface BuildCreativeAsyncInputRequired {
|
|
3787
|
+
/**
|
|
3788
|
+
* Reason code indicating why input is needed
|
|
3789
|
+
*/
|
|
3790
|
+
reason?: 'APPROVAL_REQUIRED' | 'CREATIVE_DIRECTION_NEEDED' | 'ASSET_SELECTION_NEEDED';
|
|
3791
|
+
/**
|
|
3792
|
+
* Optional validation errors or warnings explaining why input is required.
|
|
3793
|
+
*/
|
|
3794
|
+
errors?: Error[];
|
|
3795
|
+
context?: ContextObject;
|
|
3796
|
+
ext?: ExtensionObject;
|
|
3797
|
+
}
|
|
3798
|
+
/**
|
|
3799
|
+
* Acknowledgment for submitted build_creative
|
|
3800
|
+
*/
|
|
3801
|
+
export interface BuildCreativeAsyncSubmitted {
|
|
3802
|
+
context?: ContextObject;
|
|
3803
|
+
ext?: ExtensionObject;
|
|
3804
|
+
}
|
|
3066
3805
|
/**
|
|
3067
3806
|
* Success response - sync operation processed creatives (may include per-item failures)
|
|
3068
3807
|
*/
|