From ec89ae92631ea8a3acaebd396f61d26eee5f7663 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 30 Nov 2025 02:37:46 +0000 Subject: [PATCH 1/2] chore: update types from OpenAPI spec --- partner-api.yaml | 15873 ++++++++++++++++++++++++++++++++---- platform-api.yaml | 11073 +++++++++++++++++++++++-- src/types/partner-api.ts | 4946 ++++++++++- src/types/platform-api.ts | 3862 ++++++++- 4 files changed, 32978 insertions(+), 2776 deletions(-) diff --git a/partner-api.yaml b/partner-api.yaml index f74929f..f505a4a 100644 --- a/partner-api.yaml +++ b/partner-api.yaml @@ -375,7 +375,7 @@ paths: example: tool: creative_sync_sales_agents arguments: - creativeId: example_id_123 + creative_id: example_id_123 schema: type: object properties: @@ -401,7 +401,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/CreativeSyncSalesAgents' + $ref: '#/components/schemas/SyncSalesAgentsOutput' required: - content - structuredContent @@ -451,8 +451,11 @@ paths: example: tool: media_buy_create arguments: - tacticId: 100 - agentId: example_id_123 + brand_manifest: null + start_time: null + end_time: string + tactic_id: 100 + agent_id: example_id_123 name: Example Name products: [] schema: @@ -463,7 +466,7 @@ paths: enum: - media_buy_create arguments: - $ref: '#/components/schemas/CreateMediaBuyInput' + $ref: '#/components/schemas/MediaBuyCreateInput' required: - tool - arguments @@ -530,7 +533,7 @@ paths: example: tool: media_buy_update arguments: - mediaBuyId: example_id_123 + media_buy_id: example_id_123 schema: type: object properties: @@ -606,7 +609,7 @@ paths: example: tool: media_buy_delete arguments: - mediaBuyId: example_id_123 + media_buy_id: example_id_123 confirm: true schema: type: object @@ -633,7 +636,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/MediaBuyDelete' + $ref: '#/components/schemas/DeleteMediaBuyOutput' required: - content - structuredContent @@ -683,7 +686,7 @@ paths: example: tool: media_buy_execute arguments: - mediaBuyId: example_id_123 + media_buy_id: example_id_123 schema: type: object properties: @@ -709,7 +712,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/MediaBuyExecute' + $ref: '#/components/schemas/ExecuteMediaBuyOutput' required: - content - structuredContent @@ -759,7 +762,7 @@ paths: example: tool: media_buy_get arguments: - mediaBuyId: example_id_123 + media_buy_id: example_id_123 schema: type: object properties: @@ -860,7 +863,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/MediaBuyList' + $ref: '#/components/schemas/ListMediaBuysOutput' required: - content - structuredContent @@ -910,8 +913,8 @@ paths: example: tool: media_buy_validate_budget arguments: - tacticId: 100 - newBudgetAmount: 100 + tactic_id: 100 + new_budget_amount: 100 schema: type: object properties: @@ -937,7 +940,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/MediaBuyValidateBudget' + $ref: '#/components/schemas/ValidateMediaBuyBudgetOutput' required: - content - structuredContent @@ -1366,14 +1369,15 @@ paths: example: tool: media_product_save arguments: - productId: example_id_123 + product_id: example_id_123 name: Example Name description: string - publisherId: example_id_123 - publisherName: Example Name - deliveryType: guaranteed - inventoryType: premium - pricingModel: auction + publisher_properties: null + format_ids: [] + delivery_type: null + pricing_options: null + delivery_measurement: + provider: example_id_123 schema: type: object properties: @@ -1382,7 +1386,7 @@ paths: enum: - media_product_save arguments: - $ref: '#/components/schemas/SaveProductInput' + $ref: '#/components/schemas/MediaProductSaveInput' required: - tool - arguments @@ -1399,7 +1403,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/MediaProductSave' + $ref: '#/components/schemas/MediaProductSaveOutput' required: - content - structuredContent @@ -3285,57 +3289,501 @@ components: SyncSalesAgentsInput: type: object properties: - creativeId: + creative_id: type: string example: example_id_123 required: - - creativeId + - creative_id ListCountriesInput: type: object properties: {} ListLanguagesInput: type: object properties: {} - CreateMediaBuyInput: + MediaBuyCreateInput: type: object properties: - tacticId: - type: number + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + po_number: + nullable: true + type: string + example: string + start_time: + anyOf: + - type: string + enum: + - asap + - type: string + end_time: + type: string + example: string + reporting_webhook: + nullable: true + allOf: + - type: object + properties: + url: + type: string + token: + nullable: true + type: string + authentication: + type: object + properties: + schemes: + type: array + items: + anyOf: + - anyOf: + - type: string + enum: + - Bearer + - type: string + enum: + - HMAC-SHA256 + minItems: 1 + maxItems: 1 + credentials: + type: string + required: + - schemes + - credentials + required: + - url + - authentication + - type: object + properties: + reporting_frequency: + anyOf: + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - monthly + requested_metrics: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - impressions + - type: string + enum: + - spend + - type: string + enum: + - clicks + - type: string + enum: + - ctr + - type: string + enum: + - video_completions + - type: string + enum: + - completion_rate + - type: string + enum: + - conversions + - type: string + enum: + - viewability + - type: string + enum: + - engagement_rate + required: + - reporting_frequency + context: + nullable: true + type: object + additionalProperties: {} + ext: + nullable: true + type: object + additionalProperties: {} + tactic_id: + description: Internal tactic ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 example: 100 - agentId: + agent_id: + description: Agent creating this media buy type: string example: example_id_123 name: + description: Media buy name type: string minLength: 1 example: Example Name description: + description: Media buy description type: string example: string products: + description: Products to include (converted to packages on execution) type: array items: type: object properties: - mediaProductId: + product_id: type: string - budgetAmount: + format_ids: + nullable: true + type: array + items: + anyOf: + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + minItems: 2 + budget: type: number - minimum: 0 - exclusiveMinimum: true - budgetCurrency: + pacing: + nullable: true + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + pricing_option_id: type: string - pricingCpm: - type: number - minimum: 0 - exclusiveMinimum: true - pricingSignalCost: + bid_price: + nullable: true type: number - displayOrder: - type: integer - minimum: -9007199254740991 - maximum: 9007199254740991 + targeting_overlay: + nullable: true + type: object + properties: + geo_country_any_of: + nullable: true + type: array + items: + type: string + geo_region_any_of: + nullable: true + type: array + items: + type: string + geo_metro_any_of: + nullable: true + type: array + items: + type: string + geo_postal_code_any_of: + nullable: true + type: array + items: + type: string + axe_include_segment: + nullable: true + type: string + axe_exclude_segment: + nullable: true + type: string + frequency_cap: + nullable: true + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + creative_ids: + nullable: true + type: array + items: + type: string creatives: + nullable: true type: array items: type: object @@ -3345,41 +3793,861 @@ components: name: type: string format_id: - anyOf: - - type: string - - type: object - properties: - agent_url: - type: string - id: - type: string - required: - - agent_url - - id + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id assets: type: object additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + inputs: + nullable: true + type: array + items: type: object properties: - url: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true type: string - width: - type: number - height: - type: number required: - - url - click_url: - type: string + - name + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 required: - creative_id - name - format_id + - assets + ext: + nullable: true + type: object + additionalProperties: {} + display_order: + description: Display order in UI (internal only) + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 required: - - mediaProductId - - budgetAmount + - product_id + - budget + - pricing_option_id example: [] creatives: + description: Optional inline creatives type: array items: type: object @@ -3389,57 +4657,869 @@ components: name: type: string format_id: - anyOf: - - type: string - - type: object - properties: - agent_url: - type: string - id: - type: string - required: - - agent_url - - id + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id assets: type: object additionalProperties: - type: object - properties: - url: - type: string - width: - type: number - height: - type: number - required: - - url - click_url: - type: string - required: - - creative_id - - name - - format_id - example: [] - required: - - tacticId - - agentId - - name - - products - UpdateMediaBuyInput: - type: object - properties: - mediaBuyId: - type: string - example: example_id_123 - name: - type: string - example: Example Name - description: - type: string - example: string - status: - type: string - enum: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - creative_id + - name + - format_id + - assets + example: [] + required: + - brand_manifest + - start_time + - end_time + - tactic_id + - agent_id + - name + - products + UpdateMediaBuyInput: + type: object + properties: + media_buy_id: + type: string + example: example_id_123 + name: + type: string + example: Example Name + description: + type: string + example: string + status: + type: string + enum: - DRAFT - PENDING_APPROVAL - ACTIVE @@ -3448,60 +5528,105 @@ components: - FAILED - REJECTED example: DRAFT - creativeIds: + creative_ids: type: array items: type: string example: [] + products: + type: array + items: + type: object + properties: + product_id: + type: string + budget: + type: number + pacing: + nullable: true + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + bid_price: + nullable: true + type: number + required: + - product_id + - budget + example: [] packages: type: array items: type: object properties: - packageId: + package_id: type: string - creativeIds: + budget: + nullable: true + type: number + pacing: + nullable: true + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + bid_price: + nullable: true + type: number + creative_ids: type: array items: type: string required: - - packageId - - creativeIds + - package_id example: [] required: - - mediaBuyId + - media_buy_id DeleteMediaBuyInput: type: object properties: - mediaBuyId: + media_buy_id: type: string example: example_id_123 confirm: type: boolean example: true required: - - mediaBuyId + - media_buy_id - confirm ExecuteMediaBuyInput: type: object properties: - mediaBuyId: + media_buy_id: type: string example: example_id_123 required: - - mediaBuyId + - media_buy_id GetMediaBuyInput: type: object properties: - mediaBuyId: + media_buy_id: type: string example: example_id_123 required: - - mediaBuyId + - media_buy_id ListMediaBuysInput: type: object properties: - tacticId: + tactic_id: type: number example: 100 status: @@ -3528,17 +5653,17 @@ components: ValidateMediaBuyBudgetInput: type: object properties: - tacticId: + tactic_id: type: number example: 100 - newBudgetAmount: + new_budget_amount: type: number minimum: 0 exclusiveMinimum: true example: 100 required: - - tacticId - - newBudgetAmount + - tactic_id + - new_budget_amount ListNotificationsInput: type: object properties: @@ -3623,6 +5748,28 @@ components: - video - display - audio + formatIds: + description: Filter by specific structured format IDs (e.g., display_300x250_image). More precise than formatTypes. + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id standardFormatsOnly: description: Only return products accepting IAB standard formats type: boolean @@ -3642,10 +5789,10 @@ components: required: - brief - brandManifestUrl - SaveProductInput: + MediaProductSaveInput: type: object properties: - productId: + product_id: type: string example: example_id_123 name: @@ -3654,670 +5801,1112 @@ components: description: type: string example: string - publisherId: - type: string - example: example_id_123 - publisherName: - type: string - example: Example Name - deliveryType: - type: string - enum: - - guaranteed - - non_guaranteed - example: guaranteed - inventoryType: - type: string - enum: - - premium - - run_of_site - - targeted_package - example: premium - creativeFormats: - anyOf: - - type: array - items: - type: string - - type: array - items: - type: object - properties: - agent_url: - type: string - id: - type: string - required: - - agent_url - - id - pricingModel: - type: string - enum: - - auction - - fixed_cpm - example: auction - fixedCpm: - type: number - minimum: 0 - exclusiveMinimum: true - example: 100 - floorCpm: - type: number - minimum: 0 - exclusiveMinimum: true - example: 100 - targetCpm: - type: number - minimum: 0 - exclusiveMinimum: true - example: 100 - pricingOptions: + publisher_properties: type: array items: - type: object - additionalProperties: {} + anyOf: + - anyOf: + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - all + required: + - publisher_domain + - selection_type + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - by_id + property_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + - selection_type + - property_ids + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - by_tag + property_tags: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + - selection_type + - property_tags + - anyOf: + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - all + required: + - publisher_domain + - selection_type + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - by_id + property_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + - selection_type + - property_ids + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - by_tag + property_tags: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + - selection_type + - property_tags + minItems: 2 example: [] - supportedTargeting: + format_ids: type: array items: - type: string + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id example: [] - adcpAgentId: - type: string - example: example_id_123 - required: - - productId - - name - - description - - publisherId - - publisherName - - deliveryType - - inventoryType - - pricingModel - ListProductsInput: - type: object - properties: - take: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - skip: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - SyncProductsInput: - type: object - properties: - sourceId: - type: string - example: example_id_123 - required: - - sourceId - GetAgentInput: - type: object - properties: - agentId: - description: The agent ID to retrieve - type: string - example: example_id_123 - required: - - agentId - ListAgentsInput: - type: object - properties: - type: - description: Filter by agent type (SALES or OUTCOME) - type: string - enum: - - SALES - - OUTCOME - example: SALES - status: - description: Filter by status (PENDING, ACTIVE, DISABLED) - type: string - enum: - - PENDING - - ACTIVE - - DISABLED - example: PENDING - organizationId: - description: Filter by organization ID - type: string - example: example_id_123 - relationship: - description: >- - Filter by relationship (SELF = owned by you, SCOPE3 = Scope3-provided, MARKETPLACE = third-party marketplace - agents) - type: string - enum: - - SELF - - SCOPE3 - - MARKETPLACE - example: SELF - name: - description: Filter by agent name (partial match) - type: string - example: Example Name - RegisterAgentInput: - type: object - properties: - type: - description: The type of agent to register - type: string - enum: - - SALES - - OUTCOME - example: SALES - name: - description: Agent name - type: string - minLength: 1 - example: Example Name - description: - description: Agent description - type: string - example: string - endpointUrl: - description: Agent endpoint URL - type: string - format: uri - example: https://example.com - protocol: - description: Protocol used by the agent (MCP or A2A) - type: string - enum: - - MCP - - A2A - example: MCP - authenticationType: - description: Authentication type - type: string - enum: - - API_KEY - - OAUTH - - NO_AUTH - - JWT - example: API_KEY - organizationId: - description: Organization ID - type: string - example: example_id_123 - auth: - description: Authentication configuration object + placements: + nullable: true + type: array + items: + anyOf: + - type: object + properties: + placement_id: + type: string + name: + type: string + description: + nullable: true + type: string + format_ids: + nullable: true + type: array + items: + anyOf: + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + minItems: 2 + required: + - placement_id + - name + - type: object + properties: + placement_id: + type: string + name: + type: string + description: + nullable: true + type: string + format_ids: + nullable: true + type: array + items: + anyOf: + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + minItems: 2 + required: + - placement_id + - name + minItems: 2 + example: [] + delivery_type: anyOf: - - type: object - properties: - type: - type: string - enum: - - jwt - privateKey: - type: string - minLength: 1 - issuer: - type: string - minLength: 1 - subject: - type: string - minLength: 1 - keyId: - type: string - minLength: 1 - scope: - type: string - minLength: 1 - tokenEndpointUrl: - type: string - format: uri - audienceUrl: - type: string - format: uri - algorithm: - type: string - enum: - - ES256 - - RS256 - environment: - type: string - required: - - type - - privateKey - - issuer - - subject - - keyId - - scope - - tokenEndpointUrl - - audienceUrl - - type: object - properties: - type: - type: string - enum: - - bearer - - apikey - - api_key - token: - type: string - minLength: 1 - required: - - type - - token - - type: object - properties: - type: - type: string - enum: - - oauth - - oauth2 - token: - type: string - minLength: 1 - required: - - type - - token - - type: object - properties: {} - required: - - type - - name - - endpointUrl - - protocol - UnregisterAgentInput: - type: object - properties: - agentId: - description: The agent ID to unregister - type: string - example: example_id_123 - required: - - agentId - UpdateAgentInput: - type: object - properties: - agentId: - description: The agent ID to update - type: string - example: example_id_123 - name: - description: New agent name - type: string - example: Example Name - description: - description: New agent description - type: string - example: string - endpointUrl: - description: New endpoint URL - type: string - format: uri - example: https://example.com - protocol: - description: New protocol - type: string - enum: - - MCP - - A2A - example: MCP - authenticationType: - description: New authentication type - type: string - enum: - - API_KEY - - OAUTH - - NO_AUTH - - JWT - example: API_KEY - auth: - description: New authentication configuration - anyOf: - - type: object - properties: - type: - type: string - enum: - - jwt - privateKey: - type: string - minLength: 1 - issuer: - type: string - minLength: 1 - subject: - type: string - minLength: 1 - keyId: - type: string - minLength: 1 - scope: - type: string - minLength: 1 - tokenEndpointUrl: - type: string - format: uri - audienceUrl: - type: string - format: uri - algorithm: - type: string - enum: - - ES256 - - RS256 - environment: - type: string - required: - - type - - privateKey - - issuer - - subject - - keyId - - scope - - tokenEndpointUrl - - audienceUrl - - type: object - properties: - type: - type: string - enum: - - bearer - - apikey - - api_key - token: - type: string - minLength: 1 - required: - - type - - token - - type: object - properties: - type: - type: string - enum: - - oauth - - oauth2 - token: - type: string - minLength: 1 - required: - - type - - token - - type: object - properties: {} - required: - - agentId - CreateTacticInput: - type: object - properties: - campaignId: - type: string - example: example_id_123 - name: - type: string - minLength: 1 - example: Example Name - prompt: - type: string - example: string - channelCodes: - type: array - items: - type: string - enum: - - ctv - - video - - display - - app - - social - example: [] - countryCodes: - type: array - items: - type: string - example: [] - languages: - description: Language codes - type: array - items: - type: string - example: [] - availableBrandStandards: - type: array - items: - type: object - properties: - id: - type: number - name: - type: string - required: - - id - - name - example: [] - availableBrandStory: - type: array - items: - type: object - properties: - id: - type: number - name: - type: string - required: - - id - - name - example: [] - required: - - campaignId - - name - UpdateTacticInput: - type: object - properties: - tacticId: - type: number - example: 100 - name: - type: string - example: Example Name - prompt: - type: string - example: string - channelCodes: - type: array - items: - type: string - enum: - - ctv - - video - - display - - app - - social - example: [] - countryCodes: - type: array - items: - type: string - example: [] - availableBrandStandards: - type: array - items: - type: object - properties: - id: - type: number - name: - type: string - required: - - id - - name - example: [] - availableBrandStory: + - type: string + enum: + - guaranteed + - type: string + enum: + - non_guaranteed + pricing_options: type: array items: - type: object - properties: - id: - type: number - name: - type: string - required: - - id - - name - example: [] - required: - - tacticId - DeleteTacticInput: - type: object - properties: - tacticId: - type: number - example: 100 - confirm: - type: boolean - example: true - required: - - tacticId - - confirm - GetTacticInput: - type: object - properties: - tacticId: - type: number - example: 100 - required: - - tacticId - ListTacticsInput: - type: object - properties: - campaignId: - type: string - example: example_id_123 - take: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - skip: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - LinkCampaignToTacticInput: - type: object - properties: - tacticId: - type: number - example: 100 - campaignId: - type: string - example: example_id_123 - required: - - tacticId - - campaignId - UnlinkCampaignFromTacticInput: - type: object - properties: - tacticId: + anyOf: + - anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + required: + - view_threshold + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + required: + - view_threshold + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + minItems: 2 + example: [] + estimated_exposures: + nullable: true type: number example: 100 - campaignId: - type: string - example: example_id_123 - required: - - tacticId - - campaignId - RegisterWebhookInput: - type: object - properties: - brandAgentId: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - endpoint: + measurement: + nullable: true type: object properties: - url: + type: type: string - format: uri - method: + attribution: + type: string + window: + nullable: true + type: string + reporting: type: string - enum: - - POST - - PUT - headers: - type: object - additionalProperties: - type: string - authentication: - type: object - properties: - type: - type: string - enum: - - bearer - - basic - - hmac - credentials: - type: string - required: - - type - - credentials required: - - url - - method - eventTypes: - type: array - items: - type: string - example: [] - filters: + - type + - attribution + - reporting + delivery_measurement: type: object properties: - campaigns: - type: array - items: - type: string - tactics: - type: array - items: - type: string - creatives: - type: array - items: - type: string - mediaBuys: + provider: + type: string + notes: + nullable: true + type: string + required: + - provider + reporting_capabilities: + nullable: true + type: object + properties: + available_reporting_frequencies: type: array items: - type: string - metrics: + anyOf: + - anyOf: + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - monthly + - anyOf: + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - monthly + minItems: 2 + expected_delay_minutes: + type: number + timezone: + type: string + supports_webhooks: + type: boolean + available_metrics: type: array items: - type: string - minSeverity: - type: string - enum: - - info - - warning - - critical - retryPolicy: + anyOf: + - type: string + enum: + - impressions + - type: string + enum: + - spend + - type: string + enum: + - clicks + - type: string + enum: + - ctr + - type: string + enum: + - video_completions + - type: string + enum: + - completion_rate + - type: string + enum: + - conversions + - type: string + enum: + - viewability + - type: string + enum: + - engagement_rate + required: + - available_reporting_frequencies + - expected_delay_minutes + - timezone + - supports_webhooks + - available_metrics + creative_policy: + nullable: true type: object properties: - maxRetries: - type: integer - minimum: 0 - maximum: 9007199254740991 - backoffMultiplier: - type: number - minimum: 0 - exclusiveMinimum: true - maxBackoffSeconds: - type: number - minimum: 0 - exclusiveMinimum: true + co_branding: + anyOf: + - type: string + enum: + - required + - type: string + enum: + - optional + - type: string + enum: + - none + landing_page: + anyOf: + - type: string + enum: + - any + - type: string + enum: + - retailer_site_only + - type: string + enum: + - must_include_retailer + templates_available: + type: boolean + required: + - co_branding + - landing_page + - templates_available + is_custom: + nullable: true + type: boolean + example: true + brief_relevance: + nullable: true + type: string + example: string + expires_at: + nullable: true + type: string + example: string + product_card: + nullable: true + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + product_card_detailed: + nullable: true + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + ext: + nullable: true + type: object + additionalProperties: {} + customerId: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + adcpAgentId: + type: string + example: example_id_123 required: - - endpoint - - eventTypes - ListWebhooksInput: + - product_id + - name + - description + - publisher_properties + - format_ids + - delivery_type + - pricing_options + - delivery_measurement + ListProductsInput: type: object properties: take: @@ -4330,339 +6919,3874 @@ components: minimum: 0 maximum: 9007199254740991 example: 100 - DeleteWebhookInput: + SyncProductsInput: type: object properties: - webhookId: + sourceId: type: string example: example_id_123 required: - - webhookId - CreateServiceTokenInput: + - sourceId + GetAgentInput: type: object properties: - name: - description: Human-readable name for the service token + agentId: + description: The agent ID to retrieve type: string - minLength: 1 - example: Example Name - description: - description: Optional description of the token purpose and usage + example: example_id_123 + required: + - agentId + ListAgentsInput: + type: object + properties: + type: + description: Filter by agent type (SALES, OUTCOME, or SIGNAL) type: string - example: string - expiresInDays: - description: Number of days until token expiration (max 365). If not provided, token does not expire - type: integer - exclusiveMinimum: true - maximum: 365 - example: 100 - scope: - description: 'Token scope: CUSTOMER (full customer access) or SEAT (scoped to specific seat)' - default: CUSTOMER + enum: + - SALES + - OUTCOME + - SIGNAL + example: SALES + status: + description: Filter by status (PENDING, ACTIVE, DISABLED) type: string enum: - - CUSTOMER - - SEAT - seatName: - description: Seat name (required when scope is SEAT). The seat will be looked up for the customer. + - PENDING + - ACTIVE + - DISABLED + example: PENDING + organizationId: + description: Filter by organization ID + type: string + example: example_id_123 + relationship: + description: >- + Filter by relationship (SELF = owned by you, SCOPE3 = Scope3-provided, MARKETPLACE = third-party marketplace + agents) + type: string + enum: + - SELF + - SCOPE3 + - MARKETPLACE + example: SELF + name: + description: Filter by agent name (partial match) type: string - minLength: 1 example: Example Name - required: - - name - UpdateServiceTokenInput: + RegisterAgentInput: type: object properties: - id: - description: The unique identifier of the service token to update - type: integer - format: int64 - example: 100 + type: + description: The type of agent to register + type: string + enum: + - SALES + - OUTCOME + - SIGNAL + example: SALES name: - description: Updated human-readable name for the service token + description: Agent name type: string minLength: 1 example: Example Name description: - description: Updated description of the token purpose and usage + description: Agent description type: string example: string - expiresInDays: - description: Number of days to extend expiration from now (max 365). Updates the expiresAt timestamp - type: integer - exclusiveMinimum: true - maximum: 365 - example: 100 - required: - - id - ArchiveServiceTokenInput: - type: object - properties: - id: - description: The unique identifier of the service token to archive - type: integer - format: int64 - example: 100 - required: - - id - GetServiceTokenInput: - type: object - properties: - id: - description: The unique identifier of the service token to retrieve - type: integer - format: int64 - example: 100 - includeSecret: - description: Whether to fetch the access_client_secret from Google Secret Manager. Defaults to false for security - default: false - type: boolean - required: - - id - ListServiceTokensInput: - type: object - properties: - includeArchived: - description: Whether to include archived tokens in the response - default: false - type: boolean - seatId: - description: Filter tokens by seat ID - type: integer - format: int64 - example: 100 - userId: - description: Filter tokens by user ID - type: integer - format: int64 - example: 100 - MediaBuyGet: + endpointUrl: + description: Agent endpoint URL + type: string + format: uri + example: https://example.com + protocol: + description: Protocol used by the agent (MCP or A2A) + type: string + enum: + - MCP + - A2A + example: MCP + authenticationType: + description: Authentication type + type: string + enum: + - API_KEY + - OAUTH + - NO_AUTH + - JWT + example: API_KEY + organizationId: + description: Organization ID + type: string + example: example_id_123 + auth: + description: Authentication configuration object + anyOf: + - type: object + properties: + type: + type: string + enum: + - jwt + privateKey: + type: string + minLength: 1 + issuer: + type: string + minLength: 1 + subject: + type: string + minLength: 1 + keyId: + type: string + minLength: 1 + scope: + type: string + minLength: 1 + tokenEndpointUrl: + type: string + format: uri + audienceUrl: + type: string + format: uri + algorithm: + type: string + enum: + - ES256 + - RS256 + environment: + type: string + required: + - type + - privateKey + - issuer + - subject + - keyId + - scope + - tokenEndpointUrl + - audienceUrl + - type: object + properties: + type: + type: string + enum: + - bearer + - apikey + - api_key + token: + type: string + minLength: 1 + required: + - type + - token + - type: object + properties: + type: + type: string + enum: + - oauth + - oauth2 + token: + type: string + minLength: 1 + required: + - type + - token + - type: object + properties: {} + required: + - type + - name + - endpointUrl + - protocol + UnregisterAgentInput: type: object properties: - id: + agentId: + description: The agent ID to unregister type: string example: example_id_123 - tacticId: - type: number - example: 100 - customerId: + required: + - agentId + UpdateAgentInput: + type: object + properties: + agentId: + description: The agent ID to update + type: string + example: example_id_123 + name: + description: New agent name + type: string + example: Example Name + description: + description: New agent description + type: string + example: string + endpointUrl: + description: New endpoint URL + type: string + format: uri + example: https://example.com + protocol: + description: New protocol + type: string + enum: + - MCP + - A2A + example: MCP + authenticationType: + description: New authentication type + type: string + enum: + - API_KEY + - OAUTH + - NO_AUTH + - JWT + example: API_KEY + auth: + description: New authentication configuration + anyOf: + - type: object + properties: + type: + type: string + enum: + - jwt + privateKey: + type: string + minLength: 1 + issuer: + type: string + minLength: 1 + subject: + type: string + minLength: 1 + keyId: + type: string + minLength: 1 + scope: + type: string + minLength: 1 + tokenEndpointUrl: + type: string + format: uri + audienceUrl: + type: string + format: uri + algorithm: + type: string + enum: + - ES256 + - RS256 + environment: + type: string + required: + - type + - privateKey + - issuer + - subject + - keyId + - scope + - tokenEndpointUrl + - audienceUrl + - type: object + properties: + type: + type: string + enum: + - bearer + - apikey + - api_key + token: + type: string + minLength: 1 + required: + - type + - token + - type: object + properties: + type: + type: string + enum: + - oauth + - oauth2 + token: + type: string + minLength: 1 + required: + - type + - token + - type: object + properties: {} + required: + - agentId + CreateTacticInput: + type: object + properties: + campaignId: + type: string + example: example_id_123 + name: + type: string + minLength: 1 + example: Example Name + prompt: + type: string + example: string + channelCodes: + type: array + items: + type: string + enum: + - ctv + - video + - display + - app + - social + example: [] + countryCodes: + type: array + items: + type: string + example: [] + languages: + description: Language codes + type: array + items: + type: string + example: [] + availableBrandStandards: + type: array + items: + type: object + properties: + id: + type: number + name: + type: string + required: + - id + - name + example: [] + availableBrandStory: + type: array + items: + type: object + properties: + id: + type: number + name: + type: string + required: + - id + - name + example: [] + required: + - campaignId + - name + UpdateTacticInput: + type: object + properties: + tacticId: + type: number + example: 100 + name: + type: string + example: Example Name + prompt: + type: string + example: string + channelCodes: + type: array + items: + type: string + enum: + - ctv + - video + - display + - app + - social + example: [] + countryCodes: + type: array + items: + type: string + example: [] + availableBrandStandards: + type: array + items: + type: object + properties: + id: + type: number + name: + type: string + required: + - id + - name + example: [] + availableBrandStory: + type: array + items: + type: object + properties: + id: + type: number + name: + type: string + required: + - id + - name + example: [] + required: + - tacticId + DeleteTacticInput: + type: object + properties: + tacticId: + type: number + example: 100 + confirm: + type: boolean + example: true + required: + - tacticId + - confirm + GetTacticInput: + type: object + properties: + tacticId: + type: number + example: 100 + required: + - tacticId + ListTacticsInput: + type: object + properties: + campaignId: + type: string + example: example_id_123 + take: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + skip: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + LinkCampaignToTacticInput: + type: object + properties: + tacticId: + type: number + example: 100 + campaignId: + type: string + example: example_id_123 + required: + - tacticId + - campaignId + UnlinkCampaignFromTacticInput: + type: object + properties: + tacticId: + type: number + example: 100 + campaignId: + type: string + example: example_id_123 + required: + - tacticId + - campaignId + RegisterWebhookInput: + type: object + properties: + brandAgentId: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + endpoint: + type: object + properties: + url: + type: string + format: uri + method: + type: string + enum: + - POST + - PUT + headers: + type: object + additionalProperties: + type: string + authentication: + type: object + properties: + type: + type: string + enum: + - bearer + - basic + - hmac + credentials: + type: string + required: + - type + - credentials + required: + - url + - method + eventTypes: + type: array + items: + type: string + example: [] + filters: + type: object + properties: + campaigns: + type: array + items: + type: string + tactics: + type: array + items: + type: string + creatives: + type: array + items: + type: string + mediaBuys: + type: array + items: + type: string + metrics: + type: array + items: + type: string + minSeverity: + type: string + enum: + - info + - warning + - critical + retryPolicy: + type: object + properties: + maxRetries: + type: integer + minimum: 0 + maximum: 9007199254740991 + backoffMultiplier: + type: number + minimum: 0 + exclusiveMinimum: true + maxBackoffSeconds: + type: number + minimum: 0 + exclusiveMinimum: true + required: + - endpoint + - eventTypes + ListWebhooksInput: + type: object + properties: + take: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + skip: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + DeleteWebhookInput: + type: object + properties: + webhookId: + type: string + example: example_id_123 + required: + - webhookId + CreateServiceTokenInput: + type: object + properties: + name: + description: Human-readable name for the service token + type: string + minLength: 1 + example: Example Name + description: + description: Optional description of the token purpose and usage + type: string + example: string + expiresInDays: + description: Number of days until token expiration (max 365). If not provided, token does not expire + type: integer + exclusiveMinimum: true + maximum: 365 + example: 100 + scope: + description: 'Token scope: CUSTOMER (full customer access) or SEAT (scoped to specific seat)' + default: CUSTOMER + type: string + enum: + - CUSTOMER + - SEAT + seatName: + description: Seat name (required when scope is SEAT). The seat will be looked up for the customer. + type: string + minLength: 1 + example: Example Name + required: + - name + UpdateServiceTokenInput: + type: object + properties: + id: + description: The unique identifier of the service token to update + type: integer + format: int64 + example: 100 + name: + description: Updated human-readable name for the service token + type: string + minLength: 1 + example: Example Name + description: + description: Updated description of the token purpose and usage + type: string + example: string + expiresInDays: + description: Number of days to extend expiration from now (max 365). Updates the expiresAt timestamp + type: integer + exclusiveMinimum: true + maximum: 365 + example: 100 + required: + - id + ArchiveServiceTokenInput: + type: object + properties: + id: + description: The unique identifier of the service token to archive + type: integer + format: int64 + example: 100 + required: + - id + GetServiceTokenInput: + type: object + properties: + id: + description: The unique identifier of the service token to retrieve + type: integer + format: int64 + example: 100 + includeSecret: + description: Whether to fetch the access_client_secret from Google Secret Manager. Defaults to false for security + default: false + type: boolean + required: + - id + ListServiceTokensInput: + type: object + properties: + includeArchived: + description: Whether to include archived tokens in the response + default: false + type: boolean + seatId: + description: Filter tokens by seat ID + type: integer + format: int64 + example: 100 + userId: + description: Filter tokens by user ID + type: integer + format: int64 + example: 100 + MediaBuyGet: + type: object + properties: + media_buy_id: + description: ADCP media buy identifier + type: string + example: example_id_123 + tactic_id: + description: Internal tactic ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + customer_id: + description: Internal customer ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + name: + description: Media buy name + type: string + example: Example Name + description: + description: Media buy description + type: string + example: string + status: + description: Internal status (DRAFT, ACTIVE, PAUSED, etc.) + type: string + example: string + products: + description: Pre-execution product configuration + type: array + items: + type: object + properties: + product_id: + description: ADCP product identifier + type: string + sales_agent_id: + type: string + sales_agent_name: + type: string + budget: + description: ADCP budget field + type: number + pacing: + description: ADCP pacing field + type: string + enum: + - asap + - even + - front_loaded + pricing_option_id: + type: string + bid_price: + type: number + display_order: + type: number + creative_formats: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + required: + - product_id + - sales_agent_id + example: [] + packages: + description: Post-execution ADCP packages (enriched) + type: array + items: + type: object + properties: + package_id: + type: string + buyer_ref: + nullable: true + type: string + product_id: + nullable: true + type: string + budget: + nullable: true + type: number + pacing: + nullable: true + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + pricing_option_id: + nullable: true + type: string + bid_price: + nullable: true + type: number + impressions: + nullable: true + type: number + targeting_overlay: + nullable: true + type: object + properties: + geo_country_any_of: + nullable: true + type: array + items: + type: string + geo_region_any_of: + nullable: true + type: array + items: + type: string + geo_metro_any_of: + nullable: true + type: array + items: + type: string + geo_postal_code_any_of: + nullable: true + type: array + items: + type: string + axe_include_segment: + nullable: true + type: string + axe_exclude_segment: + nullable: true + type: string + frequency_cap: + nullable: true + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + creative_assignments: + nullable: true + type: array + items: + type: object + properties: + creative_id: + type: string + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - creative_id + format_ids_to_provide: + nullable: true + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + paused: + nullable: true + type: boolean + ext: + nullable: true + type: object + additionalProperties: {} + product_ids: + description: Array of product IDs (enriched from joins) + type: array + items: + type: string + creatives: + description: Full creative objects (enriched from joins) + type: array + items: + type: object + properties: + creative_id: + type: string + name: + type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + status: + description: Internal creative status (not in ADCP protocol) + type: string + required: + - creative_id + - name + - format_id + - assets + - status + created_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + updated_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + sales_agent_id: + type: string + sales_agent_name: + type: string + creative_formats: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + required: + - package_id + - creatives + - created_at + - updated_at + example: [] + creatives: + description: Full creative objects (enriched from joins) + type: array + items: + type: object + properties: + creative_id: + type: string + name: + type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + status: + description: Internal creative status (not in ADCP protocol) + type: string + required: + - creative_id + - name + - format_id + - assets + - status + example: [] + adcp: + description: ADCP-specific metadata (from execute response) + type: object + properties: + media_buy_id: + type: string + status: + type: string + webhook_url: + type: string + performance: + description: Performance metrics (from reporting) + type: object + properties: + impressions: + type: number + spend: + type: number + clicks: + type: number + last_updated: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + required: + - impressions + - spend + - clicks + created_at: + description: Created timestamp + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + updated_at: + description: Updated timestamp + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + archived_at: + description: Archived timestamp + nullable: true + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + required: + - media_buy_id + - tactic_id + - customer_id + - name + - status + - created_at + - updated_at + MediaProductSave: + type: object + properties: + product_id: + type: string + example: example_id_123 + name: + type: string + example: Example Name + description: + type: string + example: string + publisher_properties: + type: array + items: + anyOf: + - anyOf: + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - all + required: + - publisher_domain + - selection_type + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - by_id + property_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + - selection_type + - property_ids + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - by_tag + property_tags: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + - selection_type + - property_tags + - anyOf: + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - all + required: + - publisher_domain + - selection_type + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - by_id + property_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + - selection_type + - property_ids + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - by_tag + property_tags: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + - selection_type + - property_tags + minItems: 2 + example: [] + format_ids: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + example: [] + placements: + nullable: true + type: array + items: + anyOf: + - type: object + properties: + placement_id: + type: string + name: + type: string + description: + nullable: true + type: string + format_ids: + nullable: true + type: array + items: + anyOf: + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + minItems: 2 + required: + - placement_id + - name + - type: object + properties: + placement_id: + type: string + name: + type: string + description: + nullable: true + type: string + format_ids: + nullable: true + type: array + items: + anyOf: + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + minItems: 2 + required: + - placement_id + - name + minItems: 2 + example: [] + delivery_type: + anyOf: + - type: string + enum: + - guaranteed + - type: string + enum: + - non_guaranteed + pricing_options: + type: array + items: + anyOf: + - anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + required: + - view_threshold + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + required: + - view_threshold + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + minItems: 2 + example: [] + estimated_exposures: + nullable: true type: number example: 100 - name: - type: string - example: Example Name - description: - type: string - example: string - products: - type: array - items: - type: object - properties: - mediaProductId: - type: string - salesAgentId: - type: string - salesAgentName: - type: string - budgetAmount: - type: number - budgetCurrency: - type: string - pricingCpm: - type: number - pricingSignalCost: - type: number - displayOrder: - type: number - creativeFormats: - type: array - items: - type: object - properties: - agent_url: - type: string - id: - type: string - required: - - agent_url - - id - required: - - mediaProductId - - salesAgentId - example: [] - packages: - type: array - items: - type: object - properties: - packageId: - type: string - productIds: - type: array - items: - type: string - impressions: - type: number - budget: - type: number - targetingOverlay: {} - creatives: - type: array - items: - type: object - properties: - creativeId: - type: string - name: - type: string - formatId: - type: string - mediaUrl: - type: string - status: - type: string - required: - - creativeId - - name - - formatId - - mediaUrl - - status - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - salesAgentId: - type: string - salesAgentName: - type: string - pricingCpm: - type: number - pricingSignalCost: - type: number - bidPrice: - type: number - pricingOptionId: - type: string - creativeFormats: - type: array - items: - type: object - properties: - agent_url: - type: string - id: - type: string - required: - - agent_url - - id - required: - - packageId - - productIds - - impressions - - budget - - targetingOverlay - - creatives - - createdAt - - updatedAt - example: [] - creatives: - type: array - items: - type: object - properties: - creativeId: - type: string - name: - type: string - formatId: - type: string - mediaUrl: - type: string - status: - type: string - required: - - creativeId - - name - - formatId - - mediaUrl - - status - example: [] - pricing: + measurement: + nullable: true type: object properties: - cpm: - type: number - signalCost: - type: number - totalCpm: - type: number + type: + type: string + attribution: + type: string + window: + nullable: true + type: string + reporting: + type: string required: - - cpm - - totalCpm - status: - type: string - example: string - adcp: + - type + - attribution + - reporting + delivery_measurement: type: object properties: - mediaBuyId: - type: string - status: + provider: type: string - webhookUrl: + notes: + nullable: true type: string - performance: + required: + - provider + reporting_capabilities: + nullable: true type: object properties: - impressions: - type: number - spend: - type: number - clicks: + available_reporting_frequencies: + type: array + items: + anyOf: + - anyOf: + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - monthly + - anyOf: + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - monthly + minItems: 2 + expected_delay_minutes: type: number - lastUpdated: + timezone: type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + supports_webhooks: + type: boolean + available_metrics: + type: array + items: + anyOf: + - type: string + enum: + - impressions + - type: string + enum: + - spend + - type: string + enum: + - clicks + - type: string + enum: + - ctr + - type: string + enum: + - video_completions + - type: string + enum: + - completion_rate + - type: string + enum: + - conversions + - type: string + enum: + - viewability + - type: string + enum: + - engagement_rate required: - - impressions - - spend - - clicks - archivedAt: + - available_reporting_frequencies + - expected_delay_minutes + - timezone + - supports_webhooks + - available_metrics + creative_policy: + nullable: true + type: object + properties: + co_branding: + anyOf: + - type: string + enum: + - required + - type: string + enum: + - optional + - type: string + enum: + - none + landing_page: + anyOf: + - type: string + enum: + - any + - type: string + enum: + - retailer_site_only + - type: string + enum: + - must_include_retailer + templates_available: + type: boolean + required: + - co_branding + - landing_page + - templates_available + is_custom: + nullable: true + type: boolean + example: true + brief_relevance: + nullable: true type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string - createdAt: + expires_at: + nullable: true + type: string + example: string + product_card: + nullable: true + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + product_card_detailed: + nullable: true + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + ext: + nullable: true + type: object + additionalProperties: {} + id: + description: Internal database ID + type: string + example: example_id_123 + customer_id: + description: Customer who owns this product + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + adcp_agent_id: + description: Source ADCP agent ID + type: string + example: example_id_123 + sales_agent_name: + description: Human-readable agent name + type: string + example: Example Name + inventory_type: + description: Internal classification of inventory type + type: string + enum: + - premium + - run_of_site + - targeted_package + example: premium + created_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string - updatedAt: + updated_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string required: - - id - - tacticId - - customerId + - product_id - name - - pricing - - status - - createdAt - - updatedAt + - description + - publisher_properties + - format_ids + - delivery_type + - pricing_options + - delivery_measurement + - id + - customer_id + - created_at + - updated_at TacticGet: type: object properties: @@ -4878,21 +11002,21 @@ components: - seats - count additionalProperties: false - CreativeSyncSalesAgents: + SyncSalesAgentsOutput: type: object properties: success: type: boolean example: true - creativeId: + creative_id: type: string example: example_id_123 - campaignId: + campaign_id: type: string example: example_id_123 required: - success - - creativeId + - creative_id additionalProperties: false CountryList: type: object @@ -4946,43 +11070,43 @@ components: - total - items additionalProperties: false - MediaBuyDelete: + DeleteMediaBuyOutput: type: object properties: success: type: boolean example: true - id: + media_buy_id: type: string example: example_id_123 required: - success - - id + - media_buy_id additionalProperties: false - MediaBuyExecute: + ExecuteMediaBuyOutput: type: object properties: success: type: boolean example: true - mediaBuyId: + media_buy_id: type: string example: example_id_123 status: type: string example: string - adcpMediaBuyId: + adcp_media_buy_id: type: string example: example_id_123 - adcpStatus: + adcp_status: type: string example: string required: - success - - mediaBuyId + - media_buy_id - status additionalProperties: false - MediaBuyList: + ListMediaBuysOutput: type: object properties: total: @@ -4999,7 +11123,7 @@ components: - total - items additionalProperties: false - MediaBuyValidateBudget: + ValidateMediaBuyBudgetOutput: type: object properties: valid: @@ -5104,22 +11228,22 @@ components: success: type: boolean example: true - productsFound: + products_found: type: integer minimum: 0 maximum: 9007199254740991 example: 100 - productsSaved: + products_saved: type: integer minimum: 0 maximum: 9007199254740991 example: 100 - successfulAgents: + successful_agents: type: integer minimum: 0 maximum: 9007199254740991 example: 100 - failedAgents: + failed_agents: type: integer minimum: 0 maximum: 9007199254740991 @@ -5127,113 +11251,16 @@ components: products: type: array items: - type: object - properties: - productId: - type: string - name: - type: string - publisherName: - type: string - salesAgentId: - type: string - salesAgentName: - type: string - deliveryType: - type: string - enum: - - guaranteed - - non_guaranteed - inventoryType: - type: string - enum: - - premium - - run_of_site - - targeted_package - creativeFormats: - anyOf: - - type: array - items: - type: string - - type: array - items: - type: object - properties: - agent_url: - type: string - id: - type: string - required: - - agent_url - - id - additionalProperties: false - fixedCpm: - type: number - floorCpm: - type: number - targetCpm: - type: number - required: - - productId - - name - - publisherName - - deliveryType - - inventoryType - additionalProperties: false + $ref: '#/components/schemas/MediaProductSaveOutput' example: [] required: - success - - productsFound - - productsSaved - - successfulAgents - - failedAgents + - products_found + - products_saved + - successful_agents + - failed_agents - products additionalProperties: false - MediaProductSave: - type: object - properties: - id: - type: string - example: example_id_123 - productId: - type: string - example: example_id_123 - name: - type: string - example: Example Name - publisherId: - type: string - example: example_id_123 - publisherName: - type: string - example: Example Name - customerId: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - required: - - id - - productId - - name - - publisherId - - publisherName - - customerId - - createdAt - - updatedAt - additionalProperties: false MediaProductList: type: object properties: @@ -5245,50 +11272,7 @@ components: items: type: array items: - type: object - properties: - id: - type: string - productId: - type: string - name: - type: string - salesAgent: - type: string - salesAgentId: - type: string - salesAgentName: - type: string - deliveryType: - type: string - enum: - - guaranteed - - non_guaranteed - format: - type: string - creativeFormats: - anyOf: - - type: array - items: - type: string - - type: array - items: - type: object - properties: - agent_url: - type: string - id: - type: string - required: - - agent_url - - id - additionalProperties: false - required: - - id - - productId - - name - - deliveryType - additionalProperties: false + $ref: '#/components/schemas/MediaProductSaveOutput' example: [] required: - total @@ -5300,14 +11284,14 @@ components: success: type: boolean example: true - productsSaved: + products_saved: type: integer minimum: 0 maximum: 9007199254740991 example: 100 required: - success - - productsSaved + - products_saved additionalProperties: false AgentGet: anyOf: @@ -5322,6 +11306,7 @@ components: enum: - SALES - OUTCOME + - SIGNAL status: type: string relationship: @@ -5371,6 +11356,7 @@ components: enum: - SALES - OUTCOME + - SIGNAL status: type: string relationship: @@ -5437,6 +11423,7 @@ components: enum: - SALES - OUTCOME + - SIGNAL status: type: string relationship: @@ -5465,6 +11452,7 @@ components: enum: - SALES - OUTCOME + - SIGNAL status: type: string relationship: @@ -5506,6 +11494,7 @@ components: enum: - SALES - OUTCOME + - SIGNAL example: SALES status: type: string @@ -5534,6 +11523,7 @@ components: enum: - SALES - OUTCOME + - SIGNAL example: SALES required: - success @@ -5554,6 +11544,7 @@ components: enum: - SALES - OUTCOME + - SIGNAL example: SALES status: type: string @@ -6133,43 +12124,1124 @@ components: MediaBuyGetOutput: type: object properties: - id: + media_buy_id: + description: ADCP media buy identifier type: string example: example_id_123 - tacticId: - type: number + tactic_id: + description: Internal tactic ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 example: 100 - customerId: - type: number + customer_id: + description: Internal customer ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 example: 100 name: + description: Media buy name type: string example: Example Name description: + description: Media buy description + type: string + example: string + status: + description: Internal status (DRAFT, ACTIVE, PAUSED, etc.) type: string example: string products: + description: Pre-execution product configuration + type: array + items: + type: object + properties: + product_id: + description: ADCP product identifier + type: string + sales_agent_id: + type: string + sales_agent_name: + type: string + budget: + description: ADCP budget field + type: number + pacing: + description: ADCP pacing field + type: string + enum: + - asap + - even + - front_loaded + pricing_option_id: + type: string + bid_price: + type: number + display_order: + type: number + creative_formats: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + required: + - product_id + - sales_agent_id + additionalProperties: false + example: [] + packages: + description: Post-execution ADCP packages (enriched) type: array items: type: object properties: - mediaProductId: + package_id: + type: string + buyer_ref: + nullable: true + type: string + product_id: + nullable: true + type: string + budget: + nullable: true + type: number + pacing: + nullable: true + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + pricing_option_id: + nullable: true + type: string + bid_price: + nullable: true + type: number + impressions: + nullable: true + type: number + targeting_overlay: + nullable: true + type: object + properties: + geo_country_any_of: + nullable: true + type: array + items: + type: string + geo_region_any_of: + nullable: true + type: array + items: + type: string + geo_metro_any_of: + nullable: true + type: array + items: + type: string + geo_postal_code_any_of: + nullable: true + type: array + items: + type: string + axe_include_segment: + nullable: true + type: string + axe_exclude_segment: + nullable: true + type: string + frequency_cap: + nullable: true + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + additionalProperties: false + additionalProperties: false + creative_assignments: + nullable: true + type: array + items: + type: object + properties: + creative_id: + type: string + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - creative_id + additionalProperties: false + format_ids_to_provide: + nullable: true + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + paused: + nullable: true + type: boolean + ext: + nullable: true + type: object + additionalProperties: {} + product_ids: + description: Array of product IDs (enriched from joins) + type: array + items: + type: string + creatives: + description: Full creative objects (enriched from joins) + type: array + items: + type: object + properties: + creative_id: + type: string + name: + type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + status: + description: Internal creative status (not in ADCP protocol) + type: string + required: + - creative_id + - name + - format_id + - assets + - status + additionalProperties: false + created_at: type: string - salesAgentId: + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + updated_at: type: string - salesAgentName: + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + sales_agent_id: type: string - budgetAmount: - type: number - budgetCurrency: + sales_agent_name: type: string - pricingCpm: - type: number - pricingSignalCost: - type: number - displayOrder: - type: number - creativeFormats: + creative_formats: type: array items: type: object @@ -6178,194 +13250,2175 @@ components: type: string id: type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number required: - agent_url - id additionalProperties: false required: - - mediaProductId - - salesAgentId + - package_id + - creatives + - created_at + - updated_at additionalProperties: false example: [] - packages: + creatives: + description: Full creative objects (enriched from joins) type: array items: type: object properties: - packageId: + creative_id: type: string - productIds: - type: array - items: - type: string - impressions: - type: number - budget: - type: number - targetingOverlay: {} - creatives: + name: + type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true type: array items: type: object properties: - creativeId: - type: string name: type: string - formatId: - type: string - mediaUrl: - type: string - status: + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true type: string required: - - creativeId - name - - formatId - - mediaUrl - - status additionalProperties: false - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - updatedAt: + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + status: + description: Internal creative status (not in ADCP protocol) type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - salesAgentId: + required: + - creative_id + - name + - format_id + - assets + - status + additionalProperties: false + example: [] + adcp: + description: ADCP-specific metadata (from execute response) + type: object + properties: + media_buy_id: + type: string + status: + type: string + webhook_url: + type: string + additionalProperties: false + performance: + description: Performance metrics (from reporting) + type: object + properties: + impressions: + type: number + spend: + type: number + clicks: + type: number + last_updated: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + required: + - impressions + - spend + - clicks + additionalProperties: false + created_at: + description: Created timestamp + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + updated_at: + description: Updated timestamp + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + archived_at: + description: Archived timestamp + nullable: true + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + required: + - media_buy_id + - tactic_id + - customer_id + - name + - status + - created_at + - updated_at + additionalProperties: false + MediaProductSaveOutput: + type: object + properties: + product_id: + type: string + example: example_id_123 + name: + type: string + example: Example Name + description: + type: string + example: string + publisher_properties: + type: array + items: + anyOf: + - anyOf: + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - all + required: + - publisher_domain + - selection_type + additionalProperties: false + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - by_id + property_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + - selection_type + - property_ids + additionalProperties: false + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - by_tag + property_tags: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + - selection_type + - property_tags + additionalProperties: false + - anyOf: + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - all + required: + - publisher_domain + - selection_type + additionalProperties: false + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - by_id + property_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + - selection_type + - property_ids + additionalProperties: false + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - by_tag + property_tags: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + - selection_type + - property_tags + additionalProperties: false + minItems: 2 + example: [] + format_ids: + type: array + items: + type: object + properties: + agent_url: type: string - salesAgentName: + id: type: string - pricingCpm: + width: + nullable: true type: number - pricingSignalCost: + height: + nullable: true type: number - bidPrice: + duration_ms: + nullable: true type: number - pricingOptionId: - type: string - creativeFormats: - type: array - items: - type: object - properties: - agent_url: - type: string - id: - type: string - required: - - agent_url - - id - additionalProperties: false required: - - packageId - - productIds - - impressions - - budget - - targetingOverlay - - creatives - - createdAt - - updatedAt + - agent_url + - id additionalProperties: false example: [] - creatives: + placements: + nullable: true type: array items: - type: object - properties: - creativeId: - type: string - name: - type: string - formatId: - type: string - mediaUrl: - type: string - status: - type: string - required: - - creativeId - - name - - formatId - - mediaUrl - - status - additionalProperties: false + anyOf: + - type: object + properties: + placement_id: + type: string + name: + type: string + description: + nullable: true + type: string + format_ids: + nullable: true + type: array + items: + anyOf: + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + minItems: 2 + required: + - placement_id + - name + additionalProperties: false + - type: object + properties: + placement_id: + type: string + name: + type: string + description: + nullable: true + type: string + format_ids: + nullable: true + type: array + items: + anyOf: + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + minItems: 2 + required: + - placement_id + - name + additionalProperties: false + minItems: 2 + example: [] + delivery_type: + anyOf: + - type: string + enum: + - guaranteed + - type: string + enum: + - non_guaranteed + pricing_options: + type: array + items: + anyOf: + - anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + additionalProperties: false + required: + - view_threshold + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + additionalProperties: false + required: + - view_threshold + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + minItems: 2 example: [] - pricing: + estimated_exposures: + nullable: true + type: number + example: 100 + measurement: + nullable: true type: object properties: - cpm: - type: number - signalCost: - type: number - totalCpm: - type: number + type: + type: string + attribution: + type: string + window: + nullable: true + type: string + reporting: + type: string required: - - cpm - - totalCpm + - type + - attribution + - reporting additionalProperties: false - status: - type: string - example: string - adcp: + delivery_measurement: type: object properties: - mediaBuyId: - type: string - status: + provider: type: string - webhookUrl: + notes: + nullable: true type: string + required: + - provider additionalProperties: false - performance: + reporting_capabilities: + nullable: true type: object properties: - impressions: - type: number - spend: - type: number - clicks: + available_reporting_frequencies: + type: array + items: + anyOf: + - anyOf: + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - monthly + - anyOf: + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - monthly + minItems: 2 + expected_delay_minutes: type: number - lastUpdated: + timezone: type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + supports_webhooks: + type: boolean + available_metrics: + type: array + items: + anyOf: + - type: string + enum: + - impressions + - type: string + enum: + - spend + - type: string + enum: + - clicks + - type: string + enum: + - ctr + - type: string + enum: + - video_completions + - type: string + enum: + - completion_rate + - type: string + enum: + - conversions + - type: string + enum: + - viewability + - type: string + enum: + - engagement_rate required: - - impressions - - spend - - clicks + - available_reporting_frequencies + - expected_delay_minutes + - timezone + - supports_webhooks + - available_metrics additionalProperties: false - archivedAt: + creative_policy: + nullable: true + type: object + properties: + co_branding: + anyOf: + - type: string + enum: + - required + - type: string + enum: + - optional + - type: string + enum: + - none + landing_page: + anyOf: + - type: string + enum: + - any + - type: string + enum: + - retailer_site_only + - type: string + enum: + - must_include_retailer + templates_available: + type: boolean + required: + - co_branding + - landing_page + - templates_available + additionalProperties: false + is_custom: + nullable: true + type: boolean + example: true + brief_relevance: + nullable: true type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string - createdAt: + expires_at: + nullable: true + type: string + example: string + product_card: + nullable: true + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + additionalProperties: false + product_card_detailed: + nullable: true + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + additionalProperties: false + ext: + nullable: true + type: object + additionalProperties: {} + id: + description: Internal database ID + type: string + example: example_id_123 + customer_id: + description: Customer who owns this product + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + adcp_agent_id: + description: Source ADCP agent ID + type: string + example: example_id_123 + sales_agent_name: + description: Human-readable agent name + type: string + example: Example Name + inventory_type: + description: Internal classification of inventory type + type: string + enum: + - premium + - run_of_site + - targeted_package + example: premium + created_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string - updatedAt: + updated_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string required: - - id - - tacticId - - customerId + - product_id - name - - pricing - - status - - createdAt - - updatedAt + - description + - publisher_properties + - format_ids + - delivery_type + - pricing_options + - delivery_measurement + - id + - customer_id + - created_at + - updated_at additionalProperties: false TacticGetOutput: type: object @@ -6428,43 +15481,192 @@ components: MediaBuyCreate: type: object properties: - id: + media_buy_id: + description: ADCP media buy identifier type: string example: example_id_123 - tacticId: - type: number + tactic_id: + description: Internal tactic ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 example: 100 - customerId: - type: number + customer_id: + description: Internal customer ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 example: 100 name: + description: Media buy name type: string example: Example Name description: + description: Media buy description + type: string + example: string + status: + description: Internal status (DRAFT, ACTIVE, PAUSED, etc.) type: string example: string products: + description: Pre-execution product configuration type: array items: type: object properties: - mediaProductId: + product_id: + description: ADCP product identifier type: string - salesAgentId: + sales_agent_id: + type: string + sales_agent_name: + type: string + budget: + description: ADCP budget field + type: number + pacing: + description: ADCP pacing field type: string - salesAgentName: + enum: + - asap + - even + - front_loaded + pricing_option_id: type: string - budgetAmount: + bid_price: + type: number + display_order: type: number - budgetCurrency: + creative_formats: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + required: + - product_id + - sales_agent_id + additionalProperties: false + example: [] + packages: + description: Post-execution ADCP packages (enriched) + type: array + items: + type: object + properties: + package_id: + type: string + buyer_ref: + nullable: true + type: string + product_id: + nullable: true type: string - pricingCpm: + budget: + nullable: true type: number - pricingSignalCost: + pacing: + nullable: true + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + pricing_option_id: + nullable: true + type: string + bid_price: + nullable: true type: number - displayOrder: + impressions: + nullable: true type: number - creativeFormats: + targeting_overlay: + nullable: true + type: object + properties: + geo_country_any_of: + nullable: true + type: array + items: + type: string + geo_region_any_of: + nullable: true + type: array + items: + type: string + geo_metro_any_of: + nullable: true + type: array + items: + type: string + geo_postal_code_any_of: + nullable: true + type: array + items: + type: string + axe_include_segment: + nullable: true + type: string + axe_exclude_segment: + nullable: true + type: string + frequency_cap: + nullable: true + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + additionalProperties: false + additionalProperties: false + creative_assignments: + nullable: true + type: array + items: + type: object + properties: + creative_id: + type: string + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - creative_id + additionalProperties: false + format_ids_to_provide: + nullable: true type: array items: type: object @@ -6473,76 +15675,930 @@ components: type: string id: type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number required: - agent_url - id additionalProperties: false - required: - - mediaProductId - - salesAgentId - additionalProperties: false - example: [] - packages: - type: array - items: - type: object - properties: - packageId: - type: string - productIds: + paused: + nullable: true + type: boolean + ext: + nullable: true + type: object + additionalProperties: {} + product_ids: + description: Array of product IDs (enriched from joins) type: array items: type: string - impressions: - type: number - budget: - type: number - targetingOverlay: {} creatives: + description: Full creative objects (enriched from joins) type: array items: type: object properties: - creativeId: + creative_id: type: string name: type: string - formatId: - type: string - mediaUrl: - type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 status: + description: Internal creative status (not in ADCP protocol) type: string required: - - creativeId + - creative_id - name - - formatId - - mediaUrl + - format_id + - assets - status additionalProperties: false - createdAt: + created_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - updatedAt: + updated_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - salesAgentId: + sales_agent_id: type: string - salesAgentName: - type: string - pricingCpm: - type: number - pricingSignalCost: - type: number - bidPrice: - type: number - pricingOptionId: + sales_agent_name: type: string - creativeFormats: + creative_formats: type: array items: type: object @@ -6551,71 +16607,924 @@ components: type: string id: type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number required: - agent_url - id additionalProperties: false required: - - packageId - - productIds - - impressions - - budget - - targetingOverlay + - package_id - creatives - - createdAt - - updatedAt + - created_at + - updated_at additionalProperties: false example: [] creatives: + description: Full creative objects (enriched from joins) type: array items: type: object properties: - creativeId: + creative_id: type: string name: type: string - formatId: - type: string - mediaUrl: - type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 status: + description: Internal creative status (not in ADCP protocol) type: string required: - - creativeId + - creative_id - name - - formatId - - mediaUrl + - format_id + - assets - status additionalProperties: false example: [] - pricing: - type: object - properties: - cpm: - type: number - signalCost: - type: number - totalCpm: - type: number - required: - - cpm - - totalCpm - additionalProperties: false - status: - type: string - example: string adcp: + description: ADCP-specific metadata (from execute response) type: object properties: - mediaBuyId: + media_buy_id: type: string status: type: string - webhookUrl: + webhook_url: type: string additionalProperties: false performance: + description: Performance metrics (from reporting) type: object properties: impressions: @@ -6624,7 +17533,7 @@ components: type: number clicks: type: number - lastUpdated: + last_updated: type: string format: date-time pattern: >- @@ -6634,74 +17543,226 @@ components: - spend - clicks additionalProperties: false - archivedAt: + created_at: + description: Created timestamp type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string - createdAt: + updated_at: + description: Updated timestamp type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string - updatedAt: + archived_at: + description: Archived timestamp + nullable: true type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string required: - - id - - tacticId - - customerId + - media_buy_id + - tactic_id + - customer_id - name - - pricing - status - - createdAt - - updatedAt + - created_at + - updated_at additionalProperties: false MediaBuyUpdate: type: object properties: - id: + media_buy_id: + description: ADCP media buy identifier type: string example: example_id_123 - tacticId: - type: number + tactic_id: + description: Internal tactic ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 example: 100 - customerId: - type: number + customer_id: + description: Internal customer ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 example: 100 name: + description: Media buy name type: string example: Example Name description: + description: Media buy description + type: string + example: string + status: + description: Internal status (DRAFT, ACTIVE, PAUSED, etc.) type: string example: string products: + description: Pre-execution product configuration + type: array + items: + type: object + properties: + product_id: + description: ADCP product identifier + type: string + sales_agent_id: + type: string + sales_agent_name: + type: string + budget: + description: ADCP budget field + type: number + pacing: + description: ADCP pacing field + type: string + enum: + - asap + - even + - front_loaded + pricing_option_id: + type: string + bid_price: + type: number + display_order: + type: number + creative_formats: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + required: + - product_id + - sales_agent_id + additionalProperties: false + example: [] + packages: + description: Post-execution ADCP packages (enriched) type: array items: type: object properties: - mediaProductId: + package_id: type: string - salesAgentId: + buyer_ref: + nullable: true type: string - salesAgentName: + product_id: + nullable: true type: string - budgetAmount: + budget: + nullable: true type: number - budgetCurrency: + pacing: + nullable: true + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + pricing_option_id: + nullable: true type: string - pricingCpm: - type: number - pricingSignalCost: + bid_price: + nullable: true type: number - displayOrder: + impressions: + nullable: true type: number - creativeFormats: + targeting_overlay: + nullable: true + type: object + properties: + geo_country_any_of: + nullable: true + type: array + items: + type: string + geo_region_any_of: + nullable: true + type: array + items: + type: string + geo_metro_any_of: + nullable: true + type: array + items: + type: string + geo_postal_code_any_of: + nullable: true + type: array + items: + type: string + axe_include_segment: + nullable: true + type: string + axe_exclude_segment: + nullable: true + type: string + frequency_cap: + nullable: true + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + additionalProperties: false + additionalProperties: false + creative_assignments: + nullable: true + type: array + items: + type: object + properties: + creative_id: + type: string + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - creative_id + additionalProperties: false + format_ids_to_provide: + nullable: true type: array items: type: object @@ -6710,76 +17771,930 @@ components: type: string id: type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number required: - agent_url - id additionalProperties: false - required: - - mediaProductId - - salesAgentId - additionalProperties: false - example: [] - packages: - type: array - items: - type: object - properties: - packageId: - type: string - productIds: + paused: + nullable: true + type: boolean + ext: + nullable: true + type: object + additionalProperties: {} + product_ids: + description: Array of product IDs (enriched from joins) type: array items: type: string - impressions: - type: number - budget: - type: number - targetingOverlay: {} creatives: + description: Full creative objects (enriched from joins) type: array items: type: object properties: - creativeId: + creative_id: type: string name: type: string - formatId: - type: string - mediaUrl: - type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 status: + description: Internal creative status (not in ADCP protocol) type: string required: - - creativeId + - creative_id - name - - formatId - - mediaUrl + - format_id + - assets - status additionalProperties: false - createdAt: + created_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - updatedAt: + updated_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - salesAgentId: + sales_agent_id: type: string - salesAgentName: - type: string - pricingCpm: - type: number - pricingSignalCost: - type: number - bidPrice: - type: number - pricingOptionId: + sales_agent_name: type: string - creativeFormats: + creative_formats: type: array items: type: object @@ -6788,71 +18703,924 @@ components: type: string id: type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number required: - agent_url - id additionalProperties: false required: - - packageId - - productIds - - impressions - - budget - - targetingOverlay + - package_id - creatives - - createdAt - - updatedAt + - created_at + - updated_at additionalProperties: false example: [] creatives: + description: Full creative objects (enriched from joins) type: array items: type: object properties: - creativeId: + creative_id: type: string name: type: string - formatId: - type: string - mediaUrl: - type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 status: + description: Internal creative status (not in ADCP protocol) type: string required: - - creativeId + - creative_id - name - - formatId - - mediaUrl + - format_id + - assets - status additionalProperties: false example: [] - pricing: - type: object - properties: - cpm: - type: number - signalCost: - type: number - totalCpm: - type: number - required: - - cpm - - totalCpm - additionalProperties: false - status: - type: string - example: string adcp: + description: ADCP-specific metadata (from execute response) type: object properties: - mediaBuyId: + media_buy_id: type: string status: type: string - webhookUrl: + webhook_url: type: string additionalProperties: false performance: + description: Performance metrics (from reporting) type: object properties: impressions: @@ -6861,7 +19629,7 @@ components: type: number clicks: type: number - lastUpdated: + last_updated: type: string format: date-time pattern: >- @@ -6871,33 +19639,36 @@ components: - spend - clicks additionalProperties: false - archivedAt: + created_at: + description: Created timestamp type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string - createdAt: + updated_at: + description: Updated timestamp type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string - updatedAt: + archived_at: + description: Archived timestamp + nullable: true type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string required: - - id - - tacticId - - customerId + - media_buy_id + - tactic_id + - customer_id - name - - pricing - status - - createdAt - - updatedAt + - created_at + - updated_at additionalProperties: false TacticUpdate: type: object diff --git a/platform-api.yaml b/platform-api.yaml index 5dabd8b..a722407 100644 --- a/platform-api.yaml +++ b/platform-api.yaml @@ -1978,8 +1978,8 @@ paths: example: tool: creative_assign arguments: - creativeId: example_id_123 - campaignId: example_id_123 + creative_id: example_id_123 + campaign_id: example_id_123 schema: type: object properties: @@ -2005,7 +2005,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/CreativeAssign' + $ref: '#/components/schemas/AssignCreativeOutput' required: - content - structuredContent @@ -2055,8 +2055,13 @@ paths: example: tool: creative_create arguments: - brandAgentId: 100 + creative_id: example_id_123 name: Example Name + format_id: + agent_url: https://example.com + id: example_id_123 + assets: null + brand_agent_id: 100 schema: type: object properties: @@ -2065,7 +2070,7 @@ paths: enum: - creative_create arguments: - $ref: '#/components/schemas/CreateCreativeInput' + $ref: '#/components/schemas/CreativeCreateInput' required: - tool - arguments @@ -2132,7 +2137,7 @@ paths: example: tool: creative_update arguments: - creativeId: example_id_123 + creative_id: example_id_123 schema: type: object properties: @@ -2141,7 +2146,7 @@ paths: enum: - creative_update arguments: - $ref: '#/components/schemas/UpdateCreativeInput' + $ref: '#/components/schemas/CreativeUpdateInput' required: - tool - arguments @@ -2208,7 +2213,7 @@ paths: example: tool: creative_delete arguments: - creativeId: example_id_123 + creative_id: example_id_123 schema: type: object properties: @@ -2234,7 +2239,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/CreativeDelete' + $ref: '#/components/schemas/DeleteCreativeOutput' required: - content - structuredContent @@ -2284,7 +2289,7 @@ paths: example: tool: creative_get arguments: - creativeId: example_id_123 + creative_id: example_id_123 schema: type: object properties: @@ -2385,7 +2390,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/CreativeList' + $ref: '#/components/schemas/ListCreativesOutput' required: - content - structuredContent @@ -2435,7 +2440,7 @@ paths: example: tool: media_buy_get arguments: - mediaBuyId: example_id_123 + media_buy_id: example_id_123 schema: type: object properties: @@ -2536,7 +2541,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/MediaBuyList' + $ref: '#/components/schemas/ListMediaBuysOutput' required: - content - structuredContent @@ -4408,203 +4413,1818 @@ components: AssignCreativeInput: type: object properties: - creativeId: + creative_id: type: string example: example_id_123 - campaignId: + campaign_id: type: string example: example_id_123 required: - - creativeId - - campaignId - CreateCreativeInput: + - creative_id + - campaign_id + CreativeCreateInput: type: object properties: - brandAgentId: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - organizationId: + creative_id: type: string example: example_id_123 name: type: string - minLength: 1 - maxLength: 255 example: Example Name - description: - type: string - example: string - formatSource: - type: string - enum: - - ADCP - - CREATIVE_AGENT - - PUBLISHER - example: ADCP - formatId: - description: >- - Format identifier. For ADCP sources, this should be a format ID string recognized by the target sales agent - (e.g., display_300x250, video_1920x1080). Valid formats are agent-specific. - type: string - example: example_id_123 - mediaUrl: - type: string - example: https://example.com + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id assets: - description: >- - Optional: Upload assets inline with the creative. Each asset requires: name, contentType, data (base64), and - assetType. + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + inputs: + nullable: true type: array items: type: object properties: name: - description: Filename (e.g., banner.png) - type: string - contentType: - description: MIME type (e.g., image/png, image/jpeg) type: string - data: - description: Base64-encoded file data (without data:image/png;base64, prefix) - format: byte - type: string - assetType: - description: Type of asset - type: string - enum: - - image - - video - - audio - - logo - - font - tags: - description: Optional tags - type: array - items: + macros: + nullable: true + type: object + additionalProperties: type: string + context_description: + nullable: true + type: string required: - name - - contentType - - data - - assetType example: [] - content: - type: object - additionalProperties: {} - assemblyMethod: - type: string - enum: - - CREATIVE_AGENT - - ACTIVATION - - PUBLISHER - example: CREATIVE_AGENT - campaignId: - description: Optional campaign ID (object ID) to assign creative to - type: string - example: example_id_123 - required: - - brandAgentId - - name - UpdateCreativeInput: - type: object - properties: - creativeId: - type: string - example: example_id_123 - name: - type: string - example: Example Name - status: - type: string - example: string - required: - - creativeId - DeleteCreativeInput: - type: object - properties: - creativeId: - type: string - example: example_id_123 - required: - - creativeId - GetCreativeInput: - type: object - properties: - creativeId: - type: string - example: example_id_123 - required: - - creativeId - ListCreativesInput: - type: object - properties: - campaignId: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 + tags: + nullable: true + type: array + items: + type: string + example: [] + approved: + nullable: true + type: boolean + example: true + weight: + nullable: true + type: number example: 100 - brandAgentId: + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + example: [] + brand_agent_id: type: integer exclusiveMinimum: true maximum: 9007199254740991 example: 100 - formatSource: - type: string - enum: - - ADCP - - CREATIVE_AGENT - - PUBLISHER - example: ADCP - status: + organization_id: type: string - enum: - - ACTIVE - - PAUSED - - ARCHIVED - - DRAFT - example: ACTIVE - take: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - skip: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - ListCountriesInput: - type: object - properties: {} - ListLanguagesInput: - type: object - properties: {} - GetMediaBuyInput: - type: object - properties: - mediaBuyId: + example: example_id_123 + campaign_id: type: string example: example_id_123 required: - - mediaBuyId - ListMediaBuysInput: + - creative_id + - name + - format_id + - assets + - brand_agent_id + CreativeUpdateInput: type: object properties: - tacticId: - type: number - example: 100 - status: + creative_id: type: string - enum: - - DRAFT - - PENDING_APPROVAL - - ACTIVE - - PAUSED - - COMPLETED - - FAILED - - REJECTED + example: example_id_123 + name: + type: string + example: Example Name + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + example: [] + tags: + nullable: true + type: array + items: + type: string + example: [] + approved: + nullable: true + type: boolean + example: true + weight: + nullable: true + type: number + example: 100 + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + example: [] + status: + type: string + enum: + - PENDING + - APPROVED + - AUTO_APPROVED + - CHANGES_REQUESTED + - REJECTED + example: PENDING + required: + - creative_id + DeleteCreativeInput: + type: object + properties: + creative_id: + type: string + example: example_id_123 + required: + - creative_id + GetCreativeInput: + type: object + properties: + creative_id: + type: string + example: example_id_123 + required: + - creative_id + ListCreativesInput: + type: object + properties: + campaign_id: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + brand_agent_id: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + status: + type: string + enum: + - ACTIVE + - PAUSED + - ARCHIVED + - DRAFT + example: ACTIVE + take: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + skip: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + ListCountriesInput: + type: object + properties: {} + ListLanguagesInput: + type: object + properties: {} + GetMediaBuyInput: + type: object + properties: + media_buy_id: + type: string + example: example_id_123 + required: + - media_buy_id + ListMediaBuysInput: + type: object + properties: + tactic_id: + type: number + example: 100 + status: + type: string + enum: + - DRAFT + - PENDING_APPROVAL + - ACTIVE + - PAUSED + - COMPLETED + - FAILED + - REJECTED example: DRAFT take: type: integer @@ -4730,11 +6350,12 @@ components: type: object properties: type: - description: Filter by agent type (SALES or OUTCOME) + description: Filter by agent type (SALES, OUTCOME, or SIGNAL) type: string enum: - SALES - OUTCOME + - SIGNAL example: SALES status: description: Filter by status (PENDING, ACTIVE, DISABLED) @@ -4907,6 +6528,16 @@ components: exclusiveMinimum: true maximum: 9007199254740991 example: 100 + seatId: + nullable: true + type: integer + format: int64 + example: 100 + countryCodes: + type: array + items: + type: string + example: [] createdAt: type: string format: date-time @@ -5038,76 +6669,941 @@ components: CreativeGet: type: object properties: - creativeId: + creative_id: type: string example: example_id_123 name: type: string example: Example Name - status: - type: string - example: string - campaignId: - type: string - example: example_id_123 - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + example: [] + tags: + nullable: true + type: array + items: + type: string + example: [] + approved: + nullable: true + type: boolean + example: true + weight: + nullable: true + type: number + example: 100 + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + example: [] + status: + description: Internal creative status + type: string + example: string + campaign_id: + description: Associated campaign ID + type: string + example: example_id_123 + created_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + updated_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string required: - - creativeId + - creative_id - name + - format_id + - assets - status - - createdAt - - updatedAt + - created_at + - updated_at MediaBuyGet: type: object properties: - id: + media_buy_id: + description: ADCP media buy identifier type: string example: example_id_123 - tacticId: - type: number + tactic_id: + description: Internal tactic ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 example: 100 - customerId: - type: number + customer_id: + description: Internal customer ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 example: 100 name: + description: Media buy name type: string example: Example Name description: + description: Media buy description + type: string + example: string + status: + description: Internal status (DRAFT, ACTIVE, PAUSED, etc.) type: string example: string products: + description: Pre-execution product configuration type: array items: type: object properties: - mediaProductId: + product_id: + description: ADCP product identifier type: string - salesAgentId: + sales_agent_id: type: string - salesAgentName: + sales_agent_name: type: string - budgetAmount: + budget: + description: ADCP budget field type: number - budgetCurrency: + pacing: + description: ADCP pacing field type: string - pricingCpm: - type: number - pricingSignalCost: + enum: + - asap + - even + - front_loaded + pricing_option_id: + type: string + bid_price: type: number - displayOrder: + display_order: type: number - creativeFormats: + creative_formats: type: array items: type: object @@ -5116,73 +7612,1022 @@ components: type: string id: type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number required: - agent_url - id required: - - mediaProductId - - salesAgentId + - product_id + - sales_agent_id example: [] packages: + description: Post-execution ADCP packages (enriched) type: array items: type: object properties: - packageId: + package_id: + type: string + buyer_ref: + nullable: true + type: string + product_id: + nullable: true type: string - productIds: - type: array - items: - type: string - impressions: - type: number budget: + nullable: true type: number - targetingOverlay: {} - creatives: + pacing: + nullable: true + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + pricing_option_id: + nullable: true + type: string + bid_price: + nullable: true + type: number + impressions: + nullable: true + type: number + targeting_overlay: + nullable: true + type: object + properties: + geo_country_any_of: + nullable: true + type: array + items: + type: string + geo_region_any_of: + nullable: true + type: array + items: + type: string + geo_metro_any_of: + nullable: true + type: array + items: + type: string + geo_postal_code_any_of: + nullable: true + type: array + items: + type: string + axe_include_segment: + nullable: true + type: string + axe_exclude_segment: + nullable: true + type: string + frequency_cap: + nullable: true + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + creative_assignments: + nullable: true type: array items: type: object properties: - creativeId: - type: string - name: - type: string - formatId: + creative_id: type: string - mediaUrl: + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - creative_id + format_ids_to_provide: + nullable: true + type: array + items: + type: object + properties: + agent_url: type: string - status: + id: type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number required: - - creativeId - - name - - formatId - - mediaUrl - - status - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - updatedAt: - type: string + - agent_url + - id + paused: + nullable: true + type: boolean + ext: + nullable: true + type: object + additionalProperties: {} + product_ids: + description: Array of product IDs (enriched from joins) + type: array + items: + type: string + creatives: + description: Full creative objects (enriched from joins) + type: array + items: + type: object + properties: + creative_id: + type: string + name: + type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + status: + description: Internal creative status (not in ADCP protocol) + type: string + required: + - creative_id + - name + - format_id + - assets + - status + created_at: + type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - salesAgentId: + updated_at: type: string - salesAgentName: + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + sales_agent_id: type: string - pricingCpm: - type: number - pricingSignalCost: - type: number - bidPrice: - type: number - pricingOptionId: + sales_agent_name: type: string - creativeFormats: + creative_formats: type: array items: type: object @@ -5191,66 +8636,891 @@ components: type: string id: type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number required: - agent_url - id required: - - packageId - - productIds - - impressions - - budget - - targetingOverlay + - package_id - creatives - - createdAt - - updatedAt + - created_at + - updated_at example: [] creatives: + description: Full creative objects (enriched from joins) type: array items: type: object properties: - creativeId: + creative_id: type: string name: type: string - formatId: - type: string - mediaUrl: - type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 status: + description: Internal creative status (not in ADCP protocol) type: string required: - - creativeId + - creative_id - name - - formatId - - mediaUrl + - format_id + - assets - status example: [] - pricing: - type: object - properties: - cpm: - type: number - signalCost: - type: number - totalCpm: - type: number - required: - - cpm - - totalCpm - status: - type: string - example: string adcp: + description: ADCP-specific metadata (from execute response) type: object properties: - mediaBuyId: + media_buy_id: type: string status: type: string - webhookUrl: + webhook_url: type: string performance: + description: Performance metrics (from reporting) type: object properties: impressions: @@ -5259,7 +9529,7 @@ components: type: number clicks: type: number - lastUpdated: + last_updated: type: string format: date-time pattern: >- @@ -5268,33 +9538,36 @@ components: - impressions - spend - clicks - archivedAt: + created_at: + description: Created timestamp type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string - createdAt: + updated_at: + description: Updated timestamp type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string - updatedAt: + archived_at: + description: Archived timestamp + nullable: true type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string required: - - id - - tacticId - - customerId + - media_buy_id + - tactic_id + - customer_id - name - - pricing - status - - createdAt - - updatedAt + - created_at + - updated_at TacticGet: type: object properties: @@ -5897,24 +10170,24 @@ components: - seats - count additionalProperties: false - CreativeAssign: + AssignCreativeOutput: type: object properties: success: type: boolean example: true - creativeId: + creative_id: type: string example: example_id_123 - campaignId: + campaign_id: type: string example: example_id_123 required: - success - - creativeId - - campaignId + - creative_id + - campaign_id additionalProperties: false - CreativeDelete: + DeleteCreativeOutput: type: object properties: success: @@ -5927,7 +10200,7 @@ components: - success - id additionalProperties: false - CreativeList: + ListCreativesOutput: type: object properties: items: @@ -5996,7 +10269,7 @@ components: - total - items additionalProperties: false - MediaBuyList: + ListMediaBuysOutput: type: object properties: total: @@ -6205,131 +10478,1273 @@ components: items: type: object properties: - id: - type: string - productId: + product_id: type: string name: type: string - salesAgent: - type: string - salesAgentId: - type: string - salesAgentName: - type: string - deliveryType: - type: string - enum: - - guaranteed - - non_guaranteed - format: + description: type: string - creativeFormats: - anyOf: - - type: array - items: + publisher_properties: + type: array + items: + anyOf: + - anyOf: + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - all + required: + - publisher_domain + - selection_type + additionalProperties: false + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - by_id + property_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + - selection_type + - property_ids + additionalProperties: false + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - by_tag + property_tags: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + - selection_type + - property_tags + additionalProperties: false + - anyOf: + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - all + required: + - publisher_domain + - selection_type + additionalProperties: false + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - by_id + property_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + - selection_type + - property_ids + additionalProperties: false + - type: object + properties: + publisher_domain: + type: string + selection_type: + type: string + enum: + - by_tag + property_tags: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + - selection_type + - property_tags + additionalProperties: false + minItems: 2 + format_ids: + type: array + items: + type: object + properties: + agent_url: type: string - - type: array - items: - type: object + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + placements: + nullable: true + type: array + items: + anyOf: + - type: object properties: - agent_url: + placement_id: type: string - id: + name: + type: string + description: + nullable: true type: string + format_ids: + nullable: true + type: array + items: + anyOf: + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + minItems: 2 required: - - agent_url - - id + - placement_id + - name additionalProperties: false - required: - - id - - productId - - name - - deliveryType - additionalProperties: false - example: [] - required: - - total - - items - additionalProperties: false - AgentGet: - anyOf: - - type: object - properties: - agentId: - type: string - name: - type: string - type: - type: string - enum: - - SALES - - OUTCOME - status: - type: string - relationship: - type: string - endpointUrl: - type: string - protocol: - type: string - authenticationType: - type: string - description: - type: string - organizationId: - type: string - registeredBy: - type: string - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - required: - - agentId - - name - - type - - status - - relationship - - endpointUrl - - protocol - - authenticationType - - createdAt - - updatedAt - additionalProperties: false - - type: object - properties: - agentId: - type: string - name: - type: string - type: - type: string - enum: - - SALES - - OUTCOME - status: - type: string - relationship: - type: string - endpointUrl: - type: string - protocol: - type: string - authenticationType: - type: string - description: - type: string - organizationId: - type: string - registeredBy: - type: string + - type: object + properties: + placement_id: + type: string + name: + type: string + description: + nullable: true + type: string + format_ids: + nullable: true + type: array + items: + anyOf: + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + minItems: 2 + required: + - placement_id + - name + additionalProperties: false + minItems: 2 + delivery_type: + anyOf: + - type: string + enum: + - guaranteed + - type: string + enum: + - non_guaranteed + pricing_options: + type: array + items: + anyOf: + - anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + additionalProperties: false + required: + - view_threshold + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + additionalProperties: false + required: + - view_threshold + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + minItems: 2 + estimated_exposures: + nullable: true + type: number + measurement: + nullable: true + type: object + properties: + type: + type: string + attribution: + type: string + window: + nullable: true + type: string + reporting: + type: string + required: + - type + - attribution + - reporting + additionalProperties: false + delivery_measurement: + type: object + properties: + provider: + type: string + notes: + nullable: true + type: string + required: + - provider + additionalProperties: false + reporting_capabilities: + nullable: true + type: object + properties: + available_reporting_frequencies: + type: array + items: + anyOf: + - anyOf: + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - monthly + - anyOf: + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - monthly + minItems: 2 + expected_delay_minutes: + type: number + timezone: + type: string + supports_webhooks: + type: boolean + available_metrics: + type: array + items: + anyOf: + - type: string + enum: + - impressions + - type: string + enum: + - spend + - type: string + enum: + - clicks + - type: string + enum: + - ctr + - type: string + enum: + - video_completions + - type: string + enum: + - completion_rate + - type: string + enum: + - conversions + - type: string + enum: + - viewability + - type: string + enum: + - engagement_rate + required: + - available_reporting_frequencies + - expected_delay_minutes + - timezone + - supports_webhooks + - available_metrics + additionalProperties: false + creative_policy: + nullable: true + type: object + properties: + co_branding: + anyOf: + - type: string + enum: + - required + - type: string + enum: + - optional + - type: string + enum: + - none + landing_page: + anyOf: + - type: string + enum: + - any + - type: string + enum: + - retailer_site_only + - type: string + enum: + - must_include_retailer + templates_available: + type: boolean + required: + - co_branding + - landing_page + - templates_available + additionalProperties: false + is_custom: + nullable: true + type: boolean + brief_relevance: + nullable: true + type: string + expires_at: + nullable: true + type: string + product_card: + nullable: true + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + additionalProperties: false + product_card_detailed: + nullable: true + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + additionalProperties: false + ext: + nullable: true + type: object + additionalProperties: {} + id: + description: Internal database ID + type: string + customer_id: + description: Customer who owns this product + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + adcp_agent_id: + description: Source ADCP agent ID + type: string + sales_agent_name: + description: Human-readable agent name + type: string + inventory_type: + description: Internal classification of inventory type + type: string + enum: + - premium + - run_of_site + - targeted_package + created_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + updated_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + required: + - product_id + - name + - description + - publisher_properties + - format_ids + - delivery_type + - pricing_options + - delivery_measurement + - id + - customer_id + - created_at + - updated_at + additionalProperties: false + example: [] + required: + - total + - items + additionalProperties: false + AgentGet: + anyOf: + - type: object + properties: + agentId: + type: string + name: + type: string + type: + type: string + enum: + - SALES + - OUTCOME + - SIGNAL + status: + type: string + relationship: + type: string + endpointUrl: + type: string + protocol: + type: string + authenticationType: + type: string + description: + type: string + organizationId: + type: string + registeredBy: + type: string + createdAt: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + updatedAt: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + required: + - agentId + - name + - type + - status + - relationship + - endpointUrl + - protocol + - authenticationType + - createdAt + - updatedAt + additionalProperties: false + - type: object + properties: + agentId: + type: string + name: + type: string + type: + type: string + enum: + - SALES + - OUTCOME + - SIGNAL + status: + type: string + relationship: + type: string + endpointUrl: + type: string + protocol: + type: string + authenticationType: + type: string + description: + type: string + organizationId: + type: string + registeredBy: + type: string createdAt: type: string format: date-time @@ -6380,6 +11795,7 @@ components: enum: - SALES - OUTCOME + - SIGNAL status: type: string relationship: @@ -6408,6 +11824,7 @@ components: enum: - SALES - OUTCOME + - SIGNAL status: type: string relationship: @@ -6834,6 +12251,16 @@ components: exclusiveMinimum: true maximum: 9007199254740991 example: 100 + seatId: + nullable: true + type: integer + format: int64 + example: 100 + countryCodes: + type: array + items: + type: string + example: [] createdAt: type: string format: date-time @@ -6969,155 +12396,2031 @@ components: CreativeGetOutput: type: object properties: - creativeId: - type: string - example: example_id_123 - name: - type: string - example: Example Name - status: - type: string - example: string - campaignId: - type: string - example: example_id_123 - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - required: - - creativeId - - name - - status - - createdAt - - updatedAt - additionalProperties: false - MediaBuyGetOutput: - type: object - properties: - id: + creative_id: type: string example: example_id_123 - tacticId: - type: number - example: 100 - customerId: - type: number - example: 100 name: type: string example: Example Name - description: - type: string - example: string - products: - type: array - items: - type: object - properties: - mediaProductId: - type: string - salesAgentId: - type: string - salesAgentName: - type: string - budgetAmount: - type: number - budgetCurrency: - type: string - pricingCpm: - type: number - pricingSignalCost: - type: number - displayOrder: - type: number - creativeFormats: - type: array - items: - type: object - properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + example: [] + tags: + nullable: true + type: array + items: + type: string + example: [] + approved: + nullable: true + type: boolean + example: true + weight: + nullable: true + type: number + example: 100 + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + example: [] + status: + description: Internal creative status + type: string + example: string + campaign_id: + description: Associated campaign ID + type: string + example: example_id_123 + created_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + updated_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + required: + - creative_id + - name + - format_id + - assets + - status + - created_at + - updated_at + additionalProperties: false + MediaBuyGetOutput: + type: object + properties: + media_buy_id: + description: ADCP media buy identifier + type: string + example: example_id_123 + tactic_id: + description: Internal tactic ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + customer_id: + description: Internal customer ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + name: + description: Media buy name + type: string + example: Example Name + description: + description: Media buy description + type: string + example: string + status: + description: Internal status (DRAFT, ACTIVE, PAUSED, etc.) + type: string + example: string + products: + description: Pre-execution product configuration + type: array + items: + type: object + properties: + product_id: + description: ADCP product identifier + type: string + sales_agent_id: + type: string + sales_agent_name: + type: string + budget: + description: ADCP budget field + type: number + pacing: + description: ADCP pacing field + type: string + enum: + - asap + - even + - front_loaded + pricing_option_id: + type: string + bid_price: + type: number + display_order: + type: number + creative_formats: + type: array + items: + type: object + properties: agent_url: type: string id: type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number required: - agent_url - id additionalProperties: false required: - - mediaProductId - - salesAgentId + - product_id + - sales_agent_id additionalProperties: false example: [] packages: + description: Post-execution ADCP packages (enriched) type: array items: type: object properties: - packageId: + package_id: + type: string + buyer_ref: + nullable: true + type: string + product_id: + nullable: true + type: string + budget: + nullable: true + type: number + pacing: + nullable: true + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + pricing_option_id: + nullable: true type: string - productIds: + bid_price: + nullable: true + type: number + impressions: + nullable: true + type: number + targeting_overlay: + nullable: true + type: object + properties: + geo_country_any_of: + nullable: true + type: array + items: + type: string + geo_region_any_of: + nullable: true + type: array + items: + type: string + geo_metro_any_of: + nullable: true + type: array + items: + type: string + geo_postal_code_any_of: + nullable: true + type: array + items: + type: string + axe_include_segment: + nullable: true + type: string + axe_exclude_segment: + nullable: true + type: string + frequency_cap: + nullable: true + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + additionalProperties: false + additionalProperties: false + creative_assignments: + nullable: true + type: array + items: + type: object + properties: + creative_id: + type: string + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - creative_id + additionalProperties: false + format_ids_to_provide: + nullable: true + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + paused: + nullable: true + type: boolean + ext: + nullable: true + type: object + additionalProperties: {} + product_ids: + description: Array of product IDs (enriched from joins) type: array items: type: string - impressions: - type: number - budget: - type: number - targetingOverlay: {} creatives: + description: Full creative objects (enriched from joins) type: array items: type: object properties: - creativeId: + creative_id: type: string name: type: string - formatId: - type: string - mediaUrl: - type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 status: + description: Internal creative status (not in ADCP protocol) type: string required: - - creativeId + - creative_id - name - - formatId - - mediaUrl + - format_id + - assets - status additionalProperties: false - createdAt: + created_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - updatedAt: + updated_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - salesAgentId: - type: string - salesAgentName: + sales_agent_id: type: string - pricingCpm: - type: number - pricingSignalCost: - type: number - bidPrice: - type: number - pricingOptionId: + sales_agent_name: type: string - creativeFormats: + creative_formats: type: array items: type: object @@ -7126,71 +14429,924 @@ components: type: string id: type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number required: - agent_url - id additionalProperties: false required: - - packageId - - productIds - - impressions - - budget - - targetingOverlay + - package_id - creatives - - createdAt - - updatedAt + - created_at + - updated_at additionalProperties: false example: [] creatives: + description: Full creative objects (enriched from joins) type: array items: type: object properties: - creativeId: + creative_id: type: string name: type: string - formatId: - type: string - mediaUrl: - type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 status: + description: Internal creative status (not in ADCP protocol) type: string required: - - creativeId + - creative_id - name - - formatId - - mediaUrl + - format_id + - assets - status additionalProperties: false example: [] - pricing: - type: object - properties: - cpm: - type: number - signalCost: - type: number - totalCpm: - type: number - required: - - cpm - - totalCpm - additionalProperties: false - status: - type: string - example: string adcp: + description: ADCP-specific metadata (from execute response) type: object properties: - mediaBuyId: + media_buy_id: type: string status: type: string - webhookUrl: + webhook_url: type: string additionalProperties: false performance: + description: Performance metrics (from reporting) type: object properties: impressions: @@ -7199,7 +15355,7 @@ components: type: number clicks: type: number - lastUpdated: + last_updated: type: string format: date-time pattern: >- @@ -7209,33 +15365,36 @@ components: - spend - clicks additionalProperties: false - archivedAt: + created_at: + description: Created timestamp type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string - createdAt: + updated_at: + description: Updated timestamp type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string - updatedAt: + archived_at: + description: Archived timestamp + nullable: true type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string required: - - id - - tacticId - - customerId + - media_buy_id + - tactic_id + - customer_id - name - - pricing - status - - createdAt - - updatedAt + - created_at + - updated_at additionalProperties: false TacticGetOutput: type: object @@ -7318,6 +15477,16 @@ components: exclusiveMinimum: true maximum: 9007199254740991 example: 100 + seatId: + nullable: true + type: integer + format: int64 + example: 100 + countryCodes: + type: array + items: + type: string + example: [] createdAt: type: string format: date-time @@ -7360,6 +15529,16 @@ components: exclusiveMinimum: true maximum: 9007199254740991 example: 100 + seatId: + nullable: true + type: integer + format: int64 + example: 100 + countryCodes: + type: array + items: + type: string + example: [] createdAt: type: string format: date-time @@ -7444,70 +15623,1816 @@ components: CreativeCreate: type: object properties: - creativeId: + creative_id: type: string example: example_id_123 name: type: string example: Example Name + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + example: [] + tags: + nullable: true + type: array + items: + type: string + example: [] + approved: + nullable: true + type: boolean + example: true + weight: + nullable: true + type: number + example: 100 + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + example: [] status: + description: Internal creative status type: string example: string - campaignId: + campaign_id: + description: Associated campaign ID type: string example: example_id_123 - createdAt: + created_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string - updatedAt: + updated_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string required: - - creativeId + - creative_id - name + - format_id + - assets - status - - createdAt - - updatedAt + - created_at + - updated_at additionalProperties: false CreativeUpdate: type: object properties: - creativeId: + creative_id: type: string example: example_id_123 name: type: string example: Example Name + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + example: [] + tags: + nullable: true + type: array + items: + type: string + example: [] + approved: + nullable: true + type: boolean + example: true + weight: + nullable: true + type: number + example: 100 + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + example: [] status: + description: Internal creative status type: string example: string - campaignId: + campaign_id: + description: Associated campaign ID type: string example: example_id_123 - createdAt: + created_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string - updatedAt: + updated_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string required: - - creativeId + - creative_id - name + - format_id + - assets - status - - createdAt - - updatedAt + - created_at + - updated_at additionalProperties: false securitySchemes: bearerAuth: diff --git a/src/types/partner-api.ts b/src/types/partner-api.ts index 85ffea6..28c4bfb 100644 --- a/src/types/partner-api.ts +++ b/src/types/partner-api.ts @@ -321,69 +321,802 @@ export interface components { }; SyncSalesAgentsInput: { /** @example example_id_123 */ - creativeId: string; + creative_id: string; }; ListCountriesInput: Record; ListLanguagesInput: Record; - CreateMediaBuyInput: { - /** @example 100 */ - tacticId: number; - /** @example example_id_123 */ - agentId: string; - /** @example Example Name */ - name: string; + MediaBuyCreateInput: { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: ('google_merchant_center' | 'facebook_catalog' | 'custom') | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; /** @example string */ + po_number?: string | null; + start_time: 'asap' | string; + /** @example string */ + end_time: string; + reporting_webhook?: + | ({ + url: string; + token?: string | null; + authentication: { + schemes: ('Bearer' | 'HMAC-SHA256')[]; + credentials: string; + }; + } & { + reporting_frequency: 'hourly' | 'daily' | 'monthly'; + requested_metrics?: + | ( + | 'impressions' + | 'spend' + | 'clicks' + | 'ctr' + | 'video_completions' + | 'completion_rate' + | 'conversions' + | 'viewability' + | 'engagement_rate' + )[] + | null; + }) + | null; + context?: { + [key: string]: unknown; + } | null; + ext?: { + [key: string]: unknown; + } | null; + /** + * @description Internal tactic ID + * @example 100 + */ + tactic_id: number; + /** + * @description Agent creating this media buy + * @example example_id_123 + */ + agent_id: string; + /** + * @description Media buy name + * @example Example Name + */ + name: string; + /** + * @description Media buy description + * @example string + */ description?: string; - /** @example [] */ + /** + * @description Products to include (converted to packages on execution) + * @example [] + */ products: { - mediaProductId: string; - budgetAmount: number; - budgetCurrency?: string; - pricingCpm?: number; - pricingSignalCost?: number; - displayOrder?: number; - creatives?: { - creative_id: string; - name: string; - format_id: - | string - | { + product_id: string; + format_ids?: + | { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[] + | null; + budget: number; + pacing?: ('even' | 'asap' | 'front_loaded') | null; + pricing_option_id: string; + bid_price?: number | null; + targeting_overlay?: { + geo_country_any_of?: string[] | null; + geo_region_any_of?: string[] | null; + geo_metro_any_of?: string[] | null; + geo_postal_code_any_of?: string[] | null; + axe_include_segment?: string | null; + axe_exclude_segment?: string | null; + frequency_cap?: { + suppress_minutes: number; + } | null; + } | null; + creative_ids?: string[] | null; + creatives?: + | { + creative_id: string; + name: string; + format_id: { agent_url: string; id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }; - assets?: { - [key: string]: { - url: string; - width?: number; - height?: number; - }; - }; - click_url?: string; - }[]; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: + | ('realtime' | 'hourly' | 'daily' | 'weekly') + | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + }[] + | null; + ext?: { + [key: string]: unknown; + } | null; + /** @description Display order in UI (internal only) */ + display_order?: number; }[]; - /** @example [] */ + /** + * @description Optional inline creatives + * @example [] + */ creatives?: { creative_id: string; name: string; - format_id: - | string - | { - agent_url: string; - id: string; - }; - assets?: { - [key: string]: { - url: string; - width?: number; - height?: number; - }; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; }; - click_url?: string; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; }[]; }; UpdateMediaBuyInput: { /** @example example_id_123 */ - mediaBuyId: string; + media_buy_id: string; /** @example Example Name */ name?: string; /** @example string */ @@ -401,30 +1134,40 @@ export interface components { | 'FAILED' | 'REJECTED'; /** @example [] */ - creativeIds?: string[]; + creative_ids?: string[]; + /** @example [] */ + products?: { + product_id: string; + budget: number; + pacing?: ('even' | 'asap' | 'front_loaded') | null; + bid_price?: number | null; + }[]; /** @example [] */ packages?: { - packageId: string; - creativeIds: string[]; + package_id: string; + budget?: number | null; + pacing?: ('even' | 'asap' | 'front_loaded') | null; + bid_price?: number | null; + creative_ids?: string[]; }[]; }; DeleteMediaBuyInput: { /** @example example_id_123 */ - mediaBuyId: string; + media_buy_id: string; /** @example true */ confirm: boolean; }; ExecuteMediaBuyInput: { /** @example example_id_123 */ - mediaBuyId: string; + media_buy_id: string; }; GetMediaBuyInput: { /** @example example_id_123 */ - mediaBuyId: string; + media_buy_id: string; }; ListMediaBuysInput: { /** @example 100 */ - tacticId?: number; + tactic_id?: number; /** * @example DRAFT * @enum {string} @@ -444,9 +1187,9 @@ export interface components { }; ValidateMediaBuyBudgetInput: { /** @example 100 */ - tacticId: number; + tactic_id: number; /** @example 100 */ - newBudgetAmount: number; + new_budget_amount: number; }; ListNotificationsInput: { /** @example 100 */ @@ -495,6 +1238,14 @@ export interface components { isFixedPrice?: boolean; /** @description Filter by format types */ formatTypes?: ('video' | 'display' | 'audio')[]; + /** @description Filter by specific structured format IDs (e.g., display_300x250_image). More precise than formatTypes. */ + formatIds?: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; /** @description Only return products accepting IAB standard formats */ standardFormatsOnly?: boolean; /** @description Minimum exposures/impressions needed for measurement validity */ @@ -511,50 +1262,253 @@ export interface components { */ saveToDatabase?: boolean; }; - SaveProductInput: { + MediaProductSaveInput: { /** @example example_id_123 */ - productId: string; + product_id: string; /** @example Example Name */ name: string; /** @example string */ description: string; - /** @example example_id_123 */ - publisherId: string; - /** @example Example Name */ - publisherName: string; - /** - * @example guaranteed - * @enum {string} - */ - deliveryType: 'guaranteed' | 'non_guaranteed'; - /** - * @example premium - * @enum {string} - */ - inventoryType: 'premium' | 'run_of_site' | 'targeted_package'; - creativeFormats?: - | string[] + /** @example [] */ + publisher_properties: ( | { - agent_url: string; - id: string; - }[]; - /** - * @example auction - * @enum {string} - */ - pricingModel: 'auction' | 'fixed_cpm'; - /** @example 100 */ - fixedCpm?: number; - /** @example 100 */ - floorCpm?: number; - /** @example 100 */ - targetCpm?: number; + publisher_domain: string; + /** @enum {string} */ + selection_type: 'all'; + } + | { + publisher_domain: string; + /** @enum {string} */ + selection_type: 'by_id'; + property_ids: string[]; + } + | { + publisher_domain: string; + /** @enum {string} */ + selection_type: 'by_tag'; + property_tags: string[]; + } + )[]; /** @example [] */ - pricingOptions?: { - [key: string]: unknown; + format_ids: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }[]; /** @example [] */ - supportedTargeting?: string[]; + placements?: + | { + placement_id: string; + name: string; + description?: string | null; + format_ids?: + | { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[] + | null; + }[] + | null; + delivery_type: 'guaranteed' | 'non_guaranteed'; + /** @example [] */ + pricing_options: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + view_threshold: + | number + | { + duration_seconds: number; + }; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number | null; + sov_percentage?: number | null; + loop_duration_seconds?: number | null; + min_plays_per_hour?: number | null; + venue_package?: string | null; + estimated_impressions?: number | null; + daypart?: string | null; + } | null; + min_spend_per_package?: number | null; + } + )[]; + /** @example 100 */ + estimated_exposures?: number | null; + measurement?: { + type: string; + attribution: string; + window?: string | null; + reporting: string; + } | null; + delivery_measurement: { + provider: string; + notes?: string | null; + }; + reporting_capabilities?: { + available_reporting_frequencies: ('hourly' | 'daily' | 'monthly')[]; + expected_delay_minutes: number; + timezone: string; + supports_webhooks: boolean; + available_metrics: ( + | 'impressions' + | 'spend' + | 'clicks' + | 'ctr' + | 'video_completions' + | 'completion_rate' + | 'conversions' + | 'viewability' + | 'engagement_rate' + )[]; + } | null; + creative_policy?: { + co_branding: 'required' | 'optional' | 'none'; + landing_page: 'any' | 'retailer_site_only' | 'must_include_retailer'; + templates_available: boolean; + } | null; + /** @example true */ + is_custom?: boolean | null; + /** @example string */ + brief_relevance?: string | null; + /** @example string */ + expires_at?: string | null; + product_card?: { + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + manifest: { + [key: string]: unknown; + }; + } | null; + product_card_detailed?: { + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + manifest: { + [key: string]: unknown; + }; + } | null; + ext?: { + [key: string]: unknown; + } | null; + /** @example 100 */ + customerId?: number; /** @example example_id_123 */ adcpAgentId?: string; }; @@ -577,11 +1531,11 @@ export interface components { }; ListAgentsInput: { /** - * @description Filter by agent type (SALES or OUTCOME) + * @description Filter by agent type (SALES, OUTCOME, or SIGNAL) * @example SALES * @enum {string} */ - type?: 'SALES' | 'OUTCOME'; + type?: 'SALES' | 'OUTCOME' | 'SIGNAL'; /** * @description Filter by status (PENDING, ACTIVE, DISABLED) * @example PENDING @@ -611,7 +1565,7 @@ export interface components { * @example SALES * @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; /** * @description Agent name * @example Example Name @@ -961,102 +1915,1048 @@ export interface components { userId?: number; }; MediaBuyGet: { - /** @example example_id_123 */ - id: string; - /** @example 100 */ - tacticId: number; - /** @example 100 */ - customerId: number; - /** @example Example Name */ + /** + * @description ADCP media buy identifier + * @example example_id_123 + */ + media_buy_id: string; + /** + * @description Internal tactic ID + * @example 100 + */ + tactic_id: number; + /** + * @description Internal customer ID + * @example 100 + */ + customer_id: number; + /** + * @description Media buy name + * @example Example Name + */ name: string; - /** @example string */ + /** + * @description Media buy description + * @example string + */ description?: string; - /** @example [] */ + /** + * @description Internal status (DRAFT, ACTIVE, PAUSED, etc.) + * @example string + */ + status: string; + /** + * @description Pre-execution product configuration + * @example [] + */ products?: { - mediaProductId: string; - salesAgentId: string; - salesAgentName?: string; - budgetAmount?: number; - budgetCurrency?: string; - pricingCpm?: number; - pricingSignalCost?: number; - displayOrder?: number; - creativeFormats?: { + /** @description ADCP product identifier */ + product_id: string; + sales_agent_id: string; + sales_agent_name?: string; + /** @description ADCP budget field */ + budget?: number; + /** + * @description ADCP pacing field + * @enum {string} + */ + pacing?: 'asap' | 'even' | 'front_loaded'; + pricing_option_id?: string; + bid_price?: number; + display_order?: number; + creative_formats?: { agent_url: string; id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }[]; }[]; - /** @example [] */ + /** + * @description Post-execution ADCP packages (enriched) + * @example [] + */ packages?: { - packageId: string; - productIds: string[]; - impressions: number; - budget: number; - targetingOverlay: unknown; + package_id: string; + buyer_ref?: string | null; + product_id?: string | null; + budget?: number | null; + pacing?: ('even' | 'asap' | 'front_loaded') | null; + pricing_option_id?: string | null; + bid_price?: number | null; + impressions?: number | null; + targeting_overlay?: { + geo_country_any_of?: string[] | null; + geo_region_any_of?: string[] | null; + geo_metro_any_of?: string[] | null; + geo_postal_code_any_of?: string[] | null; + axe_include_segment?: string | null; + axe_exclude_segment?: string | null; + frequency_cap?: { + suppress_minutes: number; + } | null; + } | null; + creative_assignments?: + | { + creative_id: string; + weight?: number | null; + placement_ids?: string[] | null; + }[] + | null; + format_ids_to_provide?: + | { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[] + | null; + paused?: boolean | null; + ext?: { + [key: string]: unknown; + } | null; + /** @description Array of product IDs (enriched from joins) */ + product_ids?: string[]; + /** @description Full creative objects (enriched from joins) */ creatives: { - creativeId: string; + creative_id: string; name: string; - formatId: string; - mediaUrl: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ status: string; }[]; /** Format: date-time */ - createdAt: string; + created_at: string; /** Format: date-time */ - updatedAt: string; - salesAgentId?: string; - salesAgentName?: string; - pricingCpm?: number; - pricingSignalCost?: number; - bidPrice?: number; - pricingOptionId?: string; - creativeFormats?: { + updated_at: string; + sales_agent_id?: string; + sales_agent_name?: string; + creative_formats?: { agent_url: string; id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }[]; }[]; - /** @example [] */ + /** + * @description Full creative objects (enriched from joins) + * @example [] + */ creatives?: { - creativeId: string; + creative_id: string; name: string; - formatId: string; - mediaUrl: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ status: string; }[]; - pricing: { - cpm: number; - signalCost?: number; - totalCpm: number; - }; - /** @example string */ - status: string; + /** @description ADCP-specific metadata (from execute response) */ adcp?: { - mediaBuyId?: string; + media_buy_id?: string; status?: string; - webhookUrl?: string; + webhook_url?: string; }; + /** @description Performance metrics (from reporting) */ performance?: { impressions: number; spend: number; clicks: number; /** Format: date-time */ - lastUpdated?: string; + last_updated?: string; }; /** * Format: date-time + * @description Created timestamp * @example string */ - archivedAt?: string; + created_at: string; /** * Format: date-time + * @description Updated timestamp * @example string */ - createdAt: string; + updated_at: string; /** * Format: date-time + * @description Archived timestamp * @example string */ - updatedAt: string; + archived_at?: string | null; + }; + MediaProductSave: { + /** @example example_id_123 */ + product_id: string; + /** @example Example Name */ + name: string; + /** @example string */ + description: string; + /** @example [] */ + publisher_properties: ( + | { + publisher_domain: string; + /** @enum {string} */ + selection_type: 'all'; + } + | { + publisher_domain: string; + /** @enum {string} */ + selection_type: 'by_id'; + property_ids: string[]; + } + | { + publisher_domain: string; + /** @enum {string} */ + selection_type: 'by_tag'; + property_tags: string[]; + } + )[]; + /** @example [] */ + format_ids: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + /** @example [] */ + placements?: + | { + placement_id: string; + name: string; + description?: string | null; + format_ids?: + | { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[] + | null; + }[] + | null; + delivery_type: 'guaranteed' | 'non_guaranteed'; + /** @example [] */ + pricing_options: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + view_threshold: + | number + | { + duration_seconds: number; + }; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number | null; + sov_percentage?: number | null; + loop_duration_seconds?: number | null; + min_plays_per_hour?: number | null; + venue_package?: string | null; + estimated_impressions?: number | null; + daypart?: string | null; + } | null; + min_spend_per_package?: number | null; + } + )[]; + /** @example 100 */ + estimated_exposures?: number | null; + measurement?: { + type: string; + attribution: string; + window?: string | null; + reporting: string; + } | null; + delivery_measurement: { + provider: string; + notes?: string | null; + }; + reporting_capabilities?: { + available_reporting_frequencies: ('hourly' | 'daily' | 'monthly')[]; + expected_delay_minutes: number; + timezone: string; + supports_webhooks: boolean; + available_metrics: ( + | 'impressions' + | 'spend' + | 'clicks' + | 'ctr' + | 'video_completions' + | 'completion_rate' + | 'conversions' + | 'viewability' + | 'engagement_rate' + )[]; + } | null; + creative_policy?: { + co_branding: 'required' | 'optional' | 'none'; + landing_page: 'any' | 'retailer_site_only' | 'must_include_retailer'; + templates_available: boolean; + } | null; + /** @example true */ + is_custom?: boolean | null; + /** @example string */ + brief_relevance?: string | null; + /** @example string */ + expires_at?: string | null; + product_card?: { + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + manifest: { + [key: string]: unknown; + }; + } | null; + product_card_detailed?: { + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + manifest: { + [key: string]: unknown; + }; + } | null; + ext?: { + [key: string]: unknown; + } | null; + /** + * @description Internal database ID + * @example example_id_123 + */ + id: string; + /** + * @description Customer who owns this product + * @example 100 + */ + customer_id: number; + /** + * @description Source ADCP agent ID + * @example example_id_123 + */ + adcp_agent_id?: string; + /** + * @description Human-readable agent name + * @example Example Name + */ + sales_agent_name?: string; + /** + * @description Internal classification of inventory type + * @example premium + * @enum {string} + */ + inventory_type?: 'premium' | 'run_of_site' | 'targeted_package'; + /** + * Format: date-time + * @example string + */ + created_at: string; + /** + * Format: date-time + * @example string + */ + updated_at: string; }; TacticGet: { /** @example 100 */ @@ -1182,13 +3082,13 @@ export interface components { */ count: number; }; - CreativeSyncSalesAgents: { + SyncSalesAgentsOutput: { /** @example true */ success: boolean; /** @example example_id_123 */ - creativeId: string; + creative_id: string; /** @example example_id_123 */ - campaignId?: string; + campaign_id?: string; }; CountryList: { /** @example 100 */ @@ -1208,31 +3108,31 @@ export interface components { displayName: string; }[]; }; - MediaBuyDelete: { + DeleteMediaBuyOutput: { /** @example true */ success: boolean; /** @example example_id_123 */ - id: string; + media_buy_id: string; }; - MediaBuyExecute: { + ExecuteMediaBuyOutput: { /** @example true */ success: boolean; /** @example example_id_123 */ - mediaBuyId: string; + media_buy_id: string; /** @example string */ status: string; /** @example example_id_123 */ - adcpMediaBuyId?: string; + adcp_media_buy_id?: string; /** @example string */ - adcpStatus?: string; + adcp_status?: string; }; - MediaBuyList: { + ListMediaBuysOutput: { /** @example 100 */ total: number; /** @example [] */ items: components['schemas']['MediaBuyGetOutput'][]; }; - MediaBuyValidateBudget: { + ValidateMediaBuyBudgetOutput: { /** @example true */ valid: boolean; /** @example string */ @@ -1278,93 +3178,34 @@ export interface components { /** @example true */ success: boolean; /** @example 100 */ - productsFound: number; + products_found: number; /** @example 100 */ - productsSaved: number; + products_saved: number; /** @example 100 */ - successfulAgents: number; + successful_agents: number; /** @example 100 */ - failedAgents: number; + failed_agents: number; /** @example [] */ - products: { - productId: string; - name: string; - publisherName: string; - salesAgentId?: string; - salesAgentName?: string; - /** @enum {string} */ - deliveryType: 'guaranteed' | 'non_guaranteed'; - /** @enum {string} */ - inventoryType: 'premium' | 'run_of_site' | 'targeted_package'; - creativeFormats?: - | string[] - | { - agent_url: string; - id: string; - }[]; - fixedCpm?: number; - floorCpm?: number; - targetCpm?: number; - }[]; - }; - MediaProductSave: { - /** @example example_id_123 */ - id: string; - /** @example example_id_123 */ - productId: string; - /** @example Example Name */ - name: string; - /** @example example_id_123 */ - publisherId: string; - /** @example Example Name */ - publisherName: string; - /** @example 100 */ - customerId: number; - /** - * Format: date-time - * @example string - */ - createdAt: string; - /** - * Format: date-time - * @example string - */ - updatedAt: string; + products: components['schemas']['MediaProductSaveOutput'][]; }; MediaProductList: { /** @example 100 */ total: number; /** @example [] */ - items: { - id: string; - productId: string; - name: string; - salesAgent?: string; - salesAgentId?: string; - salesAgentName?: string; - /** @enum {string} */ - deliveryType: 'guaranteed' | 'non_guaranteed'; - format?: string; - creativeFormats?: - | string[] - | { - agent_url: string; - id: string; - }[]; - }[]; + items: components['schemas']['MediaProductSaveOutput'][]; }; MediaProductSync: { /** @example true */ success: boolean; /** @example 100 */ - productsSaved: number; + products_saved: number; }; AgentGet: | { agentId: string; name: string; /** @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; status: string; relationship: string; endpointUrl: string; @@ -1382,7 +3223,7 @@ export interface components { agentId: string; name: string; /** @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; status: string; relationship: string; endpointUrl: string; @@ -1406,7 +3247,7 @@ export interface components { agentId: string; name: string; /** @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; status: string; relationship: string; endpointUrl: string; @@ -1416,7 +3257,7 @@ export interface components { agentId: string; name: string; /** @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; status: string; relationship: string; endpointUrl: string; @@ -1434,7 +3275,7 @@ export interface components { * @example SALES * @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; /** @example string */ status: string; /** @example https://example.com */ @@ -1449,7 +3290,7 @@ export interface components { * @example SALES * @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; }; AgentUpdate: { /** @example example_id_123 */ @@ -1460,7 +3301,7 @@ export interface components { * @example SALES * @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; /** @example string */ status: string; }; @@ -1814,102 +3655,1048 @@ export interface components { count: number; }; MediaBuyGetOutput: { - /** @example example_id_123 */ - id: string; - /** @example 100 */ - tacticId: number; - /** @example 100 */ - customerId: number; - /** @example Example Name */ + /** + * @description ADCP media buy identifier + * @example example_id_123 + */ + media_buy_id: string; + /** + * @description Internal tactic ID + * @example 100 + */ + tactic_id: number; + /** + * @description Internal customer ID + * @example 100 + */ + customer_id: number; + /** + * @description Media buy name + * @example Example Name + */ name: string; - /** @example string */ + /** + * @description Media buy description + * @example string + */ description?: string; - /** @example [] */ + /** + * @description Internal status (DRAFT, ACTIVE, PAUSED, etc.) + * @example string + */ + status: string; + /** + * @description Pre-execution product configuration + * @example [] + */ products?: { - mediaProductId: string; - salesAgentId: string; - salesAgentName?: string; - budgetAmount?: number; - budgetCurrency?: string; - pricingCpm?: number; - pricingSignalCost?: number; - displayOrder?: number; - creativeFormats?: { + /** @description ADCP product identifier */ + product_id: string; + sales_agent_id: string; + sales_agent_name?: string; + /** @description ADCP budget field */ + budget?: number; + /** + * @description ADCP pacing field + * @enum {string} + */ + pacing?: 'asap' | 'even' | 'front_loaded'; + pricing_option_id?: string; + bid_price?: number; + display_order?: number; + creative_formats?: { agent_url: string; id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }[]; }[]; - /** @example [] */ + /** + * @description Post-execution ADCP packages (enriched) + * @example [] + */ packages?: { - packageId: string; - productIds: string[]; - impressions: number; - budget: number; - targetingOverlay: unknown; + package_id: string; + buyer_ref?: string | null; + product_id?: string | null; + budget?: number | null; + pacing?: ('even' | 'asap' | 'front_loaded') | null; + pricing_option_id?: string | null; + bid_price?: number | null; + impressions?: number | null; + targeting_overlay?: { + geo_country_any_of?: string[] | null; + geo_region_any_of?: string[] | null; + geo_metro_any_of?: string[] | null; + geo_postal_code_any_of?: string[] | null; + axe_include_segment?: string | null; + axe_exclude_segment?: string | null; + frequency_cap?: { + suppress_minutes: number; + } | null; + } | null; + creative_assignments?: + | { + creative_id: string; + weight?: number | null; + placement_ids?: string[] | null; + }[] + | null; + format_ids_to_provide?: + | { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[] + | null; + paused?: boolean | null; + ext?: { + [key: string]: unknown; + } | null; + /** @description Array of product IDs (enriched from joins) */ + product_ids?: string[]; + /** @description Full creative objects (enriched from joins) */ creatives: { - creativeId: string; + creative_id: string; name: string; - formatId: string; - mediaUrl: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ status: string; }[]; /** Format: date-time */ - createdAt: string; + created_at: string; /** Format: date-time */ - updatedAt: string; - salesAgentId?: string; - salesAgentName?: string; - pricingCpm?: number; - pricingSignalCost?: number; - bidPrice?: number; - pricingOptionId?: string; - creativeFormats?: { + updated_at: string; + sales_agent_id?: string; + sales_agent_name?: string; + creative_formats?: { agent_url: string; id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }[]; }[]; - /** @example [] */ + /** + * @description Full creative objects (enriched from joins) + * @example [] + */ creatives?: { - creativeId: string; + creative_id: string; name: string; - formatId: string; - mediaUrl: string; - status: string; - }[]; - pricing: { - cpm: number; - signalCost?: number; - totalCpm: number; - }; - /** @example string */ - status: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ + status: string; + }[]; + /** @description ADCP-specific metadata (from execute response) */ adcp?: { - mediaBuyId?: string; + media_buy_id?: string; status?: string; - webhookUrl?: string; + webhook_url?: string; }; + /** @description Performance metrics (from reporting) */ performance?: { impressions: number; spend: number; clicks: number; /** Format: date-time */ - lastUpdated?: string; + last_updated?: string; }; /** * Format: date-time + * @description Created timestamp * @example string */ - archivedAt?: string; + created_at: string; /** * Format: date-time + * @description Updated timestamp * @example string */ - createdAt: string; + updated_at: string; /** * Format: date-time + * @description Archived timestamp * @example string */ - updatedAt: string; + archived_at?: string | null; + }; + MediaProductSaveOutput: { + /** @example example_id_123 */ + product_id: string; + /** @example Example Name */ + name: string; + /** @example string */ + description: string; + /** @example [] */ + publisher_properties: ( + | { + publisher_domain: string; + /** @enum {string} */ + selection_type: 'all'; + } + | { + publisher_domain: string; + /** @enum {string} */ + selection_type: 'by_id'; + property_ids: string[]; + } + | { + publisher_domain: string; + /** @enum {string} */ + selection_type: 'by_tag'; + property_tags: string[]; + } + )[]; + /** @example [] */ + format_ids: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + /** @example [] */ + placements?: + | { + placement_id: string; + name: string; + description?: string | null; + format_ids?: + | { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[] + | null; + }[] + | null; + delivery_type: 'guaranteed' | 'non_guaranteed'; + /** @example [] */ + pricing_options: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + view_threshold: + | number + | { + duration_seconds: number; + }; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number | null; + sov_percentage?: number | null; + loop_duration_seconds?: number | null; + min_plays_per_hour?: number | null; + venue_package?: string | null; + estimated_impressions?: number | null; + daypart?: string | null; + } | null; + min_spend_per_package?: number | null; + } + )[]; + /** @example 100 */ + estimated_exposures?: number | null; + measurement?: { + type: string; + attribution: string; + window?: string | null; + reporting: string; + } | null; + delivery_measurement: { + provider: string; + notes?: string | null; + }; + reporting_capabilities?: { + available_reporting_frequencies: ('hourly' | 'daily' | 'monthly')[]; + expected_delay_minutes: number; + timezone: string; + supports_webhooks: boolean; + available_metrics: ( + | 'impressions' + | 'spend' + | 'clicks' + | 'ctr' + | 'video_completions' + | 'completion_rate' + | 'conversions' + | 'viewability' + | 'engagement_rate' + )[]; + } | null; + creative_policy?: { + co_branding: 'required' | 'optional' | 'none'; + landing_page: 'any' | 'retailer_site_only' | 'must_include_retailer'; + templates_available: boolean; + } | null; + /** @example true */ + is_custom?: boolean | null; + /** @example string */ + brief_relevance?: string | null; + /** @example string */ + expires_at?: string | null; + product_card?: { + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + manifest: { + [key: string]: unknown; + }; + } | null; + product_card_detailed?: { + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + manifest: { + [key: string]: unknown; + }; + } | null; + ext?: { + [key: string]: unknown; + } | null; + /** + * @description Internal database ID + * @example example_id_123 + */ + id: string; + /** + * @description Customer who owns this product + * @example 100 + */ + customer_id: number; + /** + * @description Source ADCP agent ID + * @example example_id_123 + */ + adcp_agent_id?: string; + /** + * @description Human-readable agent name + * @example Example Name + */ + sales_agent_name?: string; + /** + * @description Internal classification of inventory type + * @example premium + * @enum {string} + */ + inventory_type?: 'premium' | 'run_of_site' | 'targeted_package'; + /** + * Format: date-time + * @example string + */ + created_at: string; + /** + * Format: date-time + * @example string + */ + updated_at: string; }; TacticGetOutput: { /** @example 100 */ @@ -1943,200 +4730,1528 @@ export interface components { archivedAt?: string; }; MediaBuyCreate: { - /** @example example_id_123 */ - id: string; - /** @example 100 */ - tacticId: number; - /** @example 100 */ - customerId: number; - /** @example Example Name */ + /** + * @description ADCP media buy identifier + * @example example_id_123 + */ + media_buy_id: string; + /** + * @description Internal tactic ID + * @example 100 + */ + tactic_id: number; + /** + * @description Internal customer ID + * @example 100 + */ + customer_id: number; + /** + * @description Media buy name + * @example Example Name + */ name: string; - /** @example string */ + /** + * @description Media buy description + * @example string + */ description?: string; - /** @example [] */ + /** + * @description Internal status (DRAFT, ACTIVE, PAUSED, etc.) + * @example string + */ + status: string; + /** + * @description Pre-execution product configuration + * @example [] + */ products?: { - mediaProductId: string; - salesAgentId: string; - salesAgentName?: string; - budgetAmount?: number; - budgetCurrency?: string; - pricingCpm?: number; - pricingSignalCost?: number; - displayOrder?: number; - creativeFormats?: { + /** @description ADCP product identifier */ + product_id: string; + sales_agent_id: string; + sales_agent_name?: string; + /** @description ADCP budget field */ + budget?: number; + /** + * @description ADCP pacing field + * @enum {string} + */ + pacing?: 'asap' | 'even' | 'front_loaded'; + pricing_option_id?: string; + bid_price?: number; + display_order?: number; + creative_formats?: { agent_url: string; id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }[]; }[]; - /** @example [] */ + /** + * @description Post-execution ADCP packages (enriched) + * @example [] + */ packages?: { - packageId: string; - productIds: string[]; - impressions: number; - budget: number; - targetingOverlay: unknown; + package_id: string; + buyer_ref?: string | null; + product_id?: string | null; + budget?: number | null; + pacing?: ('even' | 'asap' | 'front_loaded') | null; + pricing_option_id?: string | null; + bid_price?: number | null; + impressions?: number | null; + targeting_overlay?: { + geo_country_any_of?: string[] | null; + geo_region_any_of?: string[] | null; + geo_metro_any_of?: string[] | null; + geo_postal_code_any_of?: string[] | null; + axe_include_segment?: string | null; + axe_exclude_segment?: string | null; + frequency_cap?: { + suppress_minutes: number; + } | null; + } | null; + creative_assignments?: + | { + creative_id: string; + weight?: number | null; + placement_ids?: string[] | null; + }[] + | null; + format_ids_to_provide?: + | { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[] + | null; + paused?: boolean | null; + ext?: { + [key: string]: unknown; + } | null; + /** @description Array of product IDs (enriched from joins) */ + product_ids?: string[]; + /** @description Full creative objects (enriched from joins) */ creatives: { - creativeId: string; + creative_id: string; name: string; - formatId: string; - mediaUrl: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ status: string; }[]; /** Format: date-time */ - createdAt: string; + created_at: string; /** Format: date-time */ - updatedAt: string; - salesAgentId?: string; - salesAgentName?: string; - pricingCpm?: number; - pricingSignalCost?: number; - bidPrice?: number; - pricingOptionId?: string; - creativeFormats?: { + updated_at: string; + sales_agent_id?: string; + sales_agent_name?: string; + creative_formats?: { agent_url: string; id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }[]; }[]; - /** @example [] */ + /** + * @description Full creative objects (enriched from joins) + * @example [] + */ creatives?: { - creativeId: string; + creative_id: string; name: string; - formatId: string; - mediaUrl: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ status: string; }[]; - pricing: { - cpm: number; - signalCost?: number; - totalCpm: number; - }; - /** @example string */ - status: string; + /** @description ADCP-specific metadata (from execute response) */ adcp?: { - mediaBuyId?: string; + media_buy_id?: string; status?: string; - webhookUrl?: string; + webhook_url?: string; }; + /** @description Performance metrics (from reporting) */ performance?: { impressions: number; spend: number; clicks: number; /** Format: date-time */ - lastUpdated?: string; + last_updated?: string; }; /** * Format: date-time + * @description Created timestamp * @example string */ - archivedAt?: string; + created_at: string; /** * Format: date-time + * @description Updated timestamp * @example string */ - createdAt: string; + updated_at: string; /** * Format: date-time + * @description Archived timestamp * @example string */ - updatedAt: string; + archived_at?: string | null; }; MediaBuyUpdate: { - /** @example example_id_123 */ - id: string; - /** @example 100 */ - tacticId: number; - /** @example 100 */ - customerId: number; - /** @example Example Name */ + /** + * @description ADCP media buy identifier + * @example example_id_123 + */ + media_buy_id: string; + /** + * @description Internal tactic ID + * @example 100 + */ + tactic_id: number; + /** + * @description Internal customer ID + * @example 100 + */ + customer_id: number; + /** + * @description Media buy name + * @example Example Name + */ name: string; - /** @example string */ + /** + * @description Media buy description + * @example string + */ description?: string; - /** @example [] */ + /** + * @description Internal status (DRAFT, ACTIVE, PAUSED, etc.) + * @example string + */ + status: string; + /** + * @description Pre-execution product configuration + * @example [] + */ products?: { - mediaProductId: string; - salesAgentId: string; - salesAgentName?: string; - budgetAmount?: number; - budgetCurrency?: string; - pricingCpm?: number; - pricingSignalCost?: number; - displayOrder?: number; - creativeFormats?: { + /** @description ADCP product identifier */ + product_id: string; + sales_agent_id: string; + sales_agent_name?: string; + /** @description ADCP budget field */ + budget?: number; + /** + * @description ADCP pacing field + * @enum {string} + */ + pacing?: 'asap' | 'even' | 'front_loaded'; + pricing_option_id?: string; + bid_price?: number; + display_order?: number; + creative_formats?: { agent_url: string; id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }[]; }[]; - /** @example [] */ + /** + * @description Post-execution ADCP packages (enriched) + * @example [] + */ packages?: { - packageId: string; - productIds: string[]; - impressions: number; - budget: number; - targetingOverlay: unknown; + package_id: string; + buyer_ref?: string | null; + product_id?: string | null; + budget?: number | null; + pacing?: ('even' | 'asap' | 'front_loaded') | null; + pricing_option_id?: string | null; + bid_price?: number | null; + impressions?: number | null; + targeting_overlay?: { + geo_country_any_of?: string[] | null; + geo_region_any_of?: string[] | null; + geo_metro_any_of?: string[] | null; + geo_postal_code_any_of?: string[] | null; + axe_include_segment?: string | null; + axe_exclude_segment?: string | null; + frequency_cap?: { + suppress_minutes: number; + } | null; + } | null; + creative_assignments?: + | { + creative_id: string; + weight?: number | null; + placement_ids?: string[] | null; + }[] + | null; + format_ids_to_provide?: + | { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[] + | null; + paused?: boolean | null; + ext?: { + [key: string]: unknown; + } | null; + /** @description Array of product IDs (enriched from joins) */ + product_ids?: string[]; + /** @description Full creative objects (enriched from joins) */ creatives: { - creativeId: string; + creative_id: string; name: string; - formatId: string; - mediaUrl: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ status: string; }[]; /** Format: date-time */ - createdAt: string; + created_at: string; /** Format: date-time */ - updatedAt: string; - salesAgentId?: string; - salesAgentName?: string; - pricingCpm?: number; - pricingSignalCost?: number; - bidPrice?: number; - pricingOptionId?: string; - creativeFormats?: { + updated_at: string; + sales_agent_id?: string; + sales_agent_name?: string; + creative_formats?: { agent_url: string; id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }[]; }[]; - /** @example [] */ + /** + * @description Full creative objects (enriched from joins) + * @example [] + */ creatives?: { - creativeId: string; + creative_id: string; name: string; - formatId: string; - mediaUrl: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ status: string; }[]; - pricing: { - cpm: number; - signalCost?: number; - totalCpm: number; - }; - /** @example string */ - status: string; + /** @description ADCP-specific metadata (from execute response) */ adcp?: { - mediaBuyId?: string; + media_buy_id?: string; status?: string; - webhookUrl?: string; + webhook_url?: string; }; + /** @description Performance metrics (from reporting) */ performance?: { impressions: number; spend: number; clicks: number; /** Format: date-time */ - lastUpdated?: string; + last_updated?: string; }; /** * Format: date-time + * @description Created timestamp * @example string */ - archivedAt?: string; + created_at: string; /** * Format: date-time + * @description Updated timestamp * @example string */ - createdAt: string; + updated_at: string; /** * Format: date-time + * @description Archived timestamp * @example string */ - updatedAt: string; + archived_at?: string | null; }; TacticUpdate: { /** @example 100 */ @@ -2429,7 +6544,7 @@ export interface operations { * @example { * "tool": "creative_sync_sales_agents", * "arguments": { - * "creativeId": "example_id_123" + * "creative_id": "example_id_123" * } * } */ @@ -2446,7 +6561,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeSyncSalesAgents']; + structuredContent: components['schemas']['SyncSalesAgentsOutput']; }; }; }; @@ -2488,8 +6603,11 @@ export interface operations { * @example { * "tool": "media_buy_create", * "arguments": { - * "tacticId": 100, - * "agentId": "example_id_123", + * "brand_manifest": null, + * "start_time": null, + * "end_time": "string", + * "tactic_id": 100, + * "agent_id": "example_id_123", * "name": "Example Name", * "products": [] * } @@ -2498,7 +6616,7 @@ export interface operations { 'application/json': { /** @enum {string} */ tool: 'media_buy_create'; - arguments: components['schemas']['CreateMediaBuyInput']; + arguments: components['schemas']['MediaBuyCreateInput']; }; }; }; @@ -2550,7 +6668,7 @@ export interface operations { * @example { * "tool": "media_buy_update", * "arguments": { - * "mediaBuyId": "example_id_123" + * "media_buy_id": "example_id_123" * } * } */ @@ -2609,7 +6727,7 @@ export interface operations { * @example { * "tool": "media_buy_delete", * "arguments": { - * "mediaBuyId": "example_id_123", + * "media_buy_id": "example_id_123", * "confirm": true * } * } @@ -2627,7 +6745,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyDelete']; + structuredContent: components['schemas']['DeleteMediaBuyOutput']; }; }; }; @@ -2669,7 +6787,7 @@ export interface operations { * @example { * "tool": "media_buy_execute", * "arguments": { - * "mediaBuyId": "example_id_123" + * "media_buy_id": "example_id_123" * } * } */ @@ -2686,7 +6804,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyExecute']; + structuredContent: components['schemas']['ExecuteMediaBuyOutput']; }; }; }; @@ -2728,7 +6846,7 @@ export interface operations { * @example { * "tool": "media_buy_get", * "arguments": { - * "mediaBuyId": "example_id_123" + * "media_buy_id": "example_id_123" * } * } */ @@ -2802,7 +6920,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyList']; + structuredContent: components['schemas']['ListMediaBuysOutput']; }; }; }; @@ -2844,8 +6962,8 @@ export interface operations { * @example { * "tool": "media_buy_validate_budget", * "arguments": { - * "tacticId": 100, - * "newBudgetAmount": 100 + * "tactic_id": 100, + * "new_budget_amount": 100 * } * } */ @@ -2862,7 +6980,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyValidateBudget']; + structuredContent: components['schemas']['ValidateMediaBuyBudgetOutput']; }; }; }; @@ -3196,21 +7314,23 @@ export interface operations { * @example { * "tool": "media_product_save", * "arguments": { - * "productId": "example_id_123", + * "product_id": "example_id_123", * "name": "Example Name", * "description": "string", - * "publisherId": "example_id_123", - * "publisherName": "Example Name", - * "deliveryType": "guaranteed", - * "inventoryType": "premium", - * "pricingModel": "auction" + * "publisher_properties": null, + * "format_ids": [], + * "delivery_type": null, + * "pricing_options": null, + * "delivery_measurement": { + * "provider": "example_id_123" + * } * } * } */ 'application/json': { /** @enum {string} */ tool: 'media_product_save'; - arguments: components['schemas']['SaveProductInput']; + arguments: components['schemas']['MediaProductSaveInput']; }; }; }; @@ -3220,7 +7340,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaProductSave']; + structuredContent: components['schemas']['MediaProductSaveOutput']; }; }; }; diff --git a/src/types/platform-api.ts b/src/types/platform-api.ts index 2449ff6..f2f3701 100644 --- a/src/types/platform-api.ts +++ b/src/types/platform-api.ts @@ -869,93 +869,650 @@ export interface components { }; AssignCreativeInput: { /** @example example_id_123 */ - creativeId: string; + creative_id: string; /** @example example_id_123 */ - campaignId: string; + campaign_id: string; }; - CreateCreativeInput: { - /** @example 100 */ - brandAgentId: number; + CreativeCreateInput: { /** @example example_id_123 */ - organizationId?: string; + creative_id: string; /** @example Example Name */ name: string; - /** @example string */ - description?: string; - /** - * @example ADCP - * @enum {string} - */ - formatSource?: 'ADCP' | 'CREATIVE_AGENT' | 'PUBLISHER'; - /** - * @description Format identifier. For ADCP sources, this should be a format ID string recognized by the target sales agent (e.g., display_300x250, video_1920x1080). Valid formats are agent-specific. - * @example example_id_123 - */ - formatId?: string; - /** @example https://example.com */ - mediaUrl?: string; - /** - * @description Optional: Upload assets inline with the creative. Each asset requires: name, contentType, data (base64), and assetType. - * @example [] - */ - assets?: { - /** @description Filename (e.g., banner.png) */ - name: string; - /** @description MIME type (e.g., image/png, image/jpeg) */ - contentType: string; - /** - * Format: byte - * @description Base64-encoded file data (without data:image/png;base64, prefix) - */ - data: string; - /** - * @description Type of asset - * @enum {string} - */ - assetType: 'image' | 'video' | 'audio' | 'logo' | 'font'; - /** @description Optional tags */ - tags?: string[]; - }[]; - content?: { - [key: string]: unknown; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; }; - /** - * @example CREATIVE_AGENT - * @enum {string} - */ - assemblyMethod?: 'CREATIVE_AGENT' | 'ACTIVATION' | 'PUBLISHER'; - /** - * @description Optional campaign ID (object ID) to assign creative to - * @example example_id_123 - */ - campaignId?: string; + /** @example [] */ + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + /** @example [] */ + tags?: string[] | null; + /** @example true */ + approved?: boolean | null; + /** @example 100 */ + weight?: number | null; + /** @example [] */ + placement_ids?: string[] | null; + /** @example 100 */ + brand_agent_id: number; + /** @example example_id_123 */ + organization_id?: string; + /** @example example_id_123 */ + campaign_id?: string; }; - UpdateCreativeInput: { + CreativeUpdateInput: { /** @example example_id_123 */ - creativeId: string; + creative_id: string; /** @example Example Name */ name?: string; - /** @example string */ - status?: string; + format_id?: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets?: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + /** @example [] */ + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + /** @example [] */ + tags?: string[] | null; + /** @example true */ + approved?: boolean | null; + /** @example 100 */ + weight?: number | null; + /** @example [] */ + placement_ids?: string[] | null; + /** + * @example PENDING + * @enum {string} + */ + status?: 'PENDING' | 'APPROVED' | 'AUTO_APPROVED' | 'CHANGES_REQUESTED' | 'REJECTED'; }; DeleteCreativeInput: { /** @example example_id_123 */ - creativeId: string; + creative_id: string; }; GetCreativeInput: { /** @example example_id_123 */ - creativeId: string; + creative_id: string; }; ListCreativesInput: { /** @example 100 */ - campaignId?: number; + campaign_id?: number; /** @example 100 */ - brandAgentId?: number; - /** - * @example ADCP - * @enum {string} - */ - formatSource?: 'ADCP' | 'CREATIVE_AGENT' | 'PUBLISHER'; + brand_agent_id?: number; /** * @example ACTIVE * @enum {string} @@ -970,11 +1527,11 @@ export interface components { ListLanguagesInput: Record; GetMediaBuyInput: { /** @example example_id_123 */ - mediaBuyId: string; + media_buy_id: string; }; ListMediaBuysInput: { /** @example 100 */ - tacticId?: number; + tactic_id?: number; /** * @example DRAFT * @enum {string} @@ -1079,11 +1636,11 @@ export interface components { }; ListAgentsInput: { /** - * @description Filter by agent type (SALES or OUTCOME) + * @description Filter by agent type (SALES, OUTCOME, or SIGNAL) * @example SALES * @enum {string} */ - type?: 'SALES' | 'OUTCOME'; + type?: 'SALES' | 'OUTCOME' | 'SIGNAL'; /** * @description Filter by status (PENDING, ACTIVE, DISABLED) * @example PENDING @@ -1224,6 +1781,13 @@ export interface components { manifestUrl?: string; /** @example 100 */ customerId: number; + /** + * Format: int64 + * @example 100 + */ + seatId?: number | null; + /** @example [] */ + countryCodes?: string[]; /** * Format: date-time * @example string @@ -1290,121 +1854,1093 @@ export interface components { }; CreativeGet: { /** @example example_id_123 */ - creativeId: string; + creative_id: string; /** @example Example Name */ name: string; - /** @example string */ + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + /** @example [] */ + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + /** @example [] */ + tags?: string[] | null; + /** @example true */ + approved?: boolean | null; + /** @example 100 */ + weight?: number | null; + /** @example [] */ + placement_ids?: string[] | null; + /** + * @description Internal creative status + * @example string + */ status: string; - /** @example example_id_123 */ - campaignId?: string; + /** + * @description Associated campaign ID + * @example example_id_123 + */ + campaign_id?: string; /** * Format: date-time * @example string */ - createdAt: string; + created_at: string; /** * Format: date-time * @example string */ - updatedAt: string; + updated_at: string; }; MediaBuyGet: { - /** @example example_id_123 */ - id: string; - /** @example 100 */ - tacticId: number; - /** @example 100 */ - customerId: number; - /** @example Example Name */ + /** + * @description ADCP media buy identifier + * @example example_id_123 + */ + media_buy_id: string; + /** + * @description Internal tactic ID + * @example 100 + */ + tactic_id: number; + /** + * @description Internal customer ID + * @example 100 + */ + customer_id: number; + /** + * @description Media buy name + * @example Example Name + */ name: string; - /** @example string */ + /** + * @description Media buy description + * @example string + */ description?: string; - /** @example [] */ + /** + * @description Internal status (DRAFT, ACTIVE, PAUSED, etc.) + * @example string + */ + status: string; + /** + * @description Pre-execution product configuration + * @example [] + */ products?: { - mediaProductId: string; - salesAgentId: string; - salesAgentName?: string; - budgetAmount?: number; - budgetCurrency?: string; - pricingCpm?: number; - pricingSignalCost?: number; - displayOrder?: number; - creativeFormats?: { + /** @description ADCP product identifier */ + product_id: string; + sales_agent_id: string; + sales_agent_name?: string; + /** @description ADCP budget field */ + budget?: number; + /** + * @description ADCP pacing field + * @enum {string} + */ + pacing?: 'asap' | 'even' | 'front_loaded'; + pricing_option_id?: string; + bid_price?: number; + display_order?: number; + creative_formats?: { agent_url: string; id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }[]; }[]; - /** @example [] */ + /** + * @description Post-execution ADCP packages (enriched) + * @example [] + */ packages?: { - packageId: string; - productIds: string[]; - impressions: number; - budget: number; - targetingOverlay: unknown; + package_id: string; + buyer_ref?: string | null; + product_id?: string | null; + budget?: number | null; + pacing?: ('even' | 'asap' | 'front_loaded') | null; + pricing_option_id?: string | null; + bid_price?: number | null; + impressions?: number | null; + targeting_overlay?: { + geo_country_any_of?: string[] | null; + geo_region_any_of?: string[] | null; + geo_metro_any_of?: string[] | null; + geo_postal_code_any_of?: string[] | null; + axe_include_segment?: string | null; + axe_exclude_segment?: string | null; + frequency_cap?: { + suppress_minutes: number; + } | null; + } | null; + creative_assignments?: + | { + creative_id: string; + weight?: number | null; + placement_ids?: string[] | null; + }[] + | null; + format_ids_to_provide?: + | { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[] + | null; + paused?: boolean | null; + ext?: { + [key: string]: unknown; + } | null; + /** @description Array of product IDs (enriched from joins) */ + product_ids?: string[]; + /** @description Full creative objects (enriched from joins) */ creatives: { - creativeId: string; + creative_id: string; name: string; - formatId: string; - mediaUrl: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ status: string; }[]; /** Format: date-time */ - createdAt: string; + created_at: string; /** Format: date-time */ - updatedAt: string; - salesAgentId?: string; - salesAgentName?: string; - pricingCpm?: number; - pricingSignalCost?: number; - bidPrice?: number; - pricingOptionId?: string; - creativeFormats?: { + updated_at: string; + sales_agent_id?: string; + sales_agent_name?: string; + creative_formats?: { agent_url: string; id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }[]; }[]; - /** @example [] */ + /** + * @description Full creative objects (enriched from joins) + * @example [] + */ creatives?: { - creativeId: string; + creative_id: string; name: string; - formatId: string; - mediaUrl: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ status: string; }[]; - pricing: { - cpm: number; - signalCost?: number; - totalCpm: number; - }; - /** @example string */ - status: string; + /** @description ADCP-specific metadata (from execute response) */ adcp?: { - mediaBuyId?: string; + media_buy_id?: string; status?: string; - webhookUrl?: string; + webhook_url?: string; }; + /** @description Performance metrics (from reporting) */ performance?: { impressions: number; spend: number; clicks: number; /** Format: date-time */ - lastUpdated?: string; + last_updated?: string; }; /** * Format: date-time + * @description Created timestamp * @example string */ - archivedAt?: string; + created_at: string; /** * Format: date-time + * @description Updated timestamp * @example string */ - createdAt: string; + updated_at: string; /** * Format: date-time + * @description Archived timestamp * @example string */ - updatedAt: string; + archived_at?: string | null; }; TacticGet: { /** @example 100 */ @@ -1689,21 +3225,21 @@ export interface components { */ count: number; }; - CreativeAssign: { + AssignCreativeOutput: { /** @example true */ success: boolean; /** @example example_id_123 */ - creativeId: string; + creative_id: string; /** @example example_id_123 */ - campaignId: string; + campaign_id: string; }; - CreativeDelete: { + DeleteCreativeOutput: { /** @example true */ success: boolean; /** @example example_id_123 */ id: string; }; - CreativeList: { + ListCreativesOutput: { /** @example [] */ items: components['schemas']['CreativeGetOutput'][]; /** @example 100 */ @@ -1727,7 +3263,7 @@ export interface components { displayName: string; }[]; }; - MediaBuyList: { + ListMediaBuysOutput: { /** @example 100 */ total: number; /** @example [] */ @@ -1851,21 +3387,256 @@ export interface components { total: number; /** @example [] */ items: { - id: string; - productId: string; + product_id: string; name: string; - salesAgent?: string; - salesAgentId?: string; - salesAgentName?: string; - /** @enum {string} */ - deliveryType: 'guaranteed' | 'non_guaranteed'; - format?: string; - creativeFormats?: - | string[] + description: string; + publisher_properties: ( | { - agent_url: string; - id: string; - }[]; + publisher_domain: string; + /** @enum {string} */ + selection_type: 'all'; + } + | { + publisher_domain: string; + /** @enum {string} */ + selection_type: 'by_id'; + property_ids: string[]; + } + | { + publisher_domain: string; + /** @enum {string} */ + selection_type: 'by_tag'; + property_tags: string[]; + } + )[]; + format_ids: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + placements?: + | { + placement_id: string; + name: string; + description?: string | null; + format_ids?: + | { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[] + | null; + }[] + | null; + delivery_type: 'guaranteed' | 'non_guaranteed'; + pricing_options: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + view_threshold: + | number + | { + duration_seconds: number; + }; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number | null; + sov_percentage?: number | null; + loop_duration_seconds?: number | null; + min_plays_per_hour?: number | null; + venue_package?: string | null; + estimated_impressions?: number | null; + daypart?: string | null; + } | null; + min_spend_per_package?: number | null; + } + )[]; + estimated_exposures?: number | null; + measurement?: { + type: string; + attribution: string; + window?: string | null; + reporting: string; + } | null; + delivery_measurement: { + provider: string; + notes?: string | null; + }; + reporting_capabilities?: { + available_reporting_frequencies: ('hourly' | 'daily' | 'monthly')[]; + expected_delay_minutes: number; + timezone: string; + supports_webhooks: boolean; + available_metrics: ( + | 'impressions' + | 'spend' + | 'clicks' + | 'ctr' + | 'video_completions' + | 'completion_rate' + | 'conversions' + | 'viewability' + | 'engagement_rate' + )[]; + } | null; + creative_policy?: { + co_branding: 'required' | 'optional' | 'none'; + landing_page: 'any' | 'retailer_site_only' | 'must_include_retailer'; + templates_available: boolean; + } | null; + is_custom?: boolean | null; + brief_relevance?: string | null; + expires_at?: string | null; + product_card?: { + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + manifest: { + [key: string]: unknown; + }; + } | null; + product_card_detailed?: { + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + manifest: { + [key: string]: unknown; + }; + } | null; + ext?: { + [key: string]: unknown; + } | null; + /** @description Internal database ID */ + id: string; + /** @description Customer who owns this product */ + customer_id: number; + /** @description Source ADCP agent ID */ + adcp_agent_id?: string; + /** @description Human-readable agent name */ + sales_agent_name?: string; + /** + * @description Internal classification of inventory type + * @enum {string} + */ + inventory_type?: 'premium' | 'run_of_site' | 'targeted_package'; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; }[]; }; AgentGet: @@ -1873,7 +3644,7 @@ export interface components { agentId: string; name: string; /** @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; status: string; relationship: string; endpointUrl: string; @@ -1891,7 +3662,7 @@ export interface components { agentId: string; name: string; /** @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; status: string; relationship: string; endpointUrl: string; @@ -1915,7 +3686,7 @@ export interface components { agentId: string; name: string; /** @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; status: string; relationship: string; endpointUrl: string; @@ -1925,7 +3696,7 @@ export interface components { agentId: string; name: string; /** @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; status: string; relationship: string; endpointUrl: string; @@ -2259,6 +4030,13 @@ export interface components { manifestUrl?: string; /** @example 100 */ customerId: number; + /** + * Format: int64 + * @example 100 + */ + seatId?: number | null; + /** @example [] */ + countryCodes?: string[]; /** * Format: date-time * @example string @@ -2325,121 +4103,1093 @@ export interface components { }; CreativeGetOutput: { /** @example example_id_123 */ - creativeId: string; + creative_id: string; /** @example Example Name */ name: string; - /** @example string */ + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + /** @example [] */ + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + /** @example [] */ + tags?: string[] | null; + /** @example true */ + approved?: boolean | null; + /** @example 100 */ + weight?: number | null; + /** @example [] */ + placement_ids?: string[] | null; + /** + * @description Internal creative status + * @example string + */ status: string; - /** @example example_id_123 */ - campaignId?: string; + /** + * @description Associated campaign ID + * @example example_id_123 + */ + campaign_id?: string; /** * Format: date-time * @example string */ - createdAt: string; + created_at: string; /** * Format: date-time * @example string */ - updatedAt: string; + updated_at: string; }; MediaBuyGetOutput: { - /** @example example_id_123 */ - id: string; - /** @example 100 */ - tacticId: number; - /** @example 100 */ - customerId: number; - /** @example Example Name */ + /** + * @description ADCP media buy identifier + * @example example_id_123 + */ + media_buy_id: string; + /** + * @description Internal tactic ID + * @example 100 + */ + tactic_id: number; + /** + * @description Internal customer ID + * @example 100 + */ + customer_id: number; + /** + * @description Media buy name + * @example Example Name + */ name: string; - /** @example string */ + /** + * @description Media buy description + * @example string + */ description?: string; - /** @example [] */ + /** + * @description Internal status (DRAFT, ACTIVE, PAUSED, etc.) + * @example string + */ + status: string; + /** + * @description Pre-execution product configuration + * @example [] + */ products?: { - mediaProductId: string; - salesAgentId: string; - salesAgentName?: string; - budgetAmount?: number; - budgetCurrency?: string; - pricingCpm?: number; - pricingSignalCost?: number; - displayOrder?: number; - creativeFormats?: { + /** @description ADCP product identifier */ + product_id: string; + sales_agent_id: string; + sales_agent_name?: string; + /** @description ADCP budget field */ + budget?: number; + /** + * @description ADCP pacing field + * @enum {string} + */ + pacing?: 'asap' | 'even' | 'front_loaded'; + pricing_option_id?: string; + bid_price?: number; + display_order?: number; + creative_formats?: { agent_url: string; id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }[]; }[]; - /** @example [] */ + /** + * @description Post-execution ADCP packages (enriched) + * @example [] + */ packages?: { - packageId: string; - productIds: string[]; - impressions: number; - budget: number; - targetingOverlay: unknown; + package_id: string; + buyer_ref?: string | null; + product_id?: string | null; + budget?: number | null; + pacing?: ('even' | 'asap' | 'front_loaded') | null; + pricing_option_id?: string | null; + bid_price?: number | null; + impressions?: number | null; + targeting_overlay?: { + geo_country_any_of?: string[] | null; + geo_region_any_of?: string[] | null; + geo_metro_any_of?: string[] | null; + geo_postal_code_any_of?: string[] | null; + axe_include_segment?: string | null; + axe_exclude_segment?: string | null; + frequency_cap?: { + suppress_minutes: number; + } | null; + } | null; + creative_assignments?: + | { + creative_id: string; + weight?: number | null; + placement_ids?: string[] | null; + }[] + | null; + format_ids_to_provide?: + | { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[] + | null; + paused?: boolean | null; + ext?: { + [key: string]: unknown; + } | null; + /** @description Array of product IDs (enriched from joins) */ + product_ids?: string[]; + /** @description Full creative objects (enriched from joins) */ creatives: { - creativeId: string; + creative_id: string; name: string; - formatId: string; - mediaUrl: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ status: string; }[]; /** Format: date-time */ - createdAt: string; + created_at: string; /** Format: date-time */ - updatedAt: string; - salesAgentId?: string; - salesAgentName?: string; - pricingCpm?: number; - pricingSignalCost?: number; - bidPrice?: number; - pricingOptionId?: string; - creativeFormats?: { + updated_at: string; + sales_agent_id?: string; + sales_agent_name?: string; + creative_formats?: { agent_url: string; id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }[]; }[]; - /** @example [] */ + /** + * @description Full creative objects (enriched from joins) + * @example [] + */ creatives?: { - creativeId: string; + creative_id: string; name: string; - formatId: string; - mediaUrl: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ status: string; }[]; - pricing: { - cpm: number; - signalCost?: number; - totalCpm: number; - }; - /** @example string */ - status: string; + /** @description ADCP-specific metadata (from execute response) */ adcp?: { - mediaBuyId?: string; + media_buy_id?: string; status?: string; - webhookUrl?: string; + webhook_url?: string; }; + /** @description Performance metrics (from reporting) */ performance?: { impressions: number; spend: number; clicks: number; /** Format: date-time */ - lastUpdated?: string; + last_updated?: string; }; /** * Format: date-time + * @description Created timestamp * @example string */ - archivedAt?: string; + created_at: string; /** * Format: date-time + * @description Updated timestamp * @example string */ - createdAt: string; + updated_at: string; /** * Format: date-time + * @description Archived timestamp * @example string */ - updatedAt: string; + archived_at?: string | null; }; TacticGetOutput: { /** @example 100 */ @@ -2486,6 +5236,13 @@ export interface components { manifestUrl?: string; /** @example 100 */ customerId: number; + /** + * Format: int64 + * @example 100 + */ + seatId?: number | null; + /** @example [] */ + countryCodes?: string[]; /** * Format: date-time * @example string @@ -2511,6 +5268,13 @@ export interface components { manifestUrl?: string; /** @example 100 */ customerId: number; + /** + * Format: int64 + * @example 100 + */ + seatId?: number | null; + /** @example [] */ + countryCodes?: string[]; /** * Format: date-time * @example string @@ -2560,43 +5324,659 @@ export interface components { }; CreativeCreate: { /** @example example_id_123 */ - creativeId: string; + creative_id: string; /** @example Example Name */ name: string; - /** @example string */ + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + /** @example [] */ + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + /** @example [] */ + tags?: string[] | null; + /** @example true */ + approved?: boolean | null; + /** @example 100 */ + weight?: number | null; + /** @example [] */ + placement_ids?: string[] | null; + /** + * @description Internal creative status + * @example string + */ status: string; - /** @example example_id_123 */ - campaignId?: string; + /** + * @description Associated campaign ID + * @example example_id_123 + */ + campaign_id?: string; /** * Format: date-time * @example string */ - createdAt: string; + created_at: string; /** * Format: date-time * @example string */ - updatedAt: string; + updated_at: string; }; CreativeUpdate: { /** @example example_id_123 */ - creativeId: string; + creative_id: string; /** @example Example Name */ name: string; - /** @example string */ + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + /** @example [] */ + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + /** @example [] */ + tags?: string[] | null; + /** @example true */ + approved?: boolean | null; + /** @example 100 */ + weight?: number | null; + /** @example [] */ + placement_ids?: string[] | null; + /** + * @description Internal creative status + * @example string + */ status: string; - /** @example example_id_123 */ - campaignId?: string; + /** + * @description Associated campaign ID + * @example example_id_123 + */ + campaign_id?: string; /** * Format: date-time * @example string */ - createdAt: string; + created_at: string; /** * Format: date-time * @example string */ - updatedAt: string; + updated_at: string; }; }; responses: never; @@ -4092,8 +7472,8 @@ export interface operations { * @example { * "tool": "creative_assign", * "arguments": { - * "creativeId": "example_id_123", - * "campaignId": "example_id_123" + * "creative_id": "example_id_123", + * "campaign_id": "example_id_123" * } * } */ @@ -4110,7 +7490,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeAssign']; + structuredContent: components['schemas']['AssignCreativeOutput']; }; }; }; @@ -4152,15 +7532,21 @@ export interface operations { * @example { * "tool": "creative_create", * "arguments": { - * "brandAgentId": 100, - * "name": "Example Name" + * "creative_id": "example_id_123", + * "name": "Example Name", + * "format_id": { + * "agent_url": "https://example.com", + * "id": "example_id_123" + * }, + * "assets": null, + * "brand_agent_id": 100 * } * } */ 'application/json': { /** @enum {string} */ tool: 'creative_create'; - arguments: components['schemas']['CreateCreativeInput']; + arguments: components['schemas']['CreativeCreateInput']; }; }; }; @@ -4212,14 +7598,14 @@ export interface operations { * @example { * "tool": "creative_update", * "arguments": { - * "creativeId": "example_id_123" + * "creative_id": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ tool: 'creative_update'; - arguments: components['schemas']['UpdateCreativeInput']; + arguments: components['schemas']['CreativeUpdateInput']; }; }; }; @@ -4271,7 +7657,7 @@ export interface operations { * @example { * "tool": "creative_delete", * "arguments": { - * "creativeId": "example_id_123" + * "creative_id": "example_id_123" * } * } */ @@ -4288,7 +7674,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeDelete']; + structuredContent: components['schemas']['DeleteCreativeOutput']; }; }; }; @@ -4330,7 +7716,7 @@ export interface operations { * @example { * "tool": "creative_get", * "arguments": { - * "creativeId": "example_id_123" + * "creative_id": "example_id_123" * } * } */ @@ -4404,7 +7790,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeList']; + structuredContent: components['schemas']['ListCreativesOutput']; }; }; }; @@ -4446,7 +7832,7 @@ export interface operations { * @example { * "tool": "media_buy_get", * "arguments": { - * "mediaBuyId": "example_id_123" + * "media_buy_id": "example_id_123" * } * } */ @@ -4520,7 +7906,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyList']; + structuredContent: components['schemas']['ListMediaBuysOutput']; }; }; }; From e5591126a944c499db024aad2874765ce15da4e9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 30 Nov 2025 02:38:01 +0000 Subject: [PATCH 2/2] chore: create changeset for type updates --- .changeset/auto-update-1764470281.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/auto-update-1764470281.md diff --git a/.changeset/auto-update-1764470281.md b/.changeset/auto-update-1764470281.md new file mode 100644 index 0000000..92bb89c --- /dev/null +++ b/.changeset/auto-update-1764470281.md @@ -0,0 +1,5 @@ +--- +"@scope3/agentic-client": patch +--- + +Update types from latest OpenAPI specification