diff --git a/.changeset/auto-update-1764210697.md b/.changeset/auto-update-1764210697.md new file mode 100644 index 0000000..92bb89c --- /dev/null +++ b/.changeset/auto-update-1764210697.md @@ -0,0 +1,5 @@ +--- +"@scope3/agentic-client": patch +--- + +Update types from latest OpenAPI specification diff --git a/partner-api.yaml b/partner-api.yaml index f74929f..4ed3afb 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,56 +3289,431 @@ 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: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + required: + - name + - type: string + po_number: + type: string + example: string + start_time: + anyOf: + - type: string + enum: + - asap + - type: string + end_time: + type: string + example: string + reporting_webhook: + allOf: + - type: object + properties: + url: + type: string + token: + 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: + 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: + type: object + additionalProperties: {} + ext: + 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: + type: array + items: + anyOf: + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + minItems: 2 + budget: type: number - minimum: 0 - exclusiveMinimum: true - budgetCurrency: + pacing: + 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: type: number - displayOrder: - type: integer - minimum: -9007199254740991 - maximum: 9007199254740991 + targeting_overlay: + type: object + properties: + geo_country_any_of: + type: array + items: + type: string + geo_region_any_of: + type: array + items: + type: string + geo_metro_any_of: + type: array + items: + type: string + geo_postal_code_any_of: + type: array + items: + type: string + axe_include_segment: + type: string + axe_exclude_segment: + type: string + frequency_cap: + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + creative_ids: + type: array + items: + type: string creatives: type: array items: @@ -3345,41 +3724,764 @@ 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: + type: number + height: + type: number + duration_ms: + 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: + type: string + alt_text: + 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: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + required: + - name + - type: string + product_selectors: + type: object + properties: + manifest_skus: + type: array + items: + type: string + manifest_tags: + type: array + items: + type: string + manifest_category: + type: string + manifest_query: + type: string + offerings: + type: array + items: + type: object + properties: + name: + type: string + description: + type: string + assets: + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + type: object + properties: + tags: + type: array + items: + type: string + asset_types: + 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: + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + type: string + required: + - url + inputs: + type: array + items: type: object properties: - url: + name: + type: string + macros: + type: object + additionalProperties: + type: string + context_description: type: string - width: - type: number - height: - type: number required: - - url - click_url: - type: string + - name + tags: + type: array + items: + type: string + approved: + type: boolean + weight: + type: number + placement_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 required: - creative_id - name - format_id + - assets + ext: + 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,119 +4491,875 @@ 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: + type: number + height: + type: number + duration_ms: + 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: - - DRAFT - - PENDING_APPROVAL - - ACTIVE - - PAUSED - - COMPLETED - - FAILED - - REJECTED + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + format: + type: string + alt_text: + 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: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + required: + - name + - type: string + product_selectors: + type: object + properties: + manifest_skus: + type: array + items: + type: string + manifest_tags: + type: array + items: + type: string + manifest_category: + type: string + manifest_query: + type: string + offerings: + type: array + items: + type: object + properties: + name: + type: string + description: + type: string + assets: + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + type: object + properties: + tags: + type: array + items: + type: string + asset_types: + 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: + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + type: string + required: + - url + inputs: + type: array + items: + type: object + properties: + name: + type: string + macros: + type: object + additionalProperties: + type: string + context_description: + type: string + required: + - name + tags: + type: array + items: + type: string + approved: + type: boolean + weight: + type: number + placement_ids: + 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 + - PAUSED + - COMPLETED + - 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: + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + bid_price: + type: number + required: + - product_id + - budget + example: [] packages: type: array items: type: object properties: - packageId: + package_id: type: string - creativeIds: + budget: + type: number + pacing: + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + bid_price: + 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 +5386,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 +5481,25 @@ 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: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id standardFormatsOnly: description: Only return products accepting IAB standard formats type: boolean @@ -3642,10 +5519,10 @@ components: required: - brief - brandManifestUrl - SaveProductInput: + MediaProductSaveInput: type: object properties: - productId: + product_id: type: string example: example_id_123 name: @@ -3654,93 +5531,1029 @@ 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: + type: number + height: + type: number + duration_ms: + 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 + placements: + type: array + items: + anyOf: + - type: object + properties: + placement_id: + type: string + name: + type: string + description: + type: string + format_ids: + type: array + items: + anyOf: + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + minItems: 2 + required: + - placement_id + - name + - type: object + properties: + placement_id: + type: string + name: + type: string + description: + type: string + format_ids: + type: array + items: + anyOf: + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + 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: + 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: + type: number + p50: + type: number + p75: + type: number + p90: + type: number + required: + - floor + min_spend_per_package: + 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: + 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: + type: number + p50: + type: number + p75: + type: number + p90: + type: number + required: + - floor + min_spend_per_package: + 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: + 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: + 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: + 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: + type: number + required: + - demographic + min_spend_per_package: + 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: + type: object + properties: + duration_hours: + type: number + sov_percentage: + type: number + loop_duration_seconds: + type: number + min_plays_per_hour: + type: number + venue_package: + type: string + estimated_impressions: + type: number + daypart: + type: string + min_spend_per_package: + 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: + 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: + type: number + p50: + type: number + p75: + type: number + p90: + type: number + required: + - floor + min_spend_per_package: + 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: + 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: + type: number + p50: + type: number + p75: + type: number + p90: + type: number + required: + - floor + min_spend_per_package: + 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: + 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: + 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: + 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: + type: number + required: + - demographic + min_spend_per_package: + 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: + type: object + properties: + duration_hours: + type: number + sov_percentage: + type: number + loop_duration_seconds: + type: number + min_plays_per_hour: + type: number + venue_package: + type: string + estimated_impressions: + type: number + daypart: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + minItems: 2 + example: [] + estimated_exposures: + type: number + example: 100 + measurement: + type: object + properties: + type: + type: string + attribution: + type: string + window: + type: string + reporting: + type: string + required: + - type + - attribution + - reporting + delivery_measurement: + type: object + properties: + provider: + type: string + notes: + type: string + required: + - provider + reporting_capabilities: + 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 + creative_policy: + 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: + type: boolean + example: true + brief_relevance: + type: string + example: string + expires_at: + type: string + example: string + product_card: + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + product_card_detailed: + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + ext: + type: object + additionalProperties: {} + customerId: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + adcpAgentId: + type: string + example: example_id_123 + required: + - product_id + - name + - description + - publisher_properties + - format_ids + - delivery_type + - pricing_options + - delivery_measurement + ListProductsInput: + type: object + properties: + take: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 skip: type: integer minimum: 0 @@ -3767,11 +6580,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) @@ -3808,6 +6622,7 @@ components: enum: - SALES - OUTCOME + - SIGNAL example: SALES name: description: Agent name @@ -4207,462 +7022,3099 @@ components: tacticId: type: number example: 100 - campaignId: - type: string - example: example_id_123 - required: - - tacticId - - campaignId - UnlinkCampaignFromTacticInput: + 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: - tacticId: - type: number - example: 100 - campaignId: + media_buy_id: + description: ADCP media buy identifier type: string example: example_id_123 - required: - - tacticId - - campaignId - RegisterWebhookInput: - type: object - properties: - brandAgentId: + tactic_id: + description: Internal tactic ID 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: + 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 - authentication: - type: object - properties: - type: + 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: + type: number + height: + type: number + duration_ms: + 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: + type: string + product_id: + type: string + budget: + type: number + pacing: + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + pricing_option_id: + type: string + bid_price: + type: number + impressions: + type: number + targeting_overlay: + type: object + properties: + geo_country_any_of: + type: array + items: + type: string + geo_region_any_of: + type: array + items: + type: string + geo_metro_any_of: + type: array + items: + type: string + geo_postal_code_any_of: + type: array + items: + type: string + axe_include_segment: + type: string + axe_exclude_segment: + type: string + frequency_cap: + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + creative_assignments: + type: array + items: + type: object + properties: + creative_id: + type: string + weight: + type: number + placement_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - creative_id + format_ids_to_provide: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + paused: + type: boolean + ext: + type: object + additionalProperties: {} + product_ids: + description: Array of product IDs (enriched from joins) + type: array + items: type: string - enum: - - bearer - - basic - - hmac - credentials: + 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: + type: number + height: + type: number + duration_ms: + 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: + type: string + alt_text: + 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: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + required: + - name + - type: string + product_selectors: + type: object + properties: + manifest_skus: + type: array + items: + type: string + manifest_tags: + type: array + items: + type: string + manifest_category: + type: string + manifest_query: + type: string + offerings: + type: array + items: + type: object + properties: + name: + type: string + description: + type: string + assets: + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + type: object + properties: + tags: + type: array + items: + type: string + asset_types: + 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: + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + type: string + required: + - url + inputs: + type: array + items: + type: object + properties: + name: + type: string + macros: + type: object + additionalProperties: + type: string + context_description: + type: string + required: + - name + tags: + type: array + items: + type: string + approved: + type: boolean + weight: + type: number + placement_ids: + 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: + type: number + height: + type: number + duration_ms: + 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: + type: number + height: + type: number + duration_ms: + 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: + type: string + alt_text: + 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: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + required: + - name + - type: string + product_selectors: + type: object + properties: + manifest_skus: + type: array + items: + type: string + manifest_tags: + type: array + items: + type: string + manifest_category: + type: string + manifest_query: + type: string + offerings: + type: array + items: + type: object + properties: + name: + type: string + description: + type: string + assets: + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + type: object + properties: + tags: + type: array + items: + type: string + asset_types: + 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: + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + type: string + required: + - url + inputs: + type: array + items: + type: object + properties: + name: + type: string + macros: + type: object + additionalProperties: + type: string + context_description: + type: string + required: + - name + tags: + type: array + items: type: string - required: - - type - - credentials - required: - - url - - method - eventTypes: - type: array - items: - type: string + approved: + type: boolean + weight: + type: number + placement_ids: + 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: [] - filters: + adcp: + description: ADCP-specific metadata (from execute response) 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: + media_buy_id: type: string - enum: - - info - - warning - - critical - retryPolicy: + status: + type: string + webhook_url: + type: string + performance: + description: Performance metrics (from reporting) type: object properties: - maxRetries: - type: integer - minimum: 0 - maximum: 9007199254740991 - backoffMultiplier: + impressions: type: number - minimum: 0 - exclusiveMinimum: true - maxBackoffSeconds: + spend: 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 + 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 - 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 + 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 - 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: + - media_buy_id + - tactic_id + - customer_id + - name + - status + - created_at + - updated_at + MediaProductSave: type: object properties: - id: + product_id: type: string example: example_id_123 - tacticId: - type: number - example: 100 - customerId: + 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: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + example: [] + placements: + type: array + items: + anyOf: + - type: object + properties: + placement_id: + type: string + name: + type: string + description: + type: string + format_ids: + type: array + items: + anyOf: + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + minItems: 2 + required: + - placement_id + - name + - type: object + properties: + placement_id: + type: string + name: + type: string + description: + type: string + format_ids: + type: array + items: + anyOf: + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + 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: + 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: + type: number + p50: + type: number + p75: + type: number + p90: + type: number + required: + - floor + min_spend_per_package: + 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: + 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: + type: number + p50: + type: number + p75: + type: number + p90: + type: number + required: + - floor + min_spend_per_package: + 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: + 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: + 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: + 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: + type: number + required: + - demographic + min_spend_per_package: + 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: + type: object + properties: + duration_hours: + type: number + sov_percentage: + type: number + loop_duration_seconds: + type: number + min_plays_per_hour: + type: number + venue_package: + type: string + estimated_impressions: + type: number + daypart: + type: string + min_spend_per_package: + 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: + 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: + type: number + p50: + type: number + p75: + type: number + p90: + type: number + required: + - floor + min_spend_per_package: + 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: + 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: + type: number + p50: + type: number + p75: + type: number + p90: + type: number + required: + - floor + min_spend_per_package: + 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: + 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: + 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: + 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: + type: number + required: + - demographic + min_spend_per_package: + 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: + type: object + properties: + duration_hours: + type: number + sov_percentage: + type: number + loop_duration_seconds: + type: number + min_plays_per_hour: + type: number + venue_package: + type: string + estimated_impressions: + type: number + daypart: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + minItems: 2 + example: [] + estimated_exposures: 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: type: object properties: - cpm: - type: number - signalCost: - type: number - totalCpm: - type: number + type: + type: string + attribution: + type: string + window: + type: string + reporting: + type: string required: - - cpm - - totalCpm - status: - type: string - example: string - adcp: + - type + - attribution + - reporting + delivery_measurement: type: object properties: - mediaBuyId: + provider: type: string - status: + notes: type: string - webhookUrl: + required: + - provider + reporting_capabilities: + 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 - performance: + 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 + creative_policy: + 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: + type: boolean + example: true + brief_relevance: + type: string + example: string + expires_at: + type: string + example: string + product_card: + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + product_card_detailed: type: object properties: - impressions: - type: number - spend: - type: number - clicks: - type: number - lastUpdated: - 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: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + manifest: + type: object + additionalProperties: {} required: - - impressions - - spend - - clicks - archivedAt: + - format_id + - manifest + ext: + type: object + additionalProperties: {} + id: + description: Internal database ID 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: + 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 +10330,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 +10398,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 +10451,7 @@ components: - total - items additionalProperties: false - MediaBuyValidateBudget: + ValidateMediaBuyBudgetOutput: type: object properties: valid: @@ -5019,206 +10471,444 @@ components: minimum: 0 maximum: 9007199254740991 example: 100 - hasMore: - type: boolean - example: true + hasMore: + type: boolean + example: true + items: + type: array + items: + type: object + properties: + id: + type: string + type: + type: string + data: + type: object + additionalProperties: {} + read: + type: boolean + acknowledged: + type: boolean + 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))$ + required: + - id + - type + - data + - read + - acknowledged + - createdAt + additionalProperties: false + example: [] + required: + - total + - hasMore + - items + additionalProperties: false + NotificationsMarkRead: + type: object + properties: + success: + type: boolean + example: true + notificationId: + type: string + example: example_id_123 + required: + - success + - notificationId + additionalProperties: false + NotificationsMarkAcknowledged: + type: object + properties: + success: + type: boolean + example: true + notificationId: + type: string + example: example_id_123 + required: + - success + - notificationId + additionalProperties: false + NotificationsMarkAllRead: + type: object + properties: + success: + type: boolean + example: true + count: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + required: + - success + - count + additionalProperties: false + MediaProductDiscover: + type: object + properties: + success: + type: boolean + example: true + products_found: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + products_saved: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + successful_agents: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + failed_agents: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + products: + type: array + items: + $ref: '#/components/schemas/MediaProductSaveOutput' + example: [] + required: + - success + - products_found + - products_saved + - successful_agents + - failed_agents + - products + additionalProperties: false + MediaProductList: + type: object + properties: + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + items: + type: array + items: + $ref: '#/components/schemas/MediaProductSaveOutput' + example: [] + required: + - total + - items + additionalProperties: false + MediaProductSync: + type: object + properties: + success: + type: boolean + example: true + products_saved: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + required: + - success + - products_saved + 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 + 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))$ + customerAccountCount: + type: integer + minimum: 0 + maximum: 9007199254740991 + required: + - agentId + - name + - type + - status + - relationship + - endpointUrl + - protocol + - authenticationType + - createdAt + - updatedAt + - customerAccountCount + additionalProperties: false + AgentList: + type: object + properties: + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 items: type: array items: - type: object - properties: - id: - type: string - type: - type: string - data: - type: object - additionalProperties: {} - read: - type: boolean - acknowledged: - type: boolean - 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))$ - required: - - id - - type - - data - - read - - acknowledged - - createdAt - additionalProperties: false + 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 + required: + - agentId + - name + - type + - status + - relationship + - endpointUrl + - protocol + 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 + customerAccountCount: + type: integer + minimum: 0 + maximum: 9007199254740991 + required: + - agentId + - name + - type + - status + - relationship + - endpointUrl + - protocol + - customerAccountCount + additionalProperties: false example: [] required: - total - - hasMore - items additionalProperties: false - NotificationsMarkRead: + AgentRegister: type: object properties: - success: - type: boolean - example: true - notificationId: + agentId: type: string example: example_id_123 - required: - - success - - notificationId - additionalProperties: false - NotificationsMarkAcknowledged: - type: object - properties: - success: - type: boolean - example: true - notificationId: + name: type: string - example: example_id_123 - required: - - success - - notificationId - additionalProperties: false - NotificationsMarkAllRead: - type: object - properties: - success: - type: boolean - example: true - count: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 + example: Example Name + type: + type: string + enum: + - SALES + - OUTCOME + - SIGNAL + example: SALES + status: + type: string + example: string + endpointUrl: + type: string + example: https://example.com required: - - success - - count + - agentId + - name + - type + - status + - endpointUrl additionalProperties: false - MediaProductDiscover: + AgentUnregister: type: object properties: success: type: boolean example: true - productsFound: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - productsSaved: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - successfulAgents: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - failedAgents: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - 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 - example: [] + agentId: + type: string + example: example_id_123 + type: + type: string + enum: + - SALES + - OUTCOME + - SIGNAL + example: SALES required: - success - - productsFound - - productsSaved - - successfulAgents - - failedAgents - - products + - agentId + - type additionalProperties: false - MediaProductSave: + AgentUpdate: type: object properties: - id: - type: string - example: example_id_123 - productId: + agentId: type: string example: example_id_123 name: type: string example: Example Name - publisherId: + type: type: string - example: example_id_123 - publisherName: + enum: + - SALES + - OUTCOME + - SIGNAL + example: SALES + status: type: string - example: Example Name - customerId: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 + example: string + required: + - agentId + - name + - type + - status + additionalProperties: false + TacticCreate: + type: object + properties: + id: + type: number example: 100 - createdAt: + name: + type: string + example: Example Name + prompt: 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: + campaignId: + type: string + example: example_id_123 + channelCodes: + type: array + items: + type: string + example: [] + countryCodes: + type: array + items: + type: string + example: [] + createdAt: type: string format: date-time pattern: >- @@ -5226,15 +10916,26 @@ components: example: string required: - id - - productId - name - - publisherId - - publisherName - - customerId + - campaignId + - channelCodes + - countryCodes - createdAt - - updatedAt additionalProperties: false - MediaProductList: + TacticDelete: + type: object + properties: + success: + type: boolean + example: true + tacticId: + type: number + example: 100 + required: + - success + - tacticId + additionalProperties: false + TacticList: type: object properties: total: @@ -5245,176 +10946,147 @@ 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/TacticGetOutput' example: [] required: - total - items additionalProperties: false - MediaProductSync: + TacticLinkCampaign: type: object properties: success: type: boolean example: true - productsSaved: - type: integer - minimum: 0 - maximum: 9007199254740991 + tacticId: + type: number + example: 100 + campaignId: + type: string + example: example_id_123 + required: + - success + - tacticId + - campaignId + additionalProperties: false + TacticUnlinkCampaign: + type: object + properties: + success: + type: boolean + example: true + tacticId: + type: number example: 100 + campaignId: + type: string + example: example_id_123 required: - success - - productsSaved + - tacticId + - campaignId additionalProperties: false - AgentGet: - anyOf: - - type: object + WebhookRegister: + type: object + properties: + id: + type: string + example: example_id_123 + brandAgentId: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + endpoint: + type: object properties: - agentId: - type: string - name: - type: string - type: - type: string - enum: - - SALES - - OUTCOME - status: - type: string - relationship: - type: string - endpointUrl: + url: type: string - protocol: + method: 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 + - url + - method additionalProperties: false - - type: object + eventTypes: + type: array + items: + type: string + example: [] + filters: + 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: + 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 - 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))$ - customerAccountCount: + additionalProperties: false + 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: - - agentId - - name - - type - - status - - relationship - - endpointUrl - - protocol - - authenticationType - - createdAt - - updatedAt - - customerAccountCount + - maxRetries + - backoffMultiplier + - maxBackoffSeconds additionalProperties: false - AgentList: + status: + type: string + example: string + testResult: + type: object + properties: + success: + type: boolean + statusCode: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + error: + type: string + required: + - success + additionalProperties: false + required: + - id + - endpoint + - eventTypes + - retryPolicy + - status + - testResult + additionalProperties: false + WebhookList: type: object properties: total: @@ -5425,171 +11097,169 @@ components: items: type: array items: - 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 - required: - - agentId - - name - - type - - status - - relationship - - endpointUrl - - protocol - additionalProperties: false - - type: object + type: object + properties: + id: + type: string + status: + type: string + endpoint: + type: object properties: - agentId: - type: string - name: - type: string - type: - type: string - enum: - - SALES - - OUTCOME - status: - type: string - relationship: + url: type: string - endpointUrl: + method: type: string - protocol: + authenticationType: type: string - customerAccountCount: - type: integer - minimum: 0 - maximum: 9007199254740991 required: - - agentId - - name - - type - - status - - relationship - - endpointUrl - - protocol - - customerAccountCount + - url + - method additionalProperties: false + eventTypes: + type: array + items: + type: string + brandAgentId: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + failureCount: + type: integer + minimum: 0 + maximum: 9007199254740991 + lastSuccess: + 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))$ + lastFailure: + 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))$ + 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))$ + required: + - id + - status + - endpoint + - eventTypes + - failureCount + - createdAt + additionalProperties: false example: [] required: - total - items additionalProperties: false - AgentRegister: - type: object - properties: - agentId: - type: string - example: example_id_123 - name: - type: string - example: Example Name - type: - type: string - enum: - - SALES - - OUTCOME - example: SALES - status: - type: string - example: string - endpointUrl: - type: string - example: https://example.com - required: - - agentId - - name - - type - - status - - endpointUrl - additionalProperties: false - AgentUnregister: + WebhookDelete: type: object properties: success: type: boolean example: true - agentId: + webhookId: type: string example: example_id_123 - type: - type: string - enum: - - SALES - - OUTCOME - example: SALES required: - success - - agentId - - type + - webhookId additionalProperties: false - AgentUpdate: + CreateServiceTokenOutput: type: object properties: - agentId: + id: + description: Unique identifier for the service token + type: integer + format: int64 + example: 100 + customerId: + description: Customer ID that owns this token + type: number + example: 100 + seatId: + description: Seat ID if token is scoped to a specific seat + type: integer + format: int64 + example: 100 + userId: + description: User ID if token is scoped to a specific user + type: integer + format: int64 + example: 100 + organizationId: + description: Optional organization identifier for scoping the token type: string example: example_id_123 name: + description: Human-readable name of the token type: string example: Example Name - type: + description: + description: Description of the token purpose type: string - enum: - - SALES - - OUTCOME - example: SALES - status: + example: string + accessClientId: + description: The public client ID portion of the token credentials (safe to log) + type: string + example: example_id_123 + accessClientSecret: + description: The secret portion of the token credentials. ONLY returned on creation, never retrievable again! + type: string + example: string + expiresAt: + description: ISO 8601 timestamp when the token expires, if set + 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: + description: ISO 8601 timestamp when the token was created 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: - - agentId + - id + - customerId - name - - type - - status + - accessClientId + - accessClientSecret + - createdAt additionalProperties: false - TacticCreate: + UpdateServiceTokenOutput: type: object properties: id: - type: number + description: Unique identifier for the service token + type: integer + format: int64 example: 100 name: + description: Updated human-readable name of the token type: string example: Example Name - prompt: + description: + description: Updated description of the token purpose type: string example: string - campaignId: + expiresAt: + description: ISO 8601 timestamp when the token expires, if updated type: string - example: example_id_123 - channelCodes: - type: array - items: - type: string - example: [] - countryCodes: - type: array - items: - type: string - example: [] - createdAt: + 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: + description: ISO 8601 timestamp when the token was last updated type: string format: date-time pattern: >- @@ -5598,774 +11268,3173 @@ components: required: - id - name - - campaignId - - channelCodes - - countryCodes - - createdAt + - updatedAt additionalProperties: false - TacticDelete: + ArchiveServiceTokenOutput: type: object properties: - success: - type: boolean - example: true - tacticId: - type: number + id: + description: Unique identifier for the archived token + type: integer + format: int64 example: 100 + archivedAt: + description: ISO 8601 timestamp when the token was archived + 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: - - success - - tacticId + - id + - archivedAt additionalProperties: false - TacticList: + GetServiceTokenOutput: type: object properties: - total: + id: + description: Unique identifier for the service token type: integer - minimum: 0 - maximum: 9007199254740991 + format: int64 example: 100 - items: - type: array - items: - $ref: '#/components/schemas/TacticGetOutput' - example: [] - required: - - total - - items - additionalProperties: false - TacticLinkCampaign: - type: object - properties: - success: - type: boolean - example: true - tacticId: + customerId: + description: Customer ID that owns this token type: number example: 100 - campaignId: + seatId: + description: Seat ID if token is scoped to a specific seat + type: integer + format: int64 + example: 100 + userId: + description: User ID if token is scoped to a specific user + type: integer + format: int64 + example: 100 + organizationId: + description: Optional organization identifier for scoping the token + type: string + example: example_id_123 + name: + description: Human-readable name of the token + type: string + example: Example Name + description: + description: Description of the token purpose + type: string + example: string + accessClientId: + description: The public client ID portion of the token credentials (safe to log) type: string example: example_id_123 + accessClientSecret: + description: The secret portion of the token credentials. Only included if includeSecret=true was passed + type: string + example: string + expiresAt: + description: ISO 8601 timestamp when the token expires, if set + 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: + description: ISO 8601 timestamp when the token was created + 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: + description: ISO 8601 timestamp when the token was 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))$ + example: string + archivedAt: + description: ISO 8601 timestamp when the token was archived, if archived + 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: - - success - - tacticId - - campaignId + - id + - customerId + - name + - accessClientId + - createdAt + - updatedAt additionalProperties: false - TacticUnlinkCampaign: + ListServiceTokensOutput: type: object properties: - success: - type: boolean - example: true - tacticId: - type: number - example: 100 - campaignId: - type: string - example: example_id_123 + tokens: + description: 'Array of service tokens. Note: accessClientSecret is never included in list responses' + type: array + items: + type: object + properties: + id: + description: Unique identifier for the service token + type: integer + format: int64 + customerId: + description: Customer ID that owns this token + type: number + seatId: + description: Seat ID if token is scoped to a specific seat + type: integer + format: int64 + seatName: + description: Seat name if token is scoped to a specific seat + type: string + userId: + description: User ID if token is scoped to a specific user + type: integer + format: int64 + organizationId: + description: Optional organization identifier for scoping the token + type: string + name: + description: Human-readable name of the token + type: string + description: + description: Description of the token purpose + type: string + accessClientId: + description: The public client ID portion of the token credentials (safe to log) + type: string + expiresAt: + description: ISO 8601 timestamp when the token expires, if set + 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))$ + createdAt: + description: ISO 8601 timestamp when the token was created + 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: + description: ISO 8601 timestamp when the token was 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))$ + archivedAt: + description: ISO 8601 timestamp when the token was archived, if archived + 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: + - id + - customerId + - name + - accessClientId + - createdAt + - updatedAt + additionalProperties: false + example: [] + count: + description: Total number of tokens returned + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 required: - - success - - tacticId - - campaignId + - tokens + - count additionalProperties: false - WebhookRegister: + MediaBuyGetOutput: type: object properties: - id: + media_buy_id: + description: ADCP media buy identifier type: string example: example_id_123 - brandAgentId: + tactic_id: + description: Internal tactic ID type: integer exclusiveMinimum: true maximum: 9007199254740991 example: 100 - endpoint: - type: object - properties: - url: - type: string - method: - type: string - authenticationType: - type: string - required: - - url - - method - additionalProperties: false - eventTypes: + 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: string + 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: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + additionalProperties: false + required: + - product_id + - sales_agent_id + additionalProperties: false example: [] - filters: - type: object - properties: - campaigns: - type: array - items: + packages: + description: Post-execution ADCP packages (enriched) + type: array + items: + type: object + properties: + package_id: type: string - tactics: - type: array - items: + buyer_ref: type: string - creatives: - type: array - items: + product_id: type: string - mediaBuys: - type: array - items: + budget: + type: number + pacing: + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + pricing_option_id: type: string - metrics: - type: array - items: + bid_price: + type: number + impressions: + type: number + targeting_overlay: + type: object + properties: + geo_country_any_of: + type: array + items: + type: string + geo_region_any_of: + type: array + items: + type: string + geo_metro_any_of: + type: array + items: + type: string + geo_postal_code_any_of: + type: array + items: + type: string + axe_include_segment: + type: string + axe_exclude_segment: + type: string + frequency_cap: + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + additionalProperties: false + additionalProperties: false + creative_assignments: + type: array + items: + type: object + properties: + creative_id: + type: string + weight: + type: number + placement_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - creative_id + additionalProperties: false + format_ids_to_provide: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + additionalProperties: false + paused: + type: boolean + ext: + 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: + type: number + height: + type: number + duration_ms: + 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: + type: string + alt_text: + 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: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + additionalProperties: false + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + additionalProperties: false + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + additionalProperties: false + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + additionalProperties: false + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + additionalProperties: false + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + type: object + properties: + manifest_skus: + type: array + items: + type: string + manifest_tags: + type: array + items: + type: string + manifest_category: + type: string + manifest_query: + type: string + additionalProperties: false + offerings: + type: array + items: + type: object + properties: + name: + type: string + description: + type: string + assets: + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + type: object + properties: + tags: + type: array + items: + type: string + asset_types: + 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: + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + type: string + required: + - url + additionalProperties: false + inputs: + type: array + items: + type: object + properties: + name: + type: string + macros: + type: object + additionalProperties: + type: string + context_description: + type: string + required: + - name + additionalProperties: false + tags: + type: array + items: + type: string + approved: + type: boolean + weight: + type: number + placement_ids: + 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 - minSeverity: - type: string - additionalProperties: false - 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: - - maxRetries - - backoffMultiplier - - maxBackoffSeconds - additionalProperties: false - status: - type: string - example: string - testResult: - type: object - properties: - success: - type: boolean - statusCode: - type: integer - minimum: -9007199254740991 - maximum: 9007199254740991 - error: - type: string - required: - - success - additionalProperties: false - required: - - id - - endpoint - - eventTypes - - retryPolicy - - status - - testResult - additionalProperties: false - WebhookList: - type: object - properties: - total: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - items: + 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: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + additionalProperties: false + required: + - package_id + - creatives + - created_at + - updated_at + additionalProperties: false + example: [] + creatives: + description: Full creative objects (enriched from joins) type: array items: type: object properties: - id: + creative_id: type: string - status: + name: type: string - endpoint: + format_id: type: object properties: - url: - type: string - method: + agent_url: type: string - authenticationType: + id: type: string + width: + type: number + height: + type: number + duration_ms: + type: number required: - - url - - method + - agent_url + - id additionalProperties: false - eventTypes: + 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: + type: string + alt_text: + 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: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + additionalProperties: false + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + additionalProperties: false + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + additionalProperties: false + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + additionalProperties: false + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + additionalProperties: false + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + type: object + properties: + manifest_skus: + type: array + items: + type: string + manifest_tags: + type: array + items: + type: string + manifest_category: + type: string + manifest_query: + type: string + additionalProperties: false + offerings: + type: array + items: + type: object + properties: + name: + type: string + description: + type: string + assets: + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + type: object + properties: + tags: + type: array + items: + type: string + asset_types: + 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: + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + type: string + required: + - url + additionalProperties: false + inputs: + type: array + items: + type: object + properties: + name: + type: string + macros: + type: object + additionalProperties: + type: string + context_description: + type: string + required: + - name + additionalProperties: false + tags: type: array items: type: string - brandAgentId: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - failureCount: - type: integer - minimum: 0 - maximum: 9007199254740991 - lastSuccess: - 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))$ - lastFailure: - 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))$ - createdAt: + approved: + type: boolean + weight: + type: number + placement_ids: + 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))$ required: - - id + - creative_id + - name + - format_id + - assets - status - - endpoint - - eventTypes - - failureCount - - createdAt additionalProperties: false example: [] - required: - - total - - items - additionalProperties: false - WebhookDelete: - type: object - properties: - success: - type: boolean - example: true - webhookId: - type: string - example: example_id_123 - required: - - success - - webhookId - additionalProperties: false - CreateServiceTokenOutput: - type: object - properties: - id: - description: Unique identifier for the service token - type: integer - format: int64 - example: 100 - customerId: - description: Customer ID that owns this token - type: number - example: 100 - seatId: - description: Seat ID if token is scoped to a specific seat - type: integer - format: int64 - example: 100 - userId: - description: User ID if token is scoped to a specific user - type: integer - format: int64 - example: 100 - organizationId: - description: Optional organization identifier for scoping the token - type: string - example: example_id_123 - name: - description: Human-readable name of the token - type: string - example: Example Name - description: - description: Description of the token purpose - type: string - example: string - accessClientId: - description: The public client ID portion of the token credentials (safe to log) - type: string - example: example_id_123 - accessClientSecret: - description: The secret portion of the token credentials. ONLY returned on creation, never retrievable again! - type: string - example: string - expiresAt: - description: ISO 8601 timestamp when the token expires, if set - 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: - description: ISO 8601 timestamp when the token was created + 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 - required: - - id - - customerId - - name - - accessClientId - - accessClientSecret - - createdAt - additionalProperties: false - UpdateServiceTokenOutput: - type: object - properties: - id: - description: Unique identifier for the service token - type: integer - format: int64 - example: 100 - name: - description: Updated human-readable name of the token - type: string - example: Example Name - description: - description: Updated description of the token purpose - type: string - example: string - expiresAt: - description: ISO 8601 timestamp when the token expires, if updated + 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: - description: ISO 8601 timestamp when the token was last updated + 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 + - media_buy_id + - tactic_id + - customer_id - name - - updatedAt - additionalProperties: false - ArchiveServiceTokenOutput: - type: object - properties: - id: - description: Unique identifier for the archived token - type: integer - format: int64 - example: 100 - archivedAt: - description: ISO 8601 timestamp when the token was archived - 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 - - archivedAt + - status + - created_at + - updated_at additionalProperties: false - GetServiceTokenOutput: + MediaProductSaveOutput: type: object properties: - id: - description: Unique identifier for the service token - type: integer - format: int64 - example: 100 - customerId: - description: Customer ID that owns this token - type: number - example: 100 - seatId: - description: Seat ID if token is scoped to a specific seat - type: integer - format: int64 - example: 100 - userId: - description: User ID if token is scoped to a specific user - type: integer - format: int64 - example: 100 - organizationId: - description: Optional organization identifier for scoping the token + product_id: type: string example: example_id_123 name: - description: Human-readable name of the token type: string example: Example Name description: - description: Description of the token purpose - type: string - example: string - accessClientId: - description: The public client ID portion of the token credentials (safe to log) - type: string - example: example_id_123 - accessClientSecret: - description: The secret portion of the token credentials. Only included if includeSecret=true was passed type: string example: string - expiresAt: - description: ISO 8601 timestamp when the token expires, if set - 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: - description: ISO 8601 timestamp when the token was created - 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: - description: ISO 8601 timestamp when the token was 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))$ - example: string - archivedAt: - description: ISO 8601 timestamp when the token was archived, if archived - 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 - - customerId - - name - - accessClientId - - createdAt - - updatedAt - additionalProperties: false - ListServiceTokensOutput: - type: object - properties: - tokens: - description: 'Array of service tokens. Note: accessClientSecret is never included in list responses' + publisher_properties: type: array items: - type: object - properties: - id: - description: Unique identifier for the service token - type: integer - format: int64 - customerId: - description: Customer ID that owns this token - type: number - seatId: - description: Seat ID if token is scoped to a specific seat - type: integer - format: int64 - seatName: - description: Seat name if token is scoped to a specific seat - type: string - userId: - description: User ID if token is scoped to a specific user - type: integer - format: int64 - organizationId: - description: Optional organization identifier for scoping the token - type: string - name: - description: Human-readable name of the token - type: string - description: - description: Description of the token purpose - type: string - accessClientId: - description: The public client ID portion of the token credentials (safe to log) - type: string - expiresAt: - description: ISO 8601 timestamp when the token expires, if set - 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))$ - createdAt: - description: ISO 8601 timestamp when the token was created - 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: - description: ISO 8601 timestamp when the token was 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))$ - archivedAt: - description: ISO 8601 timestamp when the token was archived, if archived - 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: - - id - - customerId - - name - - accessClientId - - createdAt - - updatedAt - additionalProperties: false - example: [] - count: - description: Total number of tokens returned - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - required: - - tokens - - count - additionalProperties: false - MediaBuyGetOutput: - type: object - properties: - 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: + 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: - mediaProductId: - type: string - salesAgentId: + agent_url: type: string - salesAgentName: - type: string - budgetAmount: - type: number - budgetCurrency: + id: type: string - pricingCpm: + width: type: number - pricingSignalCost: + height: type: number - displayOrder: + duration_ms: type: number - creativeFormats: - type: array - items: - type: object - properties: - agent_url: - type: string - id: - type: string - required: - - agent_url - - id - additionalProperties: false required: - - mediaProductId - - salesAgentId + - agent_url + - id additionalProperties: false example: [] - packages: + placements: 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 - 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: - 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 - additionalProperties: false - required: - - packageId - - productIds - - impressions - - budget - - targetingOverlay - - creatives - - createdAt - - updatedAt - additionalProperties: false + anyOf: + - type: object + properties: + placement_id: + type: string + name: + type: string + description: + type: string + format_ids: + type: array + items: + anyOf: + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + additionalProperties: false + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + 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: + type: string + format_ids: + type: array + items: + anyOf: + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + additionalProperties: false + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + additionalProperties: false + minItems: 2 + required: + - placement_id + - name + additionalProperties: false + minItems: 2 example: [] - creatives: + delivery_type: + anyOf: + - type: string + enum: + - guaranteed + - type: string + enum: + - non_guaranteed + pricing_options: 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: + - 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: + 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: + type: number + p50: + type: number + p75: + type: number + p90: + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + 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: + 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: + type: number + p50: + type: number + p75: + type: number + p90: + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + 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: + 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: + 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: + 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: + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + 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: + type: object + properties: + duration_hours: + type: number + sov_percentage: + type: number + loop_duration_seconds: + type: number + min_plays_per_hour: + type: number + venue_package: + type: string + estimated_impressions: + type: number + daypart: + type: string + additionalProperties: false + min_spend_per_package: + 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: + 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: + type: number + p50: + type: number + p75: + type: number + p90: + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + 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: + 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: + type: number + p50: + type: number + p75: + type: number + p90: + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + 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: + 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: + 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: + 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: + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + 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: + type: object + properties: + duration_hours: + type: number + sov_percentage: + type: number + loop_duration_seconds: + type: number + min_plays_per_hour: + type: number + venue_package: + type: string + estimated_impressions: + type: number + daypart: + type: string + additionalProperties: false + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + minItems: 2 example: [] - pricing: + estimated_exposures: + type: number + example: 100 + measurement: type: object properties: - cpm: - type: number - signalCost: - type: number - totalCpm: - type: number + type: + type: string + attribution: + type: string + window: + 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: type: string + required: + - provider additionalProperties: false - performance: + reporting_capabilities: 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: + 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: + type: boolean + example: true + brief_relevance: 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: + type: string + example: string + product_card: + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + additionalProperties: false + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + additionalProperties: false + product_card_detailed: + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + additionalProperties: false + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + additionalProperties: false + ext: + 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 +14497,170 @@ 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: + 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: + type: number + height: + type: number + duration_ms: + 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: type: string - salesAgentName: + product_id: type: string - budgetAmount: + budget: type: number - budgetCurrency: + pacing: + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + pricing_option_id: type: string - pricingCpm: - type: number - pricingSignalCost: + bid_price: type: number - displayOrder: + impressions: type: number - creativeFormats: + targeting_overlay: + type: object + properties: + geo_country_any_of: + type: array + items: + type: string + geo_region_any_of: + type: array + items: + type: string + geo_metro_any_of: + type: array + items: + type: string + geo_postal_code_any_of: + type: array + items: + type: string + axe_include_segment: + type: string + axe_exclude_segment: + type: string + frequency_cap: + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + additionalProperties: false + additionalProperties: false + creative_assignments: + type: array + items: + type: object + properties: + creative_id: + type: string + weight: + type: number + placement_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - creative_id + additionalProperties: false + format_ids_to_provide: type: array items: type: object @@ -6473,76 +14669,829 @@ components: type: string id: type: string + width: + type: number + height: + type: number + duration_ms: + 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: + type: boolean + ext: + 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: + type: number + height: + type: number + duration_ms: + 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: + type: string + alt_text: + 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: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + additionalProperties: false + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + additionalProperties: false + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + additionalProperties: false + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + additionalProperties: false + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + additionalProperties: false + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + type: object + properties: + manifest_skus: + type: array + items: + type: string + manifest_tags: + type: array + items: + type: string + manifest_category: + type: string + manifest_query: + type: string + additionalProperties: false + offerings: + type: array + items: + type: object + properties: + name: + type: string + description: + type: string + assets: + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + type: object + properties: + tags: + type: array + items: + type: string + asset_types: + 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: + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + type: string + required: + - url + additionalProperties: false + inputs: + type: array + items: + type: object + properties: + name: + type: string + macros: + type: object + additionalProperties: + type: string + context_description: + type: string + required: + - name + additionalProperties: false + tags: + type: array + items: + type: string + approved: + type: boolean + weight: + type: number + placement_ids: + 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 +15500,825 @@ components: type: string id: type: string + width: + type: number + height: + type: number + duration_ms: + 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: + type: number + height: + type: number + duration_ms: + 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: + type: string + alt_text: + 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: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + additionalProperties: false + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + additionalProperties: false + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + additionalProperties: false + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + additionalProperties: false + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + additionalProperties: false + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + type: object + properties: + manifest_skus: + type: array + items: + type: string + manifest_tags: + type: array + items: + type: string + manifest_category: + type: string + manifest_query: + type: string + additionalProperties: false + offerings: + type: array + items: + type: object + properties: + name: + type: string + description: + type: string + assets: + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + type: object + properties: + tags: + type: array + items: + type: string + asset_types: + 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: + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + type: string + required: + - url + additionalProperties: false + inputs: + type: array + items: + type: object + properties: + name: + type: string + macros: + type: object + additionalProperties: + type: string + context_description: + type: string + required: + - name + additionalProperties: false + tags: + type: array + items: + type: string + approved: + type: boolean + weight: + type: number + placement_ids: + 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 +16327,7 @@ components: type: number clicks: type: number - lastUpdated: + last_updated: type: string format: date-time pattern: >- @@ -6634,74 +16337,98 @@ 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: - 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 @@ -6710,76 +16437,935 @@ components: type: string id: type: string + width: + type: number + height: + type: number + duration_ms: + 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: + type: string + product_id: + type: string + budget: + type: number + pacing: + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + pricing_option_id: type: string - productIds: + bid_price: + type: number + impressions: + type: number + targeting_overlay: + type: object + properties: + geo_country_any_of: + type: array + items: + type: string + geo_region_any_of: + type: array + items: + type: string + geo_metro_any_of: + type: array + items: + type: string + geo_postal_code_any_of: + type: array + items: + type: string + axe_include_segment: + type: string + axe_exclude_segment: + type: string + frequency_cap: + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + additionalProperties: false + additionalProperties: false + creative_assignments: + type: array + items: + type: object + properties: + creative_id: + type: string + weight: + type: number + placement_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - creative_id + additionalProperties: false + format_ids_to_provide: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + additionalProperties: false + paused: + type: boolean + ext: + 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: + type: number + height: + type: number + duration_ms: + 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: + type: string + alt_text: + 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: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + additionalProperties: false + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + additionalProperties: false + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + additionalProperties: false + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + additionalProperties: false + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + additionalProperties: false + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + type: object + properties: + manifest_skus: + type: array + items: + type: string + manifest_tags: + type: array + items: + type: string + manifest_category: + type: string + manifest_query: + type: string + additionalProperties: false + offerings: + type: array + items: + type: object + properties: + name: + type: string + description: + type: string + assets: + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + type: object + properties: + tags: + type: array + items: + type: string + asset_types: + 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: + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + type: string + required: + - url + additionalProperties: false + inputs: + type: array + items: + type: object + properties: + name: + type: string + macros: + type: object + additionalProperties: + type: string + context_description: + type: string + required: + - name + additionalProperties: false + tags: + type: array + items: + type: string + approved: + type: boolean + weight: + type: number + placement_ids: + 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 @@ -6788,71 +17374,825 @@ components: type: string id: type: string + width: + type: number + height: + type: number + duration_ms: + 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: + type: number + height: + type: number + duration_ms: + 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: + type: string + alt_text: + 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: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + additionalProperties: false + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + additionalProperties: false + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + additionalProperties: false + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + additionalProperties: false + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + additionalProperties: false + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + type: object + properties: + manifest_skus: + type: array + items: + type: string + manifest_tags: + type: array + items: + type: string + manifest_category: + type: string + manifest_query: + type: string + additionalProperties: false + offerings: + type: array + items: + type: object + properties: + name: + type: string + description: + type: string + assets: + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + type: object + properties: + tags: + type: array + items: + type: string + asset_types: + 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: + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + type: string + required: + - url + additionalProperties: false + inputs: + type: array + items: + type: object + properties: + name: + type: string + macros: + type: object + additionalProperties: + type: string + context_description: + type: string + required: + - name + additionalProperties: false + tags: + type: array + items: + type: string + approved: + type: boolean + weight: + type: number + placement_ids: + 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 +18201,7 @@ components: type: number clicks: type: number - lastUpdated: + last_updated: type: string format: date-time pattern: >- @@ -6871,33 +18211,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..bcf58d3 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,220 +4413,1643 @@ 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: + type: number + height: + type: number + duration_ms: + 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: + type: string + alt_text: + 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: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + required: + - name + - type: string + product_selectors: + type: object + properties: + manifest_skus: + type: array + items: + type: string + manifest_tags: + type: array + items: + type: string + manifest_category: + type: string + manifest_query: + type: string + offerings: + type: array + items: + type: object + properties: + name: + type: string + description: + type: string + assets: + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + type: object + properties: + tags: + type: array + items: + type: string + asset_types: + 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: + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + type: string + required: + - url + inputs: 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: + type: object + additionalProperties: type: string + context_description: + 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: + type: array + items: + type: string + example: [] + approved: + type: boolean + example: true + weight: + type: number example: 100 - brandAgentId: + placement_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + example: [] + brand_agent_id: type: integer exclusiveMinimum: true maximum: 9007199254740991 example: 100 - formatSource: + organization_id: type: string - enum: - - ADCP - - CREATIVE_AGENT - - PUBLISHER - example: ADCP - 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: - 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: DRAFT - take: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - skip: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - OutcomesAgentGetProposalsInput: - type: object - properties: - campaignId: - description: Campaign ID to get proposals for - example: camp_123 + example: example_id_123 + name: + type: string + example: Example Name + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + 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: + type: string + alt_text: + 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: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + required: + - name + - type: string + product_selectors: + type: object + properties: + manifest_skus: + type: array + items: + type: string + manifest_tags: + type: array + items: + type: string + manifest_category: + type: string + manifest_query: + type: string + offerings: + type: array + items: + type: object + properties: + name: + type: string + description: + type: string + assets: + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + type: object + properties: + tags: + type: array + items: + type: string + asset_types: + 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: + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + type: string + required: + - url + inputs: + type: array + items: + type: object + properties: + name: + type: string + macros: + type: object + additionalProperties: + type: string + context_description: + type: string + required: + - name + example: [] + tags: + type: array + items: + type: string + example: [] + approved: + type: boolean + example: true + weight: + type: number + example: 100 + placement_ids: + 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 + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + skip: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + OutcomesAgentGetProposalsInput: + type: object + properties: + campaignId: + description: Campaign ID to get proposals for + example: camp_123 type: string agentIds: description: 'Optional: Specific outcome agent IDs to query. If omitted, queries all outcome agents.' @@ -4730,11 +6158,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 +6336,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 +6477,845 @@ 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: + type: number + height: + type: number + duration_ms: + 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: + type: string + alt_text: + 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: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + required: + - name + - type: string + product_selectors: + type: object + properties: + manifest_skus: + type: array + items: + type: string + manifest_tags: + type: array + items: + type: string + manifest_category: + type: string + manifest_query: + type: string + offerings: + type: array + items: + type: object + properties: + name: + type: string + description: + type: string + assets: + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + type: object + properties: + tags: + type: array + items: + type: string + asset_types: + 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: + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + type: string + required: + - url + inputs: + type: array + items: + type: object + properties: + name: + type: string + macros: + type: object + additionalProperties: + type: string + context_description: + type: string + required: + - name + example: [] + tags: + type: array + items: + type: string + example: [] + approved: + type: boolean + example: true + weight: + type: number + example: 100 + placement_ids: + 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 +7324,899 @@ components: type: string id: type: string + width: + type: number + height: + type: number + duration_ms: + 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: + type: string + product_id: + type: string + budget: + type: number + pacing: + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + pricing_option_id: type: string - productIds: + bid_price: + type: number + impressions: + type: number + targeting_overlay: + type: object + properties: + geo_country_any_of: + type: array + items: + type: string + geo_region_any_of: + type: array + items: + type: string + geo_metro_any_of: + type: array + items: + type: string + geo_postal_code_any_of: + type: array + items: + type: string + axe_include_segment: + type: string + axe_exclude_segment: + type: string + frequency_cap: + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + creative_assignments: + type: array + items: + type: object + properties: + creative_id: + type: string + weight: + type: number + placement_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - creative_id + format_ids_to_provide: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + paused: + type: boolean + ext: + 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: + type: number + height: + type: number + duration_ms: + 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: + type: string + alt_text: + 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: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + required: + - name + - type: string + product_selectors: + type: object + properties: + manifest_skus: + type: array + items: + type: string + manifest_tags: + type: array + items: + type: string + manifest_category: + type: string + manifest_query: + type: string + offerings: + type: array + items: + type: object + properties: + name: + type: string + description: + type: string + assets: + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + type: object + properties: + tags: + type: array + items: + type: string + asset_types: + 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: + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + type: string + required: + - url + inputs: + type: array + items: + type: object + properties: + name: + type: string + macros: + type: object + additionalProperties: + type: string + context_description: + type: string + required: + - name + tags: + type: array + items: + type: string + approved: + type: boolean + weight: + type: number + placement_ids: + 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 - 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 @@ -5191,66 +8225,792 @@ components: type: string id: type: string + width: + type: number + height: + type: number + duration_ms: + 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 - status: - type: string - required: - - creativeId - - name - - formatId - - mediaUrl - - status - example: [] - pricing: - type: object - properties: - cpm: - type: number - signalCost: - type: number - totalCpm: - type: number - required: - - cpm - - totalCpm - status: - type: string - example: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + 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: + type: string + alt_text: + 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: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + required: + - name + - type: string + product_selectors: + type: object + properties: + manifest_skus: + type: array + items: + type: string + manifest_tags: + type: array + items: + type: string + manifest_category: + type: string + manifest_query: + type: string + offerings: + type: array + items: + type: object + properties: + name: + type: string + description: + type: string + assets: + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + type: object + properties: + tags: + type: array + items: + type: string + asset_types: + 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: + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + type: string + required: + - url + inputs: + type: array + items: + type: object + properties: + name: + type: string + macros: + type: object + additionalProperties: + type: string + context_description: + type: string + required: + - name + tags: + type: array + items: + type: string + approved: + type: boolean + weight: + type: number + placement_ids: + 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: - 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 +9019,7 @@ components: type: number clicks: type: number - lastUpdated: + last_updated: type: string format: date-time pattern: >- @@ -5268,33 +9028,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 +9660,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 +9690,7 @@ components: - success - id additionalProperties: false - CreativeList: + ListCreativesOutput: type: object properties: items: @@ -5996,7 +9759,7 @@ components: - total - items additionalProperties: false - MediaBuyList: + ListMediaBuysOutput: type: object properties: total: @@ -6205,47 +9968,1097 @@ 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: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + additionalProperties: false + placements: + type: array + items: + anyOf: + - type: object properties: - agent_url: + placement_id: type: string - id: + name: type: string + description: + type: string + format_ids: + type: array + items: + anyOf: + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + additionalProperties: false + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + additionalProperties: false + minItems: 2 required: - - agent_url - - id + - placement_id + - name + additionalProperties: false + - type: object + properties: + placement_id: + type: string + name: + type: string + description: + type: string + format_ids: + type: array + items: + anyOf: + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + additionalProperties: false + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + 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: + 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: + type: number + p50: + type: number + p75: + type: number + p90: + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + 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: + 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: + type: number + p50: + type: number + p75: + type: number + p90: + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + 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: + 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: + 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: + 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: + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + 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: + type: object + properties: + duration_hours: + type: number + sov_percentage: + type: number + loop_duration_seconds: + type: number + min_plays_per_hour: + type: number + venue_package: + type: string + estimated_impressions: + type: number + daypart: + type: string + additionalProperties: false + min_spend_per_package: + 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: + 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: + type: number + p50: + type: number + p75: + type: number + p90: + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + 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: + 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: + type: number + p50: + type: number + p75: + type: number + p90: + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + 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: + 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: + 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: + 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: + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + 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: + type: object + properties: + duration_hours: + type: number + sov_percentage: + type: number + loop_duration_seconds: + type: number + min_plays_per_hour: + type: number + venue_package: + type: string + estimated_impressions: + type: number + daypart: + type: string + additionalProperties: false + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + minItems: 2 + estimated_exposures: + type: number + measurement: + type: object + properties: + type: + type: string + attribution: + type: string + window: + type: string + reporting: + type: string + required: + - type + - attribution + - reporting + additionalProperties: false + delivery_measurement: + type: object + properties: + provider: + type: string + notes: + type: string + required: + - provider + additionalProperties: false + reporting_capabilities: + 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: + 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: + type: boolean + brief_relevance: + type: string + expires_at: + type: string + product_card: + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + additionalProperties: false + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + additionalProperties: false + product_card_detailed: + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + additionalProperties: false + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + additionalProperties: false + ext: + 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: - - id - - productId + - product_id - name - - deliveryType + - description + - publisher_properties + - format_ids + - delivery_type + - pricing_options + - delivery_measurement + - id + - customer_id + - created_at + - updated_at additionalProperties: false example: [] required: @@ -6265,6 +11078,7 @@ components: enum: - SALES - OUTCOME + - SIGNAL status: type: string relationship: @@ -6314,6 +11128,7 @@ components: enum: - SALES - OUTCOME + - SIGNAL status: type: string relationship: @@ -6380,6 +11195,7 @@ components: enum: - SALES - OUTCOME + - SIGNAL status: type: string relationship: @@ -6408,6 +11224,7 @@ components: enum: - SALES - OUTCOME + - SIGNAL status: type: string relationship: @@ -6834,6 +11651,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,77 +11796,875 @@ 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: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + 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: + type: string + alt_text: + 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: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + additionalProperties: false + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + additionalProperties: false + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + additionalProperties: false + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + additionalProperties: false + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + additionalProperties: false + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + type: object + properties: + manifest_skus: + type: array + items: + type: string + manifest_tags: + type: array + items: + type: string + manifest_category: + type: string + manifest_query: + type: string + additionalProperties: false + offerings: + type: array + items: + type: object + properties: + name: + type: string + description: + type: string + assets: + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + type: object + properties: + tags: + type: array + items: + type: string + asset_types: + 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: + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + type: string + required: + - url + additionalProperties: false + inputs: + type: array + items: + type: object + properties: + name: + type: string + macros: + type: object + additionalProperties: + type: string + context_description: + type: string + required: + - name + additionalProperties: false + example: [] + tags: + type: array + items: + type: string + example: [] + approved: + type: boolean + example: true + weight: + type: number + example: 100 + placement_ids: + 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: - 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 @@ -7048,76 +12673,104 @@ components: type: string id: type: string + width: + type: number + height: + type: number + duration_ms: + 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: + type: string + product_id: type: string - productIds: - type: array - items: - type: string - impressions: - type: number budget: type: number - targetingOverlay: {} - creatives: - type: array - items: - type: object - properties: - creativeId: + pacing: + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + pricing_option_id: + type: string + bid_price: + type: number + impressions: + type: number + targeting_overlay: + type: object + properties: + geo_country_any_of: + type: array + items: type: string - name: + geo_region_any_of: + type: array + items: type: string - formatId: + geo_metro_any_of: + type: array + items: type: string - mediaUrl: + geo_postal_code_any_of: + type: array + items: type: string - status: + axe_include_segment: + type: string + axe_exclude_segment: + type: string + frequency_cap: + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + additionalProperties: false + additionalProperties: false + creative_assignments: + type: array + items: + type: object + properties: + creative_id: type: string + weight: + type: number + placement_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 required: - - creativeId - - name - - formatId - - mediaUrl - - status + - creative_id 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: - 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: + format_ids_to_provide: type: array items: type: object @@ -7126,71 +12779,1656 @@ components: type: string id: type: string + width: + type: number + height: + type: number + duration_ms: + type: number required: - agent_url - id additionalProperties: false - required: - - packageId - - productIds - - impressions - - budget - - targetingOverlay - - creatives - - createdAt - - updatedAt - additionalProperties: false - example: [] - creatives: - type: array - items: - type: object - properties: - creativeId: + paused: + type: boolean + ext: + 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: + type: number + height: + type: number + duration_ms: + 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: + type: string + alt_text: + 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: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + additionalProperties: false + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + additionalProperties: false + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + additionalProperties: false + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + additionalProperties: false + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + additionalProperties: false + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + type: object + properties: + manifest_skus: + type: array + items: + type: string + manifest_tags: + type: array + items: + type: string + manifest_category: + type: string + manifest_query: + type: string + additionalProperties: false + offerings: + type: array + items: + type: object + properties: + name: + type: string + description: + type: string + assets: + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + type: object + properties: + tags: + type: array + items: + type: string + asset_types: + 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: + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + type: string + required: + - url + additionalProperties: false + inputs: + type: array + items: + type: object + properties: + name: + type: string + macros: + type: object + additionalProperties: + type: string + context_description: + type: string + required: + - name + additionalProperties: false + tags: + type: array + items: + type: string + approved: + type: boolean + weight: + type: number + placement_ids: + 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 - name: + 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 - formatId: + sales_agent_name: + type: string + creative_formats: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + type: number + required: + - agent_url + - id + additionalProperties: false + required: + - package_id + - creatives + - created_at + - updated_at + additionalProperties: false + example: [] + creatives: + description: Full creative objects (enriched from joins) + type: array + items: + type: object + properties: + creative_id: type: string - mediaUrl: + name: type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + type: number + height: + type: number + duration_ms: + 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: + type: string + alt_text: + 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: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + additionalProperties: false + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + additionalProperties: false + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + additionalProperties: false + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + additionalProperties: false + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + additionalProperties: false + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + type: object + properties: + manifest_skus: + type: array + items: + type: string + manifest_tags: + type: array + items: + type: string + manifest_category: + type: string + manifest_query: + type: string + additionalProperties: false + offerings: + type: array + items: + type: object + properties: + name: + type: string + description: + type: string + assets: + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + type: object + properties: + tags: + type: array + items: + type: string + asset_types: + 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: + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + type: string + required: + - url + additionalProperties: false + inputs: + type: array + items: + type: object + properties: + name: + type: string + macros: + type: object + additionalProperties: + type: string + context_description: + type: string + required: + - name + additionalProperties: false + tags: + type: array + items: + type: string + approved: + type: boolean + weight: + type: number + placement_ids: + 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 +14437,7 @@ components: type: number clicks: type: number - lastUpdated: + last_updated: type: string format: date-time pattern: >- @@ -7209,33 +14447,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 +14559,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 +14611,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 +14705,1624 @@ 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: + type: number + height: + type: number + duration_ms: + 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: + type: string + alt_text: + 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: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + additionalProperties: false + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + additionalProperties: false + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + additionalProperties: false + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + additionalProperties: false + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + additionalProperties: false + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + type: object + properties: + manifest_skus: + type: array + items: + type: string + manifest_tags: + type: array + items: + type: string + manifest_category: + type: string + manifest_query: + type: string + additionalProperties: false + offerings: + type: array + items: + type: object + properties: + name: + type: string + description: + type: string + assets: + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + type: object + properties: + tags: + type: array + items: + type: string + asset_types: + 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: + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + type: string + required: + - url + additionalProperties: false + inputs: + type: array + items: + type: object + properties: + name: + type: string + macros: + type: object + additionalProperties: + type: string + context_description: + type: string + required: + - name + additionalProperties: false + example: [] + tags: + type: array + items: + type: string + example: [] + approved: + type: boolean + example: true + weight: + type: number + example: 100 + placement_ids: + 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: + type: number + height: + type: number + duration_ms: + 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: + type: string + alt_text: + 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: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + type: number + format: + type: string + bitrate_kbps: + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + 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: + type: boolean + duration_ms: + type: number + tracking_events: + 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: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + type: number + tracking_events: + 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: + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + type: string + name: + type: string + logos: + type: array + items: + type: object + properties: + url: + type: string + tags: + type: array + items: + type: string + width: + type: number + height: + type: number + required: + - url + additionalProperties: false + colors: + type: object + properties: + primary: + type: string + secondary: + type: string + accent: + type: string + background: + type: string + text: + type: string + additionalProperties: false + fonts: + type: object + properties: + primary: + type: string + secondary: + type: string + font_urls: + type: array + items: + type: string + additionalProperties: false + tone: + type: string + tagline: + type: string + assets: + 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: + type: array + items: + type: string + name: + type: string + description: + type: string + width: + type: number + height: + type: number + duration_seconds: + type: number + file_size_bytes: + type: number + format: + type: string + metadata: + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + type: object + properties: + feed_url: + type: string + feed_format: + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + type: array + items: + type: string + last_updated: + type: string + update_frequency: + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + type: array + items: + type: object + properties: + text: + type: string + context: + type: string + required: + type: boolean + required: + - text + additionalProperties: false + industry: + type: string + target_audience: + type: string + contact: + type: object + properties: + email: + type: string + phone: + type: string + additionalProperties: false + metadata: + type: object + properties: + created_date: + type: string + updated_date: + type: string + version: + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + type: object + properties: + manifest_skus: + type: array + items: + type: string + manifest_tags: + type: array + items: + type: string + manifest_category: + type: string + manifest_query: + type: string + additionalProperties: false + offerings: + type: array + items: + type: object + properties: + name: + type: string + description: + type: string + assets: + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + type: object + properties: + tags: + type: array + items: + type: string + asset_types: + 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: + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + type: string + required: + - url + additionalProperties: false + inputs: + type: array + items: + type: object + properties: + name: + type: string + macros: + type: object + additionalProperties: + type: string + context_description: + type: string + required: + - name + additionalProperties: false + example: [] + tags: + type: array + items: + type: string + example: [] + approved: + type: boolean + example: true + weight: + type: number + example: 100 + placement_ids: + 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..88aa75e 100644 --- a/src/types/partner-api.ts +++ b/src/types/partner-api.ts @@ -321,69 +321,738 @@ 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; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + /** @example string */ + po_number?: string; + start_time: 'asap' | string; /** @example string */ + end_time: string; + reporting_webhook?: { + url: string; + token?: string; + 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' + )[]; + }; + context?: { + [key: string]: unknown; + }; + ext?: { + [key: string]: unknown; + }; + /** + * @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; + product_id: string; + format_ids?: { + agent_url: string; + id: string; + width?: number; + height?: number; + duration_ms?: number; + }[]; + budget: number; + pacing?: 'even' | 'asap' | 'front_loaded'; + pricing_option_id: string; + bid_price?: number; + targeting_overlay?: { + geo_country_any_of?: string[]; + geo_region_any_of?: string[]; + geo_metro_any_of?: string[]; + geo_postal_code_any_of?: string[]; + axe_include_segment?: string; + axe_exclude_segment?: string; + frequency_cap?: { + suppress_minutes: number; + }; + }; + creative_ids?: string[]; 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; + height?: number; + duration_ms?: number; }; - click_url?: string; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string; + alt_text?: string; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + }) + | { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + } + | { + content: string; + language?: string; + } + | { + content: string; + version?: string; + } + | { + content: string; + media?: string; + } + | { + content: string; + module_type?: 'esm' | 'commonjs' | 'script'; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + ) + | { + brand_manifest: + | { + url?: string; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + product_selectors?: { + manifest_skus?: string[]; + manifest_tags?: string[]; + manifest_category?: string; + manifest_query?: string; + }; + offerings?: { + name: string; + description?: string; + assets?: { + [key: string]: unknown; + }[]; + }[]; + asset_selectors?: { + tags?: string[]; + asset_types?: ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[]; + exclude_tags?: string[]; + }; + } + | { + url: string; + url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script'; + description?: string; + }; + }; + inputs?: { + name: string; + macros?: { + [key: string]: string; + }; + context_description?: string; + }[]; + tags?: string[]; + approved?: boolean; + weight?: number; + placement_ids?: string[]; }[]; + ext?: { + [key: string]: unknown; + }; + /** @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; + height?: number; + duration_ms?: number; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string; + alt_text?: string; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + }) + | { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + } + | { + content: string; + language?: string; + } + | { + content: string; + version?: string; + } + | { + content: string; + media?: string; + } + | { + content: string; + module_type?: 'esm' | 'commonjs' | 'script'; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + ) + | { + brand_manifest: + | { + url?: string; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + product_selectors?: { + manifest_skus?: string[]; + manifest_tags?: string[]; + manifest_category?: string; + manifest_query?: string; + }; + offerings?: { + name: string; + description?: string; + assets?: { + [key: string]: unknown; + }[]; + }[]; + asset_selectors?: { + tags?: string[]; + asset_types?: ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[]; + exclude_tags?: string[]; + }; + } + | { + url: string; + url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script'; + description?: string; + }; }; - click_url?: string; + inputs?: { + name: string; + macros?: { + [key: string]: string; + }; + context_description?: string; + }[]; + tags?: string[]; + approved?: boolean; + weight?: number; + placement_ids?: string[]; }[]; }; UpdateMediaBuyInput: { /** @example example_id_123 */ - mediaBuyId: string; + media_buy_id: string; /** @example Example Name */ name?: string; /** @example string */ @@ -401,30 +1070,40 @@ export interface components { | 'FAILED' | 'REJECTED'; /** @example [] */ - creativeIds?: string[]; + creative_ids?: string[]; + /** @example [] */ + products?: { + product_id: string; + budget: number; + pacing?: 'even' | 'asap' | 'front_loaded'; + bid_price?: number; + }[]; /** @example [] */ packages?: { - packageId: string; - creativeIds: string[]; + package_id: string; + budget?: number; + pacing?: 'even' | 'asap' | 'front_loaded'; + bid_price?: number; + 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 +1123,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 +1174,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; + height?: number; + duration_ms?: number; + }[]; /** @description Only return products accepting IAB standard formats */ standardFormatsOnly?: boolean; /** @description Minimum exposures/impressions needed for measurement validity */ @@ -511,50 +1198,249 @@ 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; + height?: number; + duration_ms?: number; + }[]; + /** @example [] */ + placements?: { + placement_id: string; + name: string; + description?: string; + format_ids?: { + agent_url: string; + id: string; + width?: number; + height?: number; + duration_ms?: number; + }[]; }[]; + delivery_type: 'guaranteed' | 'non_guaranteed'; /** @example [] */ - supportedTargeting?: string[]; + 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; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number; + p50?: number; + p75?: number; + p90?: number; + }; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number; + p50?: number; + p75?: number; + p90?: number; + }; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number; + } + | { + 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; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number; + }; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number; + sov_percentage?: number; + loop_duration_seconds?: number; + min_plays_per_hour?: number; + venue_package?: string; + estimated_impressions?: number; + daypart?: string; + }; + min_spend_per_package?: number; + } + )[]; + /** @example 100 */ + estimated_exposures?: number; + measurement?: { + type: string; + attribution: string; + window?: string; + reporting: string; + }; + delivery_measurement: { + provider: string; + notes?: string; + }; + 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' + )[]; + }; + creative_policy?: { + co_branding: 'required' | 'optional' | 'none'; + landing_page: 'any' | 'retailer_site_only' | 'must_include_retailer'; + templates_available: boolean; + }; + /** @example true */ + is_custom?: boolean; + /** @example string */ + brief_relevance?: string; + /** @example string */ + expires_at?: string; + product_card?: { + format_id: { + agent_url: string; + id: string; + width?: number; + height?: number; + duration_ms?: number; + }; + manifest: { + [key: string]: unknown; + }; + }; + product_card_detailed?: { + format_id: { + agent_url: string; + id: string; + width?: number; + height?: number; + duration_ms?: number; + }; + manifest: { + [key: string]: unknown; + }; + }; + ext?: { + [key: string]: unknown; + }; + /** @example 100 */ + customerId?: number; /** @example example_id_123 */ adcpAgentId?: string; }; @@ -577,11 +1463,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 +1497,7 @@ export interface components { * @example SALES * @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; /** * @description Agent name * @example Example Name @@ -961,102 +1847,992 @@ 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; + height?: number; + duration_ms?: number; }[]; }[]; - /** @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; + product_id?: string; + budget?: number; + pacing?: 'even' | 'asap' | 'front_loaded'; + pricing_option_id?: string; + bid_price?: number; + impressions?: number; + targeting_overlay?: { + geo_country_any_of?: string[]; + geo_region_any_of?: string[]; + geo_metro_any_of?: string[]; + geo_postal_code_any_of?: string[]; + axe_include_segment?: string; + axe_exclude_segment?: string; + frequency_cap?: { + suppress_minutes: number; + }; + }; + creative_assignments?: { + creative_id: string; + weight?: number; + placement_ids?: string[]; + }[]; + format_ids_to_provide?: { + agent_url: string; + id: string; + width?: number; + height?: number; + duration_ms?: number; + }[]; + paused?: boolean; + ext?: { + [key: string]: unknown; + }; + /** @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; + height?: number; + duration_ms?: number; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string; + alt_text?: string; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + }) + | { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + } + | { + content: string; + language?: string; + } + | { + content: string; + version?: string; + } + | { + content: string; + media?: string; + } + | { + content: string; + module_type?: 'esm' | 'commonjs' | 'script'; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + ) + | { + brand_manifest: + | { + url?: string; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + product_selectors?: { + manifest_skus?: string[]; + manifest_tags?: string[]; + manifest_category?: string; + manifest_query?: string; + }; + offerings?: { + name: string; + description?: string; + assets?: { + [key: string]: unknown; + }[]; + }[]; + asset_selectors?: { + tags?: string[]; + asset_types?: ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[]; + exclude_tags?: string[]; + }; + } + | { + url: string; + url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script'; + description?: string; + }; + }; + inputs?: { + name: string; + macros?: { + [key: string]: string; + }; + context_description?: string; + }[]; + tags?: string[]; + approved?: boolean; + weight?: number; + placement_ids?: string[]; + /** @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; + height?: number; + duration_ms?: number; + }[]; + }[]; + /** + * @description Full creative objects (enriched from joins) + * @example [] + */ + creatives?: { + creative_id: string; + name: string; + format_id: { + agent_url: string; + id: string; + width?: number; + height?: number; + duration_ms?: number; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string; + alt_text?: string; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + }) + | { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + } + | { + content: string; + language?: string; + } + | { + content: string; + version?: string; + } + | { + content: string; + media?: string; + } + | { + content: string; + module_type?: 'esm' | 'commonjs' | 'script'; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + ) + | { + brand_manifest: + | { + url?: string; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + product_selectors?: { + manifest_skus?: string[]; + manifest_tags?: string[]; + manifest_category?: string; + manifest_query?: string; + }; + offerings?: { + name: string; + description?: string; + assets?: { + [key: string]: unknown; + }[]; + }[]; + asset_selectors?: { + tags?: string[]; + asset_types?: ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[]; + exclude_tags?: string[]; + }; + } + | { + url: string; + url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script'; + description?: string; + }; + }; + inputs?: { + name: string; + macros?: { + [key: string]: string; + }; + context_description?: string; + }[]; + tags?: string[]; + approved?: boolean; + weight?: number; + placement_ids?: string[]; + /** @description Internal creative status (not in ADCP protocol) */ + status: string; + }[]; + /** @description ADCP-specific metadata (from execute response) */ + adcp?: { + media_buy_id?: string; + status?: string; + webhook_url?: string; + }; + /** @description Performance metrics (from reporting) */ + performance?: { + impressions: number; + spend: number; + clicks: number; + /** Format: date-time */ + last_updated?: string; + }; + /** + * Format: date-time + * @description Created timestamp + * @example string + */ + created_at: string; + /** + * Format: date-time + * @description Updated timestamp + * @example string + */ + updated_at: string; + /** + * Format: date-time + * @description Archived timestamp + * @example 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; + height?: number; + duration_ms?: number; + }[]; + /** @example [] */ + placements?: { + placement_id: string; + name: string; + description?: string; + format_ids?: { agent_url: string; id: string; + width?: number; + height?: number; + duration_ms?: number; }[]; }[]; + delivery_type: 'guaranteed' | 'non_guaranteed'; /** @example [] */ - creatives?: { - creativeId: string; - name: string; - formatId: string; - mediaUrl: string; - status: string; - }[]; - pricing: { - cpm: number; - signalCost?: number; - totalCpm: number; + 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; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number; + p50?: number; + p75?: number; + p90?: number; + }; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number; + p50?: number; + p75?: number; + p90?: number; + }; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number; + } + | { + 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; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number; + }; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number; + sov_percentage?: number; + loop_duration_seconds?: number; + min_plays_per_hour?: number; + venue_package?: string; + estimated_impressions?: number; + daypart?: string; + }; + min_spend_per_package?: number; + } + )[]; + /** @example 100 */ + estimated_exposures?: number; + measurement?: { + type: string; + attribution: string; + window?: string; + reporting: string; + }; + delivery_measurement: { + provider: string; + notes?: string; + }; + 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' + )[]; + }; + creative_policy?: { + co_branding: 'required' | 'optional' | 'none'; + landing_page: 'any' | 'retailer_site_only' | 'must_include_retailer'; + templates_available: boolean; }; + /** @example true */ + is_custom?: boolean; /** @example string */ - status: string; - adcp?: { - mediaBuyId?: string; - status?: string; - webhookUrl?: string; + brief_relevance?: string; + /** @example string */ + expires_at?: string; + product_card?: { + format_id: { + agent_url: string; + id: string; + width?: number; + height?: number; + duration_ms?: number; + }; + manifest: { + [key: string]: unknown; + }; }; - performance?: { - impressions: number; - spend: number; - clicks: number; - /** Format: date-time */ - lastUpdated?: string; + product_card_detailed?: { + format_id: { + agent_url: string; + id: string; + width?: number; + height?: number; + duration_ms?: number; + }; + manifest: { + [key: string]: unknown; + }; + }; + ext?: { + [key: string]: unknown; }; /** - * Format: date-time - * @example string + * @description Internal database ID + * @example example_id_123 */ - archivedAt?: string; + 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 */ - createdAt: string; + created_at: string; /** * Format: date-time * @example string */ - updatedAt: string; + updated_at: string; }; TacticGet: { /** @example 100 */ @@ -1182,13 +2958,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 +2984,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 +3054,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 +3099,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 +3123,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 +3133,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 +3151,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 +3166,7 @@ export interface components { * @example SALES * @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; }; AgentUpdate: { /** @example example_id_123 */ @@ -1460,7 +3177,7 @@ export interface components { * @example SALES * @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; /** @example string */ status: string; }; @@ -1814,102 +3531,992 @@ 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; + height?: number; + duration_ms?: number; }[]; }[]; - /** @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; + product_id?: string; + budget?: number; + pacing?: 'even' | 'asap' | 'front_loaded'; + pricing_option_id?: string; + bid_price?: number; + impressions?: number; + targeting_overlay?: { + geo_country_any_of?: string[]; + geo_region_any_of?: string[]; + geo_metro_any_of?: string[]; + geo_postal_code_any_of?: string[]; + axe_include_segment?: string; + axe_exclude_segment?: string; + frequency_cap?: { + suppress_minutes: number; + }; + }; + creative_assignments?: { + creative_id: string; + weight?: number; + placement_ids?: string[]; + }[]; + format_ids_to_provide?: { + agent_url: string; + id: string; + width?: number; + height?: number; + duration_ms?: number; + }[]; + paused?: boolean; + ext?: { + [key: string]: unknown; + }; + /** @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; + height?: number; + duration_ms?: number; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string; + alt_text?: string; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + }) + | { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + } + | { + content: string; + language?: string; + } + | { + content: string; + version?: string; + } + | { + content: string; + media?: string; + } + | { + content: string; + module_type?: 'esm' | 'commonjs' | 'script'; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + ) + | { + brand_manifest: + | { + url?: string; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + product_selectors?: { + manifest_skus?: string[]; + manifest_tags?: string[]; + manifest_category?: string; + manifest_query?: string; + }; + offerings?: { + name: string; + description?: string; + assets?: { + [key: string]: unknown; + }[]; + }[]; + asset_selectors?: { + tags?: string[]; + asset_types?: ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[]; + exclude_tags?: string[]; + }; + } + | { + url: string; + url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script'; + description?: string; + }; + }; + inputs?: { + name: string; + macros?: { + [key: string]: string; + }; + context_description?: string; + }[]; + tags?: string[]; + approved?: boolean; + weight?: number; + placement_ids?: string[]; + /** @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; + height?: number; + duration_ms?: number; + }[]; + }[]; + /** + * @description Full creative objects (enriched from joins) + * @example [] + */ + creatives?: { + creative_id: string; + name: string; + format_id: { + agent_url: string; + id: string; + width?: number; + height?: number; + duration_ms?: number; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string; + alt_text?: string; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + }) + | { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + } + | { + content: string; + language?: string; + } + | { + content: string; + version?: string; + } + | { + content: string; + media?: string; + } + | { + content: string; + module_type?: 'esm' | 'commonjs' | 'script'; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + ) + | { + brand_manifest: + | { + url?: string; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + product_selectors?: { + manifest_skus?: string[]; + manifest_tags?: string[]; + manifest_category?: string; + manifest_query?: string; + }; + offerings?: { + name: string; + description?: string; + assets?: { + [key: string]: unknown; + }[]; + }[]; + asset_selectors?: { + tags?: string[]; + asset_types?: ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[]; + exclude_tags?: string[]; + }; + } + | { + url: string; + url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script'; + description?: string; + }; + }; + inputs?: { + name: string; + macros?: { + [key: string]: string; + }; + context_description?: string; + }[]; + tags?: string[]; + approved?: boolean; + weight?: number; + placement_ids?: string[]; + /** @description Internal creative status (not in ADCP protocol) */ + status: string; + }[]; + /** @description ADCP-specific metadata (from execute response) */ + adcp?: { + media_buy_id?: string; + status?: string; + webhook_url?: string; + }; + /** @description Performance metrics (from reporting) */ + performance?: { + impressions: number; + spend: number; + clicks: number; + /** Format: date-time */ + last_updated?: string; + }; + /** + * Format: date-time + * @description Created timestamp + * @example string + */ + created_at: string; + /** + * Format: date-time + * @description Updated timestamp + * @example string + */ + updated_at: string; + /** + * Format: date-time + * @description Archived timestamp + * @example 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; + height?: number; + duration_ms?: number; + }[]; + /** @example [] */ + placements?: { + placement_id: string; + name: string; + description?: string; + format_ids?: { agent_url: string; id: string; + width?: number; + height?: number; + duration_ms?: number; }[]; }[]; + delivery_type: 'guaranteed' | 'non_guaranteed'; /** @example [] */ - creatives?: { - creativeId: string; - name: string; - formatId: string; - mediaUrl: string; - status: string; - }[]; - pricing: { - cpm: number; - signalCost?: number; - totalCpm: number; + 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; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number; + p50?: number; + p75?: number; + p90?: number; + }; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number; + p50?: number; + p75?: number; + p90?: number; + }; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number; + } + | { + 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; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number; + }; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number; + sov_percentage?: number; + loop_duration_seconds?: number; + min_plays_per_hour?: number; + venue_package?: string; + estimated_impressions?: number; + daypart?: string; + }; + min_spend_per_package?: number; + } + )[]; + /** @example 100 */ + estimated_exposures?: number; + measurement?: { + type: string; + attribution: string; + window?: string; + reporting: string; + }; + delivery_measurement: { + provider: string; + notes?: string; + }; + 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' + )[]; + }; + creative_policy?: { + co_branding: 'required' | 'optional' | 'none'; + landing_page: 'any' | 'retailer_site_only' | 'must_include_retailer'; + templates_available: boolean; }; + /** @example true */ + is_custom?: boolean; /** @example string */ - status: string; - adcp?: { - mediaBuyId?: string; - status?: string; - webhookUrl?: string; + brief_relevance?: string; + /** @example string */ + expires_at?: string; + product_card?: { + format_id: { + agent_url: string; + id: string; + width?: number; + height?: number; + duration_ms?: number; + }; + manifest: { + [key: string]: unknown; + }; }; - performance?: { - impressions: number; - spend: number; - clicks: number; - /** Format: date-time */ - lastUpdated?: string; + product_card_detailed?: { + format_id: { + agent_url: string; + id: string; + width?: number; + height?: number; + duration_ms?: number; + }; + manifest: { + [key: string]: unknown; + }; + }; + ext?: { + [key: string]: unknown; }; /** - * Format: date-time - * @example string + * @description Internal database ID + * @example example_id_123 */ - archivedAt?: string; + 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 */ - createdAt: string; + created_at: string; /** * Format: date-time * @example string */ - updatedAt: string; + updated_at: string; }; TacticGetOutput: { /** @example 100 */ @@ -1943,200 +4550,1424 @@ 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; + height?: number; + duration_ms?: number; }[]; }[]; - /** @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; + product_id?: string; + budget?: number; + pacing?: 'even' | 'asap' | 'front_loaded'; + pricing_option_id?: string; + bid_price?: number; + impressions?: number; + targeting_overlay?: { + geo_country_any_of?: string[]; + geo_region_any_of?: string[]; + geo_metro_any_of?: string[]; + geo_postal_code_any_of?: string[]; + axe_include_segment?: string; + axe_exclude_segment?: string; + frequency_cap?: { + suppress_minutes: number; + }; + }; + creative_assignments?: { + creative_id: string; + weight?: number; + placement_ids?: string[]; + }[]; + format_ids_to_provide?: { + agent_url: string; + id: string; + width?: number; + height?: number; + duration_ms?: number; + }[]; + paused?: boolean; + ext?: { + [key: string]: unknown; + }; + /** @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; + height?: number; + duration_ms?: number; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string; + alt_text?: string; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + }) + | { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + } + | { + content: string; + language?: string; + } + | { + content: string; + version?: string; + } + | { + content: string; + media?: string; + } + | { + content: string; + module_type?: 'esm' | 'commonjs' | 'script'; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + ) + | { + brand_manifest: + | { + url?: string; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + product_selectors?: { + manifest_skus?: string[]; + manifest_tags?: string[]; + manifest_category?: string; + manifest_query?: string; + }; + offerings?: { + name: string; + description?: string; + assets?: { + [key: string]: unknown; + }[]; + }[]; + asset_selectors?: { + tags?: string[]; + asset_types?: ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[]; + exclude_tags?: string[]; + }; + } + | { + url: string; + url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script'; + description?: string; + }; + }; + inputs?: { + name: string; + macros?: { + [key: string]: string; + }; + context_description?: string; + }[]; + tags?: string[]; + approved?: boolean; + weight?: number; + placement_ids?: string[]; + /** @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; + height?: number; + duration_ms?: number; }[]; }[]; - /** @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; + height?: number; + duration_ms?: number; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string; + alt_text?: string; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + }) + | { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + } + | { + content: string; + language?: string; + } + | { + content: string; + version?: string; + } + | { + content: string; + media?: string; + } + | { + content: string; + module_type?: 'esm' | 'commonjs' | 'script'; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + ) + | { + brand_manifest: + | { + url?: string; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + product_selectors?: { + manifest_skus?: string[]; + manifest_tags?: string[]; + manifest_category?: string; + manifest_query?: string; + }; + offerings?: { + name: string; + description?: string; + assets?: { + [key: string]: unknown; + }[]; + }[]; + asset_selectors?: { + tags?: string[]; + asset_types?: ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[]; + exclude_tags?: string[]; + }; + } + | { + url: string; + url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script'; + description?: string; + }; + }; + inputs?: { + name: string; + macros?: { + [key: string]: string; + }; + context_description?: string; + }[]; + tags?: string[]; + approved?: boolean; + weight?: number; + placement_ids?: string[]; + /** @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; + height?: number; + duration_ms?: number; }[]; }[]; - /** @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; + product_id?: string; + budget?: number; + pacing?: 'even' | 'asap' | 'front_loaded'; + pricing_option_id?: string; + bid_price?: number; + impressions?: number; + targeting_overlay?: { + geo_country_any_of?: string[]; + geo_region_any_of?: string[]; + geo_metro_any_of?: string[]; + geo_postal_code_any_of?: string[]; + axe_include_segment?: string; + axe_exclude_segment?: string; + frequency_cap?: { + suppress_minutes: number; + }; + }; + creative_assignments?: { + creative_id: string; + weight?: number; + placement_ids?: string[]; + }[]; + format_ids_to_provide?: { + agent_url: string; + id: string; + width?: number; + height?: number; + duration_ms?: number; + }[]; + paused?: boolean; + ext?: { + [key: string]: unknown; + }; + /** @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; + height?: number; + duration_ms?: number; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string; + alt_text?: string; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + }) + | { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + } + | { + content: string; + language?: string; + } + | { + content: string; + version?: string; + } + | { + content: string; + media?: string; + } + | { + content: string; + module_type?: 'esm' | 'commonjs' | 'script'; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + ) + | { + brand_manifest: + | { + url?: string; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + product_selectors?: { + manifest_skus?: string[]; + manifest_tags?: string[]; + manifest_category?: string; + manifest_query?: string; + }; + offerings?: { + name: string; + description?: string; + assets?: { + [key: string]: unknown; + }[]; + }[]; + asset_selectors?: { + tags?: string[]; + asset_types?: ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[]; + exclude_tags?: string[]; + }; + } + | { + url: string; + url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script'; + description?: string; + }; + }; + inputs?: { + name: string; + macros?: { + [key: string]: string; + }; + context_description?: string; + }[]; + tags?: string[]; + approved?: boolean; + weight?: number; + placement_ids?: string[]; + /** @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; + height?: number; + duration_ms?: number; }[]; }[]; - /** @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; + height?: number; + duration_ms?: number; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string; + alt_text?: string; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + }) + | { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + } + | { + content: string; + language?: string; + } + | { + content: string; + version?: string; + } + | { + content: string; + media?: string; + } + | { + content: string; + module_type?: 'esm' | 'commonjs' | 'script'; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + ) + | { + brand_manifest: + | { + url?: string; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + product_selectors?: { + manifest_skus?: string[]; + manifest_tags?: string[]; + manifest_category?: string; + manifest_query?: string; + }; + offerings?: { + name: string; + description?: string; + assets?: { + [key: string]: unknown; + }[]; + }[]; + asset_selectors?: { + tags?: string[]; + asset_types?: ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[]; + exclude_tags?: string[]; + }; + } + | { + url: string; + url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script'; + description?: string; + }; + }; + inputs?: { + name: string; + macros?: { + [key: string]: string; + }; + context_description?: string; + }[]; + tags?: string[]; + approved?: boolean; + weight?: number; + placement_ids?: string[]; + /** @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 +6260,7 @@ export interface operations { * @example { * "tool": "creative_sync_sales_agents", * "arguments": { - * "creativeId": "example_id_123" + * "creative_id": "example_id_123" * } * } */ @@ -2446,7 +6277,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeSyncSalesAgents']; + structuredContent: components['schemas']['SyncSalesAgentsOutput']; }; }; }; @@ -2488,8 +6319,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 +6332,7 @@ export interface operations { 'application/json': { /** @enum {string} */ tool: 'media_buy_create'; - arguments: components['schemas']['CreateMediaBuyInput']; + arguments: components['schemas']['MediaBuyCreateInput']; }; }; }; @@ -2550,7 +6384,7 @@ export interface operations { * @example { * "tool": "media_buy_update", * "arguments": { - * "mediaBuyId": "example_id_123" + * "media_buy_id": "example_id_123" * } * } */ @@ -2609,7 +6443,7 @@ export interface operations { * @example { * "tool": "media_buy_delete", * "arguments": { - * "mediaBuyId": "example_id_123", + * "media_buy_id": "example_id_123", * "confirm": true * } * } @@ -2627,7 +6461,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyDelete']; + structuredContent: components['schemas']['DeleteMediaBuyOutput']; }; }; }; @@ -2669,7 +6503,7 @@ export interface operations { * @example { * "tool": "media_buy_execute", * "arguments": { - * "mediaBuyId": "example_id_123" + * "media_buy_id": "example_id_123" * } * } */ @@ -2686,7 +6520,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyExecute']; + structuredContent: components['schemas']['ExecuteMediaBuyOutput']; }; }; }; @@ -2728,7 +6562,7 @@ export interface operations { * @example { * "tool": "media_buy_get", * "arguments": { - * "mediaBuyId": "example_id_123" + * "media_buy_id": "example_id_123" * } * } */ @@ -2802,7 +6636,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyList']; + structuredContent: components['schemas']['ListMediaBuysOutput']; }; }; }; @@ -2844,8 +6678,8 @@ export interface operations { * @example { * "tool": "media_buy_validate_budget", * "arguments": { - * "tacticId": 100, - * "newBudgetAmount": 100 + * "tactic_id": 100, + * "new_budget_amount": 100 * } * } */ @@ -2862,7 +6696,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyValidateBudget']; + structuredContent: components['schemas']['ValidateMediaBuyBudgetOutput']; }; }; }; @@ -3196,21 +7030,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 +7056,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..19d1776 100644 --- a/src/types/platform-api.ts +++ b/src/types/platform-api.ts @@ -869,93 +869,602 @@ 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) */ + format_id: { + agent_url: string; + id: string; + width?: number; + height?: number; + duration_ms?: number; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string; + alt_text?: string; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + }) + | { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + } + | { + content: string; + language?: string; + } + | { + content: string; + version?: string; + } + | { + content: string; + media?: string; + } + | { + content: string; + module_type?: 'esm' | 'commonjs' | 'script'; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + ) + | { + brand_manifest: + | { + url?: string; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + product_selectors?: { + manifest_skus?: string[]; + manifest_tags?: string[]; + manifest_category?: string; + manifest_query?: string; + }; + offerings?: { + name: string; + description?: string; + assets?: { + [key: string]: unknown; + }[]; + }[]; + asset_selectors?: { + tags?: string[]; + asset_types?: ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[]; + exclude_tags?: string[]; + }; + } + | { + url: string; + url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script'; + description?: string; + }; + }; + /** @example [] */ + inputs?: { 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[]; + macros?: { + [key: string]: string; + }; + context_description?: string; }[]; - content?: { - [key: string]: unknown; - }; - /** - * @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 [] */ + tags?: string[]; + /** @example true */ + approved?: boolean; + /** @example 100 */ + weight?: number; + /** @example [] */ + placement_ids?: string[]; + /** @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; + height?: number; + duration_ms?: number; + }; + assets?: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string; + alt_text?: string; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + }) + | { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + } + | { + content: string; + language?: string; + } + | { + content: string; + version?: string; + } + | { + content: string; + media?: string; + } + | { + content: string; + module_type?: 'esm' | 'commonjs' | 'script'; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + ) + | { + brand_manifest: + | { + url?: string; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + product_selectors?: { + manifest_skus?: string[]; + manifest_tags?: string[]; + manifest_category?: string; + manifest_query?: string; + }; + offerings?: { + name: string; + description?: string; + assets?: { + [key: string]: unknown; + }[]; + }[]; + asset_selectors?: { + tags?: string[]; + asset_types?: ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[]; + exclude_tags?: string[]; + }; + } + | { + url: string; + url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script'; + description?: string; + }; + }; + /** @example [] */ + inputs?: { + name: string; + macros?: { + [key: string]: string; + }; + context_description?: string; + }[]; + /** @example [] */ + tags?: string[]; + /** @example true */ + approved?: boolean; + /** @example 100 */ + weight?: number; + /** @example [] */ + placement_ids?: string[]; + /** + * @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 +1479,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 +1588,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 +1733,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 +1806,1017 @@ 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; + height?: number; + duration_ms?: number; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string; + alt_text?: string; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + }) + | { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + } + | { + content: string; + language?: string; + } + | { + content: string; + version?: string; + } + | { + content: string; + media?: string; + } + | { + content: string; + module_type?: 'esm' | 'commonjs' | 'script'; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + ) + | { + brand_manifest: + | { + url?: string; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + product_selectors?: { + manifest_skus?: string[]; + manifest_tags?: string[]; + manifest_category?: string; + manifest_query?: string; + }; + offerings?: { + name: string; + description?: string; + assets?: { + [key: string]: unknown; + }[]; + }[]; + asset_selectors?: { + tags?: string[]; + asset_types?: ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[]; + exclude_tags?: string[]; + }; + } + | { + url: string; + url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script'; + description?: string; + }; + }; + /** @example [] */ + inputs?: { + name: string; + macros?: { + [key: string]: string; + }; + context_description?: string; + }[]; + /** @example [] */ + tags?: string[]; + /** @example true */ + approved?: boolean; + /** @example 100 */ + weight?: number; + /** @example [] */ + placement_ids?: string[]; + /** + * @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; + height?: number; + duration_ms?: number; }[]; }[]; - /** @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; + product_id?: string; + budget?: number; + pacing?: 'even' | 'asap' | 'front_loaded'; + pricing_option_id?: string; + bid_price?: number; + impressions?: number; + targeting_overlay?: { + geo_country_any_of?: string[]; + geo_region_any_of?: string[]; + geo_metro_any_of?: string[]; + geo_postal_code_any_of?: string[]; + axe_include_segment?: string; + axe_exclude_segment?: string; + frequency_cap?: { + suppress_minutes: number; + }; + }; + creative_assignments?: { + creative_id: string; + weight?: number; + placement_ids?: string[]; + }[]; + format_ids_to_provide?: { + agent_url: string; + id: string; + width?: number; + height?: number; + duration_ms?: number; + }[]; + paused?: boolean; + ext?: { + [key: string]: unknown; + }; + /** @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; + height?: number; + duration_ms?: number; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string; + alt_text?: string; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + }) + | { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + } + | { + content: string; + language?: string; + } + | { + content: string; + version?: string; + } + | { + content: string; + media?: string; + } + | { + content: string; + module_type?: 'esm' | 'commonjs' | 'script'; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + ) + | { + brand_manifest: + | { + url?: string; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + product_selectors?: { + manifest_skus?: string[]; + manifest_tags?: string[]; + manifest_category?: string; + manifest_query?: string; + }; + offerings?: { + name: string; + description?: string; + assets?: { + [key: string]: unknown; + }[]; + }[]; + asset_selectors?: { + tags?: string[]; + asset_types?: ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[]; + exclude_tags?: string[]; + }; + } + | { + url: string; + url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script'; + description?: string; + }; + }; + inputs?: { + name: string; + macros?: { + [key: string]: string; + }; + context_description?: string; + }[]; + tags?: string[]; + approved?: boolean; + weight?: number; + placement_ids?: string[]; + /** @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; + height?: number; + duration_ms?: number; }[]; }[]; - /** @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; + height?: number; + duration_ms?: number; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string; + alt_text?: string; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + }) + | { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + } + | { + content: string; + language?: string; + } + | { + content: string; + version?: string; + } + | { + content: string; + media?: string; + } + | { + content: string; + module_type?: 'esm' | 'commonjs' | 'script'; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + ) + | { + brand_manifest: + | { + url?: string; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + product_selectors?: { + manifest_skus?: string[]; + manifest_tags?: string[]; + manifest_category?: string; + manifest_query?: string; + }; + offerings?: { + name: string; + description?: string; + assets?: { + [key: string]: unknown; + }[]; + }[]; + asset_selectors?: { + tags?: string[]; + asset_types?: ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[]; + exclude_tags?: string[]; + }; + } + | { + url: string; + url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script'; + description?: string; + }; + }; + inputs?: { + name: string; + macros?: { + [key: string]: string; + }; + context_description?: string; + }[]; + tags?: string[]; + approved?: boolean; + weight?: number; + placement_ids?: string[]; + /** @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 +3101,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 +3139,7 @@ export interface components { displayName: string; }[]; }; - MediaBuyList: { + ListMediaBuysOutput: { /** @example 100 */ total: number; /** @example [] */ @@ -1851,21 +3263,252 @@ 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: ( + | { + 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; + height?: number; + duration_ms?: number; + }[]; + placements?: { + placement_id: string; + name: string; + description?: string; + format_ids?: { + agent_url: string; + id: string; + width?: number; + height?: number; + duration_ms?: number; + }[]; + }[]; + 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; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number; + p50?: number; + p75?: number; + p90?: number; + }; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number; + } | { - agent_url: string; - id: string; - }[]; + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number; + p50?: number; + p75?: number; + p90?: number; + }; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number; + } + | { + 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; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number; + }; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number; + sov_percentage?: number; + loop_duration_seconds?: number; + min_plays_per_hour?: number; + venue_package?: string; + estimated_impressions?: number; + daypart?: string; + }; + min_spend_per_package?: number; + } + )[]; + estimated_exposures?: number; + measurement?: { + type: string; + attribution: string; + window?: string; + reporting: string; + }; + delivery_measurement: { + provider: string; + notes?: string; + }; + 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' + )[]; + }; + creative_policy?: { + co_branding: 'required' | 'optional' | 'none'; + landing_page: 'any' | 'retailer_site_only' | 'must_include_retailer'; + templates_available: boolean; + }; + is_custom?: boolean; + brief_relevance?: string; + expires_at?: string; + product_card?: { + format_id: { + agent_url: string; + id: string; + width?: number; + height?: number; + duration_ms?: number; + }; + manifest: { + [key: string]: unknown; + }; + }; + product_card_detailed?: { + format_id: { + agent_url: string; + id: string; + width?: number; + height?: number; + duration_ms?: number; + }; + manifest: { + [key: string]: unknown; + }; + }; + ext?: { + [key: string]: unknown; + }; + /** @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 +3516,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 +3534,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 +3558,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 +3568,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 +3902,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 +3975,1017 @@ 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; + height?: number; + duration_ms?: number; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string; + alt_text?: string; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + }) + | { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + } + | { + content: string; + language?: string; + } + | { + content: string; + version?: string; + } + | { + content: string; + media?: string; + } + | { + content: string; + module_type?: 'esm' | 'commonjs' | 'script'; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + ) + | { + brand_manifest: + | { + url?: string; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + product_selectors?: { + manifest_skus?: string[]; + manifest_tags?: string[]; + manifest_category?: string; + manifest_query?: string; + }; + offerings?: { + name: string; + description?: string; + assets?: { + [key: string]: unknown; + }[]; + }[]; + asset_selectors?: { + tags?: string[]; + asset_types?: ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[]; + exclude_tags?: string[]; + }; + } + | { + url: string; + url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script'; + description?: string; + }; + }; + /** @example [] */ + inputs?: { + name: string; + macros?: { + [key: string]: string; + }; + context_description?: string; + }[]; + /** @example [] */ + tags?: string[]; + /** @example true */ + approved?: boolean; + /** @example 100 */ + weight?: number; + /** @example [] */ + placement_ids?: string[]; + /** + * @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; + height?: number; + duration_ms?: number; }[]; }[]; - /** @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; + product_id?: string; + budget?: number; + pacing?: 'even' | 'asap' | 'front_loaded'; + pricing_option_id?: string; + bid_price?: number; + impressions?: number; + targeting_overlay?: { + geo_country_any_of?: string[]; + geo_region_any_of?: string[]; + geo_metro_any_of?: string[]; + geo_postal_code_any_of?: string[]; + axe_include_segment?: string; + axe_exclude_segment?: string; + frequency_cap?: { + suppress_minutes: number; + }; + }; + creative_assignments?: { + creative_id: string; + weight?: number; + placement_ids?: string[]; + }[]; + format_ids_to_provide?: { + agent_url: string; + id: string; + width?: number; + height?: number; + duration_ms?: number; + }[]; + paused?: boolean; + ext?: { + [key: string]: unknown; + }; + /** @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; + height?: number; + duration_ms?: number; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string; + alt_text?: string; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + }) + | { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + } + | { + content: string; + language?: string; + } + | { + content: string; + version?: string; + } + | { + content: string; + media?: string; + } + | { + content: string; + module_type?: 'esm' | 'commonjs' | 'script'; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + ) + | { + brand_manifest: + | { + url?: string; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + product_selectors?: { + manifest_skus?: string[]; + manifest_tags?: string[]; + manifest_category?: string; + manifest_query?: string; + }; + offerings?: { + name: string; + description?: string; + assets?: { + [key: string]: unknown; + }[]; + }[]; + asset_selectors?: { + tags?: string[]; + asset_types?: ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[]; + exclude_tags?: string[]; + }; + } + | { + url: string; + url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script'; + description?: string; + }; + }; + inputs?: { + name: string; + macros?: { + [key: string]: string; + }; + context_description?: string; + }[]; + tags?: string[]; + approved?: boolean; + weight?: number; + placement_ids?: string[]; + /** @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; + height?: number; + duration_ms?: number; }[]; }[]; - /** @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; + height?: number; + duration_ms?: number; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string; + alt_text?: string; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + }) + | { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + } + | { + content: string; + language?: string; + } + | { + content: string; + version?: string; + } + | { + content: string; + media?: string; + } + | { + content: string; + module_type?: 'esm' | 'commonjs' | 'script'; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + ) + | { + brand_manifest: + | { + url?: string; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + product_selectors?: { + manifest_skus?: string[]; + manifest_tags?: string[]; + manifest_category?: string; + manifest_query?: string; + }; + offerings?: { + name: string; + description?: string; + assets?: { + [key: string]: unknown; + }[]; + }[]; + asset_selectors?: { + tags?: string[]; + asset_types?: ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[]; + exclude_tags?: string[]; + }; + } + | { + url: string; + url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script'; + description?: string; + }; + }; + inputs?: { + name: string; + macros?: { + [key: string]: string; + }; + context_description?: string; + }[]; + tags?: string[]; + approved?: boolean; + weight?: number; + placement_ids?: string[]; + /** @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 +5032,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 +5064,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 +5120,611 @@ 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; + height?: number; + duration_ms?: number; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string; + alt_text?: string; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + }) + | { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + } + | { + content: string; + language?: string; + } + | { + content: string; + version?: string; + } + | { + content: string; + media?: string; + } + | { + content: string; + module_type?: 'esm' | 'commonjs' | 'script'; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + ) + | { + brand_manifest: + | { + url?: string; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + product_selectors?: { + manifest_skus?: string[]; + manifest_tags?: string[]; + manifest_category?: string; + manifest_query?: string; + }; + offerings?: { + name: string; + description?: string; + assets?: { + [key: string]: unknown; + }[]; + }[]; + asset_selectors?: { + tags?: string[]; + asset_types?: ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[]; + exclude_tags?: string[]; + }; + } + | { + url: string; + url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script'; + description?: string; + }; + }; + /** @example [] */ + inputs?: { + name: string; + macros?: { + [key: string]: string; + }; + context_description?: string; + }[]; + /** @example [] */ + tags?: string[]; + /** @example true */ + approved?: boolean; + /** @example 100 */ + weight?: number; + /** @example [] */ + placement_ids?: string[]; + /** + * @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; + height?: number; + duration_ms?: number; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string; + alt_text?: string; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + }) + | { + url: string; + duration_ms?: number; + format?: string; + bitrate_kbps?: number; + } + | { + content: string; + language?: string; + } + | { + content: string; + version?: string; + } + | { + content: string; + media?: string; + } + | { + content: string; + module_type?: 'esm' | 'commonjs' | 'script'; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: '2.0' | '3.0' | '4.0' | '4.1' | '4.2'; + vpaid_enabled?: boolean; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[]; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: '1.0' | '1.1'; + duration_ms?: number; + tracking_events?: ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[]; + companion_ads?: boolean; + } + ) + | { + brand_manifest: + | { + url?: string; + name: string; + logos?: { + url: string; + tags?: string[]; + width?: number; + height?: number; + }[]; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + background?: string; + text?: string; + }; + fonts?: { + primary?: string; + secondary?: string; + font_urls?: string[]; + }; + tone?: string; + tagline?: string; + assets?: { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[]; + name?: string; + description?: string; + width?: number; + height?: number; + duration_seconds?: number; + file_size_bytes?: number; + format?: string; + metadata?: { + [key: string]: unknown; + }; + }[]; + product_catalog?: { + feed_url: string; + feed_format?: 'google_merchant_center' | 'facebook_catalog' | 'custom'; + categories?: string[]; + last_updated?: string; + update_frequency?: 'realtime' | 'hourly' | 'daily' | 'weekly'; + }; + disclaimers?: { + text: string; + context?: string; + required?: boolean; + }[]; + industry?: string; + target_audience?: string; + contact?: { + email?: string; + phone?: string; + }; + metadata?: { + created_date?: string; + updated_date?: string; + version?: string; + }; + } + | string; + product_selectors?: { + manifest_skus?: string[]; + manifest_tags?: string[]; + manifest_category?: string; + manifest_query?: string; + }; + offerings?: { + name: string; + description?: string; + assets?: { + [key: string]: unknown; + }[]; + }[]; + asset_selectors?: { + tags?: string[]; + asset_types?: ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[]; + exclude_tags?: string[]; + }; + } + | { + url: string; + url_type?: 'clickthrough' | 'tracker_pixel' | 'tracker_script'; + description?: string; + }; + }; + /** @example [] */ + inputs?: { + name: string; + macros?: { + [key: string]: string; + }; + context_description?: string; + }[]; + /** @example [] */ + tags?: string[]; + /** @example true */ + approved?: boolean; + /** @example 100 */ + weight?: number; + /** @example [] */ + placement_ids?: string[]; + /** + * @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 +7220,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 +7238,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeAssign']; + structuredContent: components['schemas']['AssignCreativeOutput']; }; }; }; @@ -4152,15 +7280,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 +7346,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 +7405,7 @@ export interface operations { * @example { * "tool": "creative_delete", * "arguments": { - * "creativeId": "example_id_123" + * "creative_id": "example_id_123" * } * } */ @@ -4288,7 +7422,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeDelete']; + structuredContent: components['schemas']['DeleteCreativeOutput']; }; }; }; @@ -4330,7 +7464,7 @@ export interface operations { * @example { * "tool": "creative_get", * "arguments": { - * "creativeId": "example_id_123" + * "creative_id": "example_id_123" * } * } */ @@ -4404,7 +7538,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeList']; + structuredContent: components['schemas']['ListCreativesOutput']; }; }; }; @@ -4446,7 +7580,7 @@ export interface operations { * @example { * "tool": "media_buy_get", * "arguments": { - * "mediaBuyId": "example_id_123" + * "media_buy_id": "example_id_123" * } * } */ @@ -4520,7 +7654,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyList']; + structuredContent: components['schemas']['ListMediaBuysOutput']; }; }; };