diff --git a/.changeset/auto-update-1763433106.md b/.changeset/auto-update-1763433106.md new file mode 100644 index 0000000..92bb89c --- /dev/null +++ b/.changeset/auto-update-1763433106.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..2f36b94 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,215 @@ 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 + additionalProperties: {} + - 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 + properties: {} + 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 + required: + - agent_url + - id + - type: object + properties: + agent_url: + type: string + id: + type: string + 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: + bid_price: type: number - minimum: 0 - exclusiveMinimum: true - pricingSignalCost: - 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 + 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 +3508,708 @@ 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 + required: + - agent_url + - id assets: type: object additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + type: string + alt_text: + type: string + required: + - url + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + 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: + - allOf: + - type: object + additionalProperties: {} + - 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 + 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 + - 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 required: - creative_id - name - format_id + - assets + 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,46 +4219,709 @@ 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 + required: + - agent_url + - id assets: type: object additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + type: string + alt_text: + type: string + required: + - url + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + 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: + - allOf: + - type: object + additionalProperties: {} + - 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 + 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 + - 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 required: - creative_id - name - format_id + - assets example: [] required: - - tacticId - - agentId + - brand_manifest + - start_time + - end_time + - tactic_id + - agent_id - name - products UpdateMediaBuyInput: type: object properties: - mediaBuyId: + media_buy_id: type: string example: example_id_123 name: @@ -3448,60 +4941,100 @@ components: - FAILED - REJECTED example: DRAFT - creativeIds: + creative_ids: type: array items: type: string example: [] + products: + type: array + items: + type: object + properties: + product_id: + type: string + budget: + type: number + pacing: + 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 +5061,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,9 +5156,22 @@ components: - video - display - audio - standardFormatsOnly: - description: Only return products accepting IAB standard formats - type: boolean + 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 + required: + - agent_url + - id + standardFormatsOnly: + description: Only return products accepting IAB standard formats + type: boolean minExposures: description: Minimum exposures/impressions needed for measurement validity type: integer @@ -3642,10 +5188,10 @@ components: required: - brief - brandManifestUrl - SaveProductInput: + MediaProductSaveInput: type: object properties: - productId: + product_id: type: string example: example_id_123 name: @@ -3654,670 +5200,837 @@ 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 + publisher_properties: + type: array + items: + anyOf: + - type: object properties: - agent_url: + publisher_domain: type: string - id: + property_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + property_tags: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + - type: object + properties: + publisher_domain: type: string + property_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + property_tags: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 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_domain + minItems: 2 + example: [] + format_ids: type: array items: type: object - additionalProperties: {} + properties: + agent_url: + type: string + id: + type: string + required: + - agent_url + - id example: [] - supportedTargeting: + placements: type: array items: - type: string + 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 + required: + - agent_url + - id + - type: object + properties: + agent_url: + type: string + id: + type: string + 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 + required: + - agent_url + - id + - type: object + properties: + agent_url: + type: string + id: + type: string + required: + - agent_url + - id + minItems: 2 + required: + - placement_id + - name + minItems: 2 example: [] - adcpAgentId: - type: string - example: example_id_123 - required: - - productId - - name - - description - - publisherId - - publisherName - - deliveryType - - inventoryType - - pricingModel - ListProductsInput: - type: object - properties: - take: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - skip: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - SyncProductsInput: - type: object - properties: - sourceId: - type: string - example: example_id_123 - required: - - sourceId - GetAgentInput: - type: object - properties: - agentId: - description: The agent ID to retrieve - type: string - example: example_id_123 - required: - - agentId - ListAgentsInput: - type: object - properties: - type: - description: Filter by agent type (SALES or OUTCOME) - type: string - enum: - - SALES - - OUTCOME - example: SALES - status: - description: Filter by status (PENDING, ACTIVE, DISABLED) - type: string - enum: - - PENDING - - ACTIVE - - DISABLED - example: PENDING - organizationId: - description: Filter by organization ID - type: string - example: example_id_123 - relationship: - description: >- - Filter by relationship (SELF = owned by you, SCOPE3 = Scope3-provided, MARKETPLACE = third-party marketplace - agents) - type: string - enum: - - SELF - - SCOPE3 - - MARKETPLACE - example: SELF - name: - description: Filter by agent name (partial match) - type: string - example: Example Name - RegisterAgentInput: - type: object - properties: - type: - description: The type of agent to register - type: string - enum: - - SALES - - OUTCOME - example: SALES - name: - description: Agent name - type: string - minLength: 1 - example: Example Name - description: - description: Agent description - type: string - example: string - endpointUrl: - description: Agent endpoint URL - type: string - format: uri - example: https://example.com - protocol: - description: Protocol used by the agent (MCP or A2A) - type: string - enum: - - MCP - - A2A - example: MCP - authenticationType: - description: Authentication type - type: string - enum: - - API_KEY - - OAUTH - - NO_AUTH - - JWT - example: API_KEY - organizationId: - description: Organization ID - type: string - example: example_id_123 - auth: - description: Authentication configuration object - anyOf: - - type: object - properties: - type: - type: string - enum: - - jwt - privateKey: - type: string - minLength: 1 - issuer: - type: string - minLength: 1 - subject: - type: string - minLength: 1 - keyId: - type: string - minLength: 1 - scope: - type: string - minLength: 1 - tokenEndpointUrl: - type: string - format: uri - audienceUrl: - type: string - format: uri - algorithm: - type: string - enum: - - ES256 - - RS256 - environment: - type: string - required: - - type - - privateKey - - issuer - - subject - - keyId - - scope - - tokenEndpointUrl - - audienceUrl - - type: object - properties: - type: - type: string - enum: - - bearer - - apikey - - api_key - token: - type: string - minLength: 1 - required: - - type - - token - - type: object - properties: - type: - type: string - enum: - - oauth - - oauth2 - token: - type: string - minLength: 1 - required: - - type - - token - - type: object - properties: {} - required: - - type - - name - - endpointUrl - - protocol - UnregisterAgentInput: - type: object - properties: - agentId: - description: The agent ID to unregister - type: string - example: example_id_123 - required: - - agentId - UpdateAgentInput: - type: object - properties: - agentId: - description: The agent ID to update - type: string - example: example_id_123 - name: - description: New agent name - type: string - example: Example Name - description: - description: New agent description - type: string - example: string - endpointUrl: - description: New endpoint URL - type: string - format: uri - example: https://example.com - protocol: - description: New protocol - type: string - enum: - - MCP - - A2A - example: MCP - authenticationType: - description: New authentication type - type: string - enum: - - API_KEY - - OAUTH - - NO_AUTH - - JWT - example: API_KEY - auth: - description: New authentication configuration + delivery_type: anyOf: - - type: object - properties: - type: - type: string - enum: - - jwt - privateKey: - type: string - minLength: 1 - issuer: - type: string - minLength: 1 - subject: - type: string - minLength: 1 - keyId: - type: string - minLength: 1 - scope: - type: string - minLength: 1 - tokenEndpointUrl: - type: string - format: uri - audienceUrl: - type: string - format: uri - algorithm: - type: string - enum: - - ES256 - - RS256 - environment: - type: string - required: - - type - - privateKey - - issuer - - subject - - keyId - - scope - - tokenEndpointUrl - - audienceUrl - - type: object - properties: - type: - type: string - enum: - - bearer - - apikey - - api_key - token: - type: string - minLength: 1 - required: - - type - - token - - type: object - properties: - type: - type: string - enum: - - oauth - - oauth2 - token: - type: string - minLength: 1 - required: - - type - - token - - type: object - properties: {} - required: - - agentId - CreateTacticInput: - type: object - properties: - campaignId: - type: string - example: example_id_123 - name: - type: string - minLength: 1 - example: Example Name - prompt: - type: string - example: string - channelCodes: - type: array - items: - type: string - enum: - - ctv - - video - - display - - app - - social - example: [] - countryCodes: - type: array - items: - type: string - example: [] - languages: - description: Language codes - type: array - items: - type: string - example: [] - availableBrandStandards: - type: array - items: - type: object - properties: - id: - type: number - name: - type: string - required: - - id - - name - example: [] - availableBrandStory: + - type: string + enum: + - guaranteed + - type: string + enum: + - non_guaranteed + pricing_options: type: array items: - type: object - properties: - id: - type: number - name: - type: string - required: - - id - - name + anyOf: + - anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + 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 + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + 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 + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + 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 + - parameters + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + 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 + - 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 + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + 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 + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + 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 + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + 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 + - parameters + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + 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 + - 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: [] - required: - - campaignId - - name - UpdateTacticInput: - type: object - properties: - tacticId: + estimated_exposures: type: number example: 100 - name: - type: string - example: Example Name - prompt: + 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 - channelCodes: - type: array - items: - type: string - enum: - - ctv - - video - - display - - app - - social - example: [] - countryCodes: - type: array - items: - type: string - example: [] - availableBrandStandards: - type: array - items: - type: object - properties: - id: - type: number - name: - type: string - required: - - id - - name - example: [] - availableBrandStory: - type: array - items: - type: object - properties: - id: - type: number - name: - type: string - required: - - id - - name - example: [] - required: - - tacticId - DeleteTacticInput: - type: object - properties: - tacticId: - type: number - example: 100 - confirm: - type: boolean - example: true - required: - - tacticId - - confirm - GetTacticInput: - type: object - properties: - tacticId: - type: number - example: 100 - required: - - tacticId - ListTacticsInput: - type: object - properties: - campaignId: - type: string - example: example_id_123 - take: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - skip: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - LinkCampaignToTacticInput: - type: object - properties: - tacticId: - type: number - example: 100 - campaignId: - type: string - example: example_id_123 - required: - - tacticId - - campaignId - UnlinkCampaignFromTacticInput: - type: object - properties: - tacticId: - type: number - example: 100 - campaignId: + expires_at: type: string - example: example_id_123 - required: - - tacticId - - campaignId - RegisterWebhookInput: - type: object - properties: - brandAgentId: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - endpoint: + example: string + product_card: type: object properties: - url: - type: string - format: uri - method: - type: string - enum: - - POST - - PUT - headers: - type: object - additionalProperties: - type: string - authentication: + format_id: type: object properties: - type: + agent_url: type: string - enum: - - bearer - - basic - - hmac - credentials: + id: type: string required: - - type - - credentials + - agent_url + - id + manifest: + type: object + additionalProperties: {} 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: + - format_id + - manifest + product_card_detailed: type: object properties: - maxRetries: - type: integer - minimum: 0 - maximum: 9007199254740991 - backoffMultiplier: - type: number - minimum: 0 - exclusiveMinimum: true - maxBackoffSeconds: - type: number - minimum: 0 - exclusiveMinimum: true + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + required: + - agent_url + - id + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + customerId: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + adcpAgentId: + type: string + example: example_id_123 required: - - endpoint - - eventTypes - ListWebhooksInput: + - product_id + - name + - description + - publisher_properties + - format_ids + - delivery_type + - pricing_options + - delivery_measurement + ListProductsInput: type: object properties: take: @@ -4330,339 +6043,3259 @@ components: minimum: 0 maximum: 9007199254740991 example: 100 - DeleteWebhookInput: + SyncProductsInput: type: object properties: - webhookId: + sourceId: type: string example: example_id_123 required: - - webhookId - CreateServiceTokenInput: + - sourceId + GetAgentInput: type: object properties: - name: - description: Human-readable name for the service token - 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. + agentId: + description: The agent ID to retrieve type: string - minLength: 1 - example: Example Name + example: example_id_123 required: - - name - UpdateServiceTokenInput: + - agentId + ListAgentsInput: type: object properties: - id: - description: The unique identifier of the service token to update - type: integer - format: int64 - example: 100 + type: + 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) + type: string + enum: + - PENDING + - ACTIVE + - DISABLED + example: PENDING + organizationId: + description: Filter by organization ID + type: string + example: example_id_123 + relationship: + description: >- + Filter by relationship (SELF = owned by you, SCOPE3 = Scope3-provided, MARKETPLACE = third-party marketplace + agents) + type: string + enum: + - SELF + - SCOPE3 + - MARKETPLACE + example: SELF name: - description: Updated human-readable name for the service token + description: Filter by agent name (partial match) + type: string + example: Example Name + RegisterAgentInput: + type: object + properties: + type: + description: The type of agent to register + type: string + enum: + - SALES + - OUTCOME + - SIGNAL + example: SALES + name: + description: Agent name type: string minLength: 1 example: Example Name description: - description: Updated description of the token purpose and usage + description: Agent description type: string example: string - expiresInDays: - description: Number of days to extend expiration from now (max 365). Updates the expiresAt timestamp - type: integer - exclusiveMinimum: true - maximum: 365 - example: 100 - required: - - id - ArchiveServiceTokenInput: - type: object - properties: - id: - description: The unique identifier of the service token to archive - type: integer - format: int64 - example: 100 + endpointUrl: + description: Agent endpoint URL + type: string + format: uri + example: https://example.com + protocol: + description: Protocol used by the agent (MCP or A2A) + type: string + enum: + - MCP + - A2A + example: MCP + authenticationType: + description: Authentication type + type: string + enum: + - API_KEY + - OAUTH + - NO_AUTH + - JWT + example: API_KEY + organizationId: + description: Organization ID + type: string + example: example_id_123 + auth: + description: Authentication configuration object + anyOf: + - type: object + properties: + type: + type: string + enum: + - jwt + privateKey: + type: string + minLength: 1 + issuer: + type: string + minLength: 1 + subject: + type: string + minLength: 1 + keyId: + type: string + minLength: 1 + scope: + type: string + minLength: 1 + tokenEndpointUrl: + type: string + format: uri + audienceUrl: + type: string + format: uri + algorithm: + type: string + enum: + - ES256 + - RS256 + environment: + type: string + required: + - type + - privateKey + - issuer + - subject + - keyId + - scope + - tokenEndpointUrl + - audienceUrl + - type: object + properties: + type: + type: string + enum: + - bearer + - apikey + - api_key + token: + type: string + minLength: 1 + required: + - type + - token + - type: object + properties: + type: + type: string + enum: + - oauth + - oauth2 + token: + type: string + minLength: 1 + required: + - type + - token + - type: object + properties: {} required: - - id - GetServiceTokenInput: + - type + - name + - endpointUrl + - protocol + UnregisterAgentInput: 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 + agentId: + description: The agent ID to unregister + type: string + example: example_id_123 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: + - agentId + UpdateAgentInput: type: object properties: - id: + agentId: + description: The agent ID to update type: string example: example_id_123 - tacticId: - type: number - example: 100 - customerId: + name: + description: New agent name + type: string + example: Example Name + description: + description: New agent description + type: string + example: string + endpointUrl: + description: New endpoint URL + type: string + format: uri + example: https://example.com + protocol: + description: New protocol + type: string + enum: + - MCP + - A2A + example: MCP + authenticationType: + description: New authentication type + type: string + enum: + - API_KEY + - OAUTH + - NO_AUTH + - JWT + example: API_KEY + auth: + description: New authentication configuration + anyOf: + - type: object + properties: + type: + type: string + enum: + - jwt + privateKey: + type: string + minLength: 1 + issuer: + type: string + minLength: 1 + subject: + type: string + minLength: 1 + keyId: + type: string + minLength: 1 + scope: + type: string + minLength: 1 + tokenEndpointUrl: + type: string + format: uri + audienceUrl: + type: string + format: uri + algorithm: + type: string + enum: + - ES256 + - RS256 + environment: + type: string + required: + - type + - privateKey + - issuer + - subject + - keyId + - scope + - tokenEndpointUrl + - audienceUrl + - type: object + properties: + type: + type: string + enum: + - bearer + - apikey + - api_key + token: + type: string + minLength: 1 + required: + - type + - token + - type: object + properties: + type: + type: string + enum: + - oauth + - oauth2 + token: + type: string + minLength: 1 + required: + - type + - token + - type: object + properties: {} + required: + - agentId + CreateTacticInput: + type: object + properties: + campaignId: + type: string + example: example_id_123 + name: + type: string + minLength: 1 + example: Example Name + prompt: + type: string + example: string + channelCodes: + type: array + items: + type: string + enum: + - ctv + - video + - display + - app + - social + example: [] + countryCodes: + type: array + items: + type: string + example: [] + languages: + description: Language codes + type: array + items: + type: string + example: [] + availableBrandStandards: + type: array + items: + type: object + properties: + id: + type: number + name: + type: string + required: + - id + - name + example: [] + availableBrandStory: + type: array + items: + type: object + properties: + id: + type: number + name: + type: string + required: + - id + - name + example: [] + required: + - campaignId + - name + UpdateTacticInput: + type: object + properties: + tacticId: + type: number + example: 100 + name: + type: string + example: Example Name + prompt: + type: string + example: string + channelCodes: + type: array + items: + type: string + enum: + - ctv + - video + - display + - app + - social + example: [] + countryCodes: + type: array + items: + type: string + example: [] + availableBrandStandards: + type: array + items: + type: object + properties: + id: + type: number + name: + type: string + required: + - id + - name + example: [] + availableBrandStory: + type: array + items: + type: object + properties: + id: + type: number + name: + type: string + required: + - id + - name + example: [] + required: + - tacticId + DeleteTacticInput: + type: object + properties: + tacticId: + type: number + example: 100 + confirm: + type: boolean + example: true + required: + - tacticId + - confirm + GetTacticInput: + type: object + properties: + tacticId: + type: number + example: 100 + required: + - tacticId + ListTacticsInput: + type: object + properties: + campaignId: + type: string + example: example_id_123 + take: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + skip: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + LinkCampaignToTacticInput: + type: object + properties: + tacticId: + type: number + example: 100 + campaignId: + type: string + example: example_id_123 + required: + - tacticId + - campaignId + UnlinkCampaignFromTacticInput: + type: object + properties: + tacticId: + type: number + example: 100 + campaignId: + type: string + example: example_id_123 + required: + - tacticId + - campaignId + RegisterWebhookInput: + type: object + properties: + brandAgentId: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + endpoint: + type: object + properties: + url: + type: string + format: uri + method: + type: string + enum: + - POST + - PUT + headers: + type: object + additionalProperties: + type: string + authentication: + type: object + properties: + type: + type: string + enum: + - bearer + - basic + - hmac + credentials: + type: string + required: + - type + - credentials + required: + - url + - method + eventTypes: + type: array + items: + type: string + example: [] + filters: + type: object + properties: + campaigns: + type: array + items: + type: string + tactics: + type: array + items: + type: string + creatives: + type: array + items: + type: string + mediaBuys: + type: array + items: + type: string + metrics: + type: array + items: + type: string + minSeverity: + type: string + enum: + - info + - warning + - critical + retryPolicy: + type: object + properties: + maxRetries: + type: integer + minimum: 0 + maximum: 9007199254740991 + backoffMultiplier: + type: number + minimum: 0 + exclusiveMinimum: true + maxBackoffSeconds: + type: number + minimum: 0 + exclusiveMinimum: true + required: + - endpoint + - eventTypes + ListWebhooksInput: + type: object + properties: + take: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + skip: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + DeleteWebhookInput: + type: object + properties: + webhookId: + type: string + example: example_id_123 + required: + - webhookId + CreateServiceTokenInput: + type: object + properties: + name: + description: Human-readable name for the service token + type: string + minLength: 1 + example: Example Name + description: + description: Optional description of the token purpose and usage + type: string + example: string + expiresInDays: + description: Number of days until token expiration (max 365). If not provided, token does not expire + type: integer + exclusiveMinimum: true + maximum: 365 + example: 100 + scope: + description: 'Token scope: CUSTOMER (full customer access) or SEAT (scoped to specific seat)' + default: CUSTOMER + type: string + enum: + - CUSTOMER + - SEAT + seatName: + description: Seat name (required when scope is SEAT). The seat will be looked up for the customer. + type: string + minLength: 1 + example: Example Name + required: + - name + UpdateServiceTokenInput: + type: object + properties: + id: + description: The unique identifier of the service token to update + type: integer + format: int64 + example: 100 + name: + description: Updated human-readable name for the service token + type: string + minLength: 1 + example: Example Name + description: + description: Updated description of the token purpose and usage + type: string + example: string + expiresInDays: + description: Number of days to extend expiration from now (max 365). Updates the expiresAt timestamp + type: integer + exclusiveMinimum: true + maximum: 365 + example: 100 + required: + - id + ArchiveServiceTokenInput: + type: object + properties: + id: + description: The unique identifier of the service token to archive + type: integer + format: int64 + example: 100 + required: + - id + GetServiceTokenInput: + type: object + properties: + id: + description: The unique identifier of the service token to retrieve + type: integer + format: int64 + example: 100 + includeSecret: + description: Whether to fetch the access_client_secret from Google Secret Manager. Defaults to false for security + default: false + type: boolean + required: + - id + ListServiceTokensInput: + type: object + properties: + includeArchived: + description: Whether to include archived tokens in the response + default: false + type: boolean + seatId: + description: Filter tokens by seat ID + type: integer + format: int64 + example: 100 + userId: + description: Filter tokens by user ID + type: integer + format: int64 + example: 100 + MediaBuyGet: + type: object + properties: + media_buy_id: + description: ADCP media buy identifier + type: string + example: example_id_123 + tactic_id: + description: Internal tactic ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + customer_id: + description: Internal customer ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + name: + description: Media buy name + type: string + example: Example Name + description: + description: Media buy description + type: string + example: string + status: + description: Internal status (DRAFT, ACTIVE, PAUSED, etc.) + type: string + example: string + products: + description: Pre-execution product configuration + type: array + items: + type: object + properties: + product_id: + description: ADCP product identifier + type: string + sales_agent_id: + type: string + sales_agent_name: + type: string + budget: + description: ADCP budget field + type: number + pacing: + description: ADCP pacing field + type: string + enum: + - asap + - even + - front_loaded + pricing_option_id: + type: string + bid_price: + type: number + display_order: + type: number + creative_formats: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + 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 + 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 + required: + - agent_url + - id + status: + anyOf: + - type: string + enum: + - draft + - type: string + enum: + - active + - type: string + enum: + - paused + - type: string + enum: + - completed + 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 + required: + - agent_url + - id + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + type: string + alt_text: + type: string + required: + - url + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + 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: + - allOf: + - type: object + additionalProperties: {} + - 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 + 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 + - 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 + 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 + required: + - agent_url + - id + required: + - package_id + - status + - 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 + required: + - agent_url + - id + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + type: string + alt_text: + type: string + required: + - url + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + 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: + - allOf: + - type: object + additionalProperties: {} + - 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 + 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 + - 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 + status: + description: Internal creative status (not in ADCP protocol) + type: string + required: + - creative_id + - name + - format_id + - assets + - status + example: [] + adcp: + description: ADCP-specific metadata (from execute response) + type: object + properties: + media_buy_id: + type: string + status: + type: string + webhook_url: + type: string + performance: + description: Performance metrics (from reporting) + type: object + properties: + impressions: + type: number + spend: + type: number + clicks: + type: number + last_updated: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + required: + - impressions + - spend + - clicks + created_at: + description: Created timestamp + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + updated_at: + description: Updated timestamp + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + archived_at: + description: Archived timestamp + nullable: true + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + required: + - media_buy_id + - tactic_id + - customer_id + - name + - status + - created_at + - updated_at + MediaProductSave: + type: object + properties: + product_id: + type: string + example: example_id_123 + name: + type: string + example: Example Name + description: + type: string + example: string + publisher_properties: + type: array + items: + anyOf: + - type: object + properties: + publisher_domain: + type: string + property_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + property_tags: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + - type: object + properties: + publisher_domain: + type: string + property_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + property_tags: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + minItems: 2 + example: [] + format_ids: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + 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 + required: + - agent_url + - id + - type: object + properties: + agent_url: + type: string + id: + type: string + 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 + required: + - agent_url + - id + - type: object + properties: + agent_url: + type: string + id: + type: string + 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 + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + 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 + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + 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 + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + 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 + - parameters + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + 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 + - 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 + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + 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 + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + 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 + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + 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 + - parameters + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + 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 + - 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: - type: string - status: + provider: type: string - webhookUrl: + notes: type: string - performance: + required: + - provider + 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 - archivedAt: + - 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 - 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 + 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 + required: + - agent_url + - id + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + id: + description: Internal database ID + type: string + example: example_id_123 + customer_id: + description: Customer who owns this product + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + adcp_agent_id: + description: Source ADCP agent ID + type: string + example: example_id_123 + sales_agent_name: + description: Human-readable agent name + type: string + example: Example Name + inventory_type: + description: Internal classification of inventory type + type: string + enum: + - premium + - run_of_site + - targeted_package + example: premium + created_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string - updatedAt: + updated_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string required: - - id - - tacticId - - customerId + - product_id - name - - pricing - - status - - createdAt - - updatedAt + - description + - publisher_properties + - format_ids + - delivery_type + - pricing_options + - delivery_measurement + - id + - customer_id + - created_at + - updated_at TacticGet: type: object properties: @@ -4878,21 +9511,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 +9579,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 +9632,7 @@ components: - total - items additionalProperties: false - MediaBuyValidateBudget: + ValidateMediaBuyBudgetOutput: type: object properties: valid: @@ -5104,22 +9737,22 @@ components: success: type: boolean example: true - productsFound: + products_found: type: integer minimum: 0 maximum: 9007199254740991 example: 100 - productsSaved: + products_saved: type: integer minimum: 0 maximum: 9007199254740991 example: 100 - successfulAgents: + successful_agents: type: integer minimum: 0 maximum: 9007199254740991 example: 100 - failedAgents: + failed_agents: type: integer minimum: 0 maximum: 9007199254740991 @@ -5127,98 +9760,336 @@ components: products: type: array items: - type: object - properties: - productId: - type: string - name: - type: string - publisherName: - type: string - salesAgentId: - type: string - salesAgentName: - type: string - deliveryType: - type: string - enum: - - guaranteed - - non_guaranteed - inventoryType: - type: string - enum: - - premium - - run_of_site - - targeted_package - creativeFormats: - anyOf: - - type: array - items: - type: string - - type: array - items: - type: object - properties: - agent_url: - type: string - id: - type: string - required: - - agent_url - - id - additionalProperties: false - fixedCpm: - type: number - floorCpm: - type: number - targetCpm: - type: number - required: - - productId - - name - - publisherName - - deliveryType - - inventoryType - additionalProperties: false + $ref: '#/components/schemas/MediaProductSaveOutput' + example: [] + required: + - success + - 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: + 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: - - success - - productsFound - - productsSaved - - successfulAgents - - failedAgents - - products + - total + - items additionalProperties: false - MediaProductSave: + AgentRegister: 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 + enum: + - SALES + - OUTCOME + - SIGNAL + example: SALES + status: + type: string + example: string + endpointUrl: + type: string + example: https://example.com + required: + - agentId + - name + - type + - status + - endpointUrl + additionalProperties: false + AgentUnregister: + type: object + properties: + success: + type: boolean + example: true + agentId: + type: string + example: example_id_123 + type: + type: string + enum: + - SALES + - OUTCOME + - SIGNAL + example: SALES + required: + - success + - agentId + - type + additionalProperties: false + AgentUpdate: + type: object + properties: + agentId: type: string example: example_id_123 - publisherName: + name: type: string example: Example Name - customerId: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 + type: + type: string + enum: + - SALES + - OUTCOME + - SIGNAL + example: SALES + status: + type: string + 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 +10097,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 +10127,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 - - productsSaved + - tacticId + - campaignId additionalProperties: false - AgentGet: - anyOf: - - type: object - properties: - agentId: - type: string - name: - type: string - type: - type: string - enum: - - SALES - - OUTCOME - status: - type: string - relationship: - type: string - endpointUrl: - type: string - protocol: - type: string - authenticationType: - type: string - description: - type: string - organizationId: - type: string - registeredBy: - type: string - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - required: - - agentId - - name - - type - - status - - relationship - - endpointUrl - - protocol - - authenticationType - - createdAt - - updatedAt - additionalProperties: false - - type: object + TacticUnlinkCampaign: + type: object + properties: + success: + type: boolean + example: true + tacticId: + type: number + example: 100 + campaignId: + type: string + example: example_id_123 + required: + - success + - tacticId + - campaignId + additionalProperties: false + 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: + required: + - url + - method + additionalProperties: false + 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 - 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 +10278,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 + - items 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 +10449,2862 @@ components: required: - id - name - - campaignId - - channelCodes - - countryCodes - - createdAt + - updatedAt additionalProperties: false - TacticDelete: + ArchiveServiceTokenOutput: type: object properties: - success: - type: boolean - example: true - tacticId: + 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 + additionalProperties: false + GetServiceTokenOutput: + 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 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 + - id + - customerId + - name + - accessClientId + - createdAt + - updatedAt additionalProperties: false - TacticList: + ListServiceTokensOutput: type: object properties: - total: + 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 - items: - type: array - items: - $ref: '#/components/schemas/TacticGetOutput' - example: [] required: - - total - - items + - tokens + - count additionalProperties: false - TacticLinkCampaign: + MediaBuyGetOutput: type: object properties: - success: - type: boolean - example: true - tacticId: - type: number - example: 100 - campaignId: + media_buy_id: + description: ADCP media buy identifier type: string example: example_id_123 - required: - - success - - tacticId - - campaignId - additionalProperties: false - TacticUnlinkCampaign: - type: object - properties: - success: - type: boolean - example: true - tacticId: - type: number + tactic_id: + description: Internal tactic ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 example: 100 - campaignId: - type: string - example: example_id_123 - required: - - success - - tacticId - - campaignId - additionalProperties: false - WebhookRegister: - type: object - properties: - id: - type: string - example: example_id_123 - brandAgentId: + customer_id: + description: Internal customer 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: + 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 - example: [] - filters: - type: object - properties: - campaigns: - type: array - items: + type: object + properties: + product_id: + description: ADCP product identifier type: string - tactics: - type: array - items: + sales_agent_id: type: string - creatives: - type: array - items: + sales_agent_name: type: string - mediaBuys: - type: array - items: + budget: + description: ADCP budget field + type: number + pacing: + description: ADCP pacing field type: string - metrics: - type: array - items: + enum: + - asap + - even + - front_loaded + pricing_option_id: 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: + bid_price: + type: number + display_order: + type: number + creative_formats: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + 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: - id: + 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 + 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 + required: + - agent_url + - id + additionalProperties: false status: - type: string - endpoint: - type: object - properties: - url: - type: string - method: - type: string - authenticationType: - type: string - required: - - url - - method - additionalProperties: false - eventTypes: + anyOf: + - type: string + enum: + - draft + - type: string + enum: + - active + - type: string + enum: + - paused + - type: string + enum: + - completed + product_ids: + description: Array of product IDs (enriched from joins) type: array items: type: string - brandAgentId: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - failureCount: - type: integer - minimum: 0 - maximum: 9007199254740991 - lastSuccess: - nullable: true + 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 + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + type: string + alt_text: + type: string + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + 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: + - allOf: + - type: object + additionalProperties: {} + - 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 + 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 + 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 + 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 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 + 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))$ - createdAt: + sales_agent_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))$ + sales_agent_name: + type: string + creative_formats: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + required: + - agent_url + - id + additionalProperties: false required: - - id + - package_id - status - - endpoint - - eventTypes - - failureCount - - createdAt + - creatives + - created_at + - updated_at 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 + 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 + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + type: string + alt_text: + type: string + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + 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: + - allOf: + - type: object + additionalProperties: {} + - 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 + 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 + 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 + status: + description: Internal creative status (not in ADCP protocol) + type: string + required: + - creative_id + - name + - format_id + - assets + - status + additionalProperties: false + example: [] + adcp: + description: ADCP-specific metadata (from execute response) + type: object + properties: + media_buy_id: + type: string + status: + type: string + webhook_url: + type: string + additionalProperties: false + performance: + description: Performance metrics (from reporting) + type: object + properties: + impressions: + type: number + spend: + type: number + clicks: + type: number + last_updated: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + required: + - impressions + - spend + - clicks + additionalProperties: false + created_at: + description: Created timestamp type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string - 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 + anyOf: + - type: object + properties: + publisher_domain: + type: string + property_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + property_tags: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + additionalProperties: false + - type: object + properties: + publisher_domain: + type: string + property_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + property_tags: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + additionalProperties: false + minItems: 2 + example: [] + format_ids: + type: array + items: + type: object + properties: + agent_url: 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 + 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))$ required: + - agent_url - 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: + 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 + required: + - agent_url + - id + additionalProperties: false + - type: object + properties: + agent_url: + type: string + id: + type: string + 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 + required: + - agent_url + - id + additionalProperties: false + - type: object + properties: + agent_url: + type: string + id: + type: string + required: + - agent_url + - id + additionalProperties: false + minItems: 2 + required: + - placement_id + - name + additionalProperties: false + minItems: 2 + example: [] + delivery_type: + anyOf: + - type: string + enum: + - guaranteed + - type: string + enum: + - non_guaranteed + pricing_options: + type: array + items: + anyOf: + - anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + 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 + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + 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 + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + 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 + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + 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 + - 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 + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + 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 + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + 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 + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + 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 + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + 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 + - 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: [] + 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 - additionalProperties: false - required: - - mediaProductId - - salesAgentId - additionalProperties: false - 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 - 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 - 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 - additionalProperties: false - 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 + - type + - attribution + - reporting additionalProperties: false - status: - type: string - example: string - adcp: + delivery_measurement: type: object properties: - mediaBuyId: + provider: type: string - status: - 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 + 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 + required: + - agent_url + - id + additionalProperties: false + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + additionalProperties: false + 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 +13367,64 @@ components: MediaBuyCreate: type: object properties: - id: + media_buy_id: + description: ADCP media buy identifier type: string example: example_id_123 - tacticId: - type: number + tactic_id: + description: Internal tactic ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 example: 100 - customerId: - type: number + customer_id: + description: Internal customer ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 example: 100 name: + description: Media buy name type: string example: Example Name description: + description: Media buy description + type: string + example: string + status: + description: Internal status (DRAFT, ACTIVE, PAUSED, etc.) type: string example: string products: + description: Pre-execution product configuration type: array items: type: object properties: - mediaProductId: + product_id: + description: ADCP product identifier type: string - salesAgentId: + sales_agent_id: type: string - 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 @@ -6478,71 +13438,868 @@ components: - 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 + 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 + required: + - agent_url + - id + additionalProperties: false + status: + anyOf: + - type: string + enum: + - draft + - type: string + enum: + - active + - type: string + enum: + - paused + - type: string + enum: + - completed + 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 + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + type: string + alt_text: + type: string + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + 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: + - allOf: + - type: object + additionalProperties: {} + - 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 + 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 + 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 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 @@ -6556,66 +14313,760 @@ components: - id additionalProperties: false required: - - packageId - - productIds - - impressions - - budget - - targetingOverlay + - package_id + - status - 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 + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + type: string + alt_text: + type: string + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + 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: + - allOf: + - type: object + additionalProperties: {} + - 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 + 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 + 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 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 + additionalProperties: false + 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 additionalProperties: false performance: + description: Performance metrics (from reporting) type: object properties: impressions: @@ -6624,7 +15075,7 @@ components: type: number clicks: type: number - lastUpdated: + last_updated: type: string format: date-time pattern: >- @@ -6634,74 +15085,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 @@ -6715,71 +15190,868 @@ components: - 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 + 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 + required: + - agent_url + - id + additionalProperties: false + status: + anyOf: + - type: string + enum: + - draft + - type: string + enum: + - active + - type: string + enum: + - paused + - type: string + enum: + - completed + 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 + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + type: string + alt_text: + type: string + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + 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: + - allOf: + - type: object + additionalProperties: {} + - 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 + 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 + 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 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 @@ -6793,66 +16065,760 @@ components: - id additionalProperties: false required: - - packageId - - productIds - - impressions - - budget - - targetingOverlay + - package_id + - status - 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 + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + type: string + alt_text: + type: string + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + 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: + - allOf: + - type: object + additionalProperties: {} + - 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 + 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 + 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 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 +16827,7 @@ components: type: number clicks: type: number - lastUpdated: + last_updated: type: string format: date-time pattern: >- @@ -6871,33 +16837,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..d8a565b 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,226 +4413,1539 @@ 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 + 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: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + type: string + alt_text: + type: string + required: + - url + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + 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: + - allOf: + - type: object + additionalProperties: {} + - 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 + 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 + - 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 - example: 100 - brandAgentId: + tags: + type: array + items: + type: string + example: [] + approved: + type: boolean + example: true + brand_agent_id: type: integer exclusiveMinimum: true maximum: 9007199254740991 example: 100 - formatSource: - type: string - enum: - - ADCP - - CREATIVE_AGENT - - PUBLISHER - example: ADCP - status: + organization_id: type: string - enum: - - ACTIVE - - PAUSED - - ARCHIVED - - DRAFT - example: ACTIVE - take: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - skip: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - ListCountriesInput: - type: object - properties: {} - ListLanguagesInput: - type: object - properties: {} - GetMediaBuyInput: - type: object - properties: - mediaBuyId: + example: example_id_123 + campaign_id: type: string example: example_id_123 required: - - mediaBuyId - ListMediaBuysInput: + - creative_id + - name + - format_id + - assets + - brand_agent_id + CreativeUpdateInput: type: object properties: - tacticId: - type: number - example: 100 - status: + creative_id: type: string - enum: - - DRAFT - - PENDING_APPROVAL - - ACTIVE - - PAUSED - - COMPLETED - - FAILED - - REJECTED - example: 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 - agentIds: - description: 'Optional: Specific outcome agent IDs to query. If omitted, queries all outcome agents.' - example: - - agent_123 - - agent_456 + example: Example Name + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + required: + - agent_url + - id + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + type: string + alt_text: + type: string + required: + - url + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + 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: + - allOf: + - type: object + additionalProperties: {} + - 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 + 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 + - 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 + 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.' + example: + - agent_123 + - agent_456 type: array items: type: string @@ -4730,11 +6048,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) @@ -5038,76 +6357,790 @@ 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))$ - example: string - required: - - creativeId - - name - - status - - createdAt - - updatedAt - MediaBuyGet: - type: object - properties: - id: - type: string - example: example_id_123 - tacticId: - type: number - example: 100 - customerId: - type: number + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + required: + - agent_url + - id + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + type: string + alt_text: + type: string + required: + - url + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + 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: + - allOf: + - type: object + additionalProperties: {} + - 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 + 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 + - 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 + 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 + MediaBuyGet: + type: object + properties: + media_buy_id: + description: ADCP media buy identifier + type: string + example: example_id_123 + tactic_id: + description: Internal tactic ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + customer_id: + description: Internal customer ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 example: 100 name: + description: Media buy name type: string example: Example Name description: + description: Media buy description + type: string + example: string + status: + description: Internal status (DRAFT, ACTIVE, PAUSED, etc.) type: string example: string products: + description: Pre-execution product configuration type: array items: type: object properties: - 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 @@ -5120,69 +7153,835 @@ components: - 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 + 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 + required: + - agent_url + - id + status: + anyOf: + - type: string + enum: + - draft + - type: string + enum: + - active + - type: string + enum: + - paused + - type: string + enum: + - completed + 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 + required: + - agent_url + - id + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + type: string + alt_text: + type: string + required: + - url + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + 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: + - allOf: + - type: object + additionalProperties: {} + - 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 + 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 + - 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 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 @@ -5195,62 +7994,730 @@ components: - agent_url - id required: - - packageId - - productIds - - impressions - - budget - - targetingOverlay + - package_id + - status - 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 + required: + - agent_url + - id + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + type: string + alt_text: + type: string + required: + - url + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + 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: + - allOf: + - type: object + additionalProperties: {} + - 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 + 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 + - 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 + 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 +8726,7 @@ components: type: number clicks: type: number - lastUpdated: + last_updated: type: string format: date-time pattern: >- @@ -5268,33 +8735,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 +9367,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 +9397,7 @@ components: - success - id additionalProperties: false - CreativeList: + ListCreativesOutput: type: object properties: items: @@ -5996,7 +9466,7 @@ components: - total - items additionalProperties: false - MediaBuyList: + ListMediaBuysOutput: type: object properties: total: @@ -6205,47 +9675,908 @@ 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: + - type: object + properties: + publisher_domain: + type: string + property_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + property_tags: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + additionalProperties: false + - type: object + properties: + publisher_domain: + type: string + property_ids: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + property_tags: + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - publisher_domain + additionalProperties: false + minItems: 2 + format_ids: + type: array + items: + type: object + properties: + agent_url: type: string - - type: array - items: - type: object + id: + type: string + 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 + required: + - agent_url + - id + additionalProperties: false + - type: object + properties: + agent_url: + type: string + id: + type: string + 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 + required: + - agent_url + - id + additionalProperties: false + - type: object + properties: + agent_url: + type: string + id: + type: string + 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 + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + 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 + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + 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 + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + 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 + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + 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 + - 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 + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + 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 + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + 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 + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + min_spend_per_package: + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + 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 + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + 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 + - 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 + 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 + required: + - agent_url + - id + additionalProperties: false + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + additionalProperties: false + 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 +10596,7 @@ components: enum: - SALES - OUTCOME + - SIGNAL status: type: string relationship: @@ -6314,6 +10646,7 @@ components: enum: - SALES - OUTCOME + - SIGNAL status: type: string relationship: @@ -6380,6 +10713,7 @@ components: enum: - SALES - OUTCOME + - SIGNAL status: type: string relationship: @@ -6408,6 +10742,7 @@ components: enum: - SALES - OUTCOME + - SIGNAL status: type: string relationship: @@ -6969,77 +11304,818 @@ components: CreativeGetOutput: type: object properties: - creativeId: - type: string - example: example_id_123 - name: - type: string - example: Example Name - status: - type: string - example: string - campaignId: - type: string - example: example_id_123 - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - required: - - creativeId - - name - - status - - createdAt - - updatedAt - additionalProperties: false - MediaBuyGetOutput: - type: object - properties: - id: + creative_id: type: string example: example_id_123 - tacticId: - type: number - example: 100 - customerId: - type: number - example: 100 name: type: string example: Example Name - description: - type: string - example: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + type: string + alt_text: + type: string + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + 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: + - allOf: + - type: object + additionalProperties: {} + - 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 + 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 + 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 + 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 @@ -7053,71 +12129,89 @@ components: - 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: + 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 @@ -7130,67 +12224,1540 @@ components: - 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: - type: string - name: - type: string - formatId: - type: string - mediaUrl: - type: string status: - type: string + anyOf: + - type: string + enum: + - draft + - type: string + enum: + - active + - type: string + enum: + - paused + - type: string + enum: + - completed + 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 + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + type: string + alt_text: + type: string + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + 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: + - allOf: + - type: object + additionalProperties: {} + - 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 + 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 + 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 + 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 + 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 + required: + - agent_url + - id + additionalProperties: false + required: + - package_id + - status + - 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 + name: + type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + type: string + alt_text: + type: string + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + 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: + - allOf: + - type: object + additionalProperties: {} + - 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 + 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 + 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 + 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 +13766,7 @@ components: type: number clicks: type: number - lastUpdated: + last_updated: type: string format: date-time pattern: >- @@ -7209,33 +13776,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 @@ -7444,70 +14014,1510 @@ 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 + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + type: string + alt_text: + type: string + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + 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: + - allOf: + - type: object + additionalProperties: {} + - 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 + 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 + 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 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 + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + type: string + alt_text: + type: string + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + 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: + - allOf: + - type: object + additionalProperties: {} + - 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 + 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 + 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 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..80091ca 100644 --- a/src/types/partner-api.ts +++ b/src/types/partner-api.ts @@ -321,69 +321,616 @@ 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: + | { + [key: string]: unknown; + } + | 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?: Record; + /** + * @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; + }[]; + 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[]; + 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; + }; + assets: { + [key: string]: + | { + url: string; + width?: number; + height?: number; + format?: string; + alt_text?: string; + } + | { + url: string; + width?: number; + height?: number; + 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: + | ({ + [key: string]: unknown; + } & { + 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'; + 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; }[]; + /** @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; + }; + assets: { + [key: string]: + | { + url: string; + width?: number; + height?: number; + format?: string; + alt_text?: string; + } + | { + url: string; + width?: number; + height?: number; + 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: + | ({ + [key: string]: unknown; + } & { + 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'; + 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; }[]; }; UpdateMediaBuyInput: { /** @example example_id_123 */ - mediaBuyId: string; + media_buy_id: string; /** @example Example Name */ name?: string; /** @example string */ @@ -401,30 +948,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 +1001,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 +1052,11 @@ 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; + }[]; /** @description Only return products accepting IAB standard formats */ standardFormatsOnly?: boolean; /** @description Minimum exposures/impressions needed for measurement validity */ @@ -511,50 +1073,204 @@ 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[] - | { - 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; /** @example [] */ - pricingOptions?: { - [key: string]: unknown; + publisher_properties: { + publisher_domain: string; + property_ids?: string[]; + property_tags?: string[]; + }[]; + /** @example [] */ + format_ids: { + agent_url: string; + id: string; }[]; /** @example [] */ - supportedTargeting?: string[]; + placements?: { + placement_id: string; + name: string; + description?: string; + format_ids?: { + agent_url: string; + id: string; + }[]; + }[]; + delivery_type: 'guaranteed' | 'non_guaranteed'; + /** @example [] */ + pricing_options: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + 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; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + 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; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + 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; + 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; + }; + manifest: { + [key: string]: unknown; + }; + }; + product_card_detailed?: { + format_id: { + agent_url: string; + id: string; + }; + manifest: { + [key: string]: unknown; + }; + }; + /** @example 100 */ + customerId?: number; /** @example example_id_123 */ adcpAgentId?: string; }; @@ -577,11 +1293,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 +1327,7 @@ export interface components { * @example SALES * @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; /** * @description Agent name * @example Example Name @@ -961,102 +1677,897 @@ 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; }[]; }[]; - /** @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[]; + frequency_cap?: { + suppress_minutes: number; + }; + }; + creative_assignments?: { + creative_id: string; + weight?: number; + placement_ids?: string[]; + }[]; + format_ids_to_provide?: { + agent_url: string; + id: string; + }[]; + status: 'draft' | 'active' | 'paused' | 'completed'; + /** @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; + }; + assets: { + [key: string]: + | { + url: string; + width?: number; + height?: number; + format?: string; + alt_text?: string; + } + | { + url: string; + width?: number; + height?: number; + 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: + | ({ + [key: string]: unknown; + } & { + 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'; + 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; + /** @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; }[]; }[]; - /** @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; + }; + assets: { + [key: string]: + | { + url: string; + width?: number; + height?: number; + format?: string; + alt_text?: string; + } + | { + url: string; + width?: number; + height?: number; + 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: + | ({ + [key: string]: unknown; + } & { + 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'; + 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; + /** @description Internal creative status (not in ADCP protocol) */ status: string; }[]; - pricing: { - cpm: number; - signalCost?: number; - totalCpm: number; - }; - /** @example string */ - status: string; + /** @description ADCP-specific metadata (from execute response) */ adcp?: { - mediaBuyId?: string; + media_buy_id?: string; status?: string; - webhookUrl?: string; + webhook_url?: string; }; + /** @description Performance metrics (from reporting) */ performance?: { impressions: number; spend: number; clicks: number; /** Format: date-time */ - lastUpdated?: string; + last_updated?: string; }; /** * Format: date-time + * @description Created timestamp * @example string */ - archivedAt?: string; + created_at: string; /** * Format: date-time + * @description Updated timestamp * @example string */ - createdAt: string; + updated_at: string; /** * Format: date-time + * @description Archived timestamp * @example string */ - updatedAt: string; + archived_at?: string | null; + }; + MediaProductSave: { + /** @example example_id_123 */ + product_id: string; + /** @example Example Name */ + name: string; + /** @example string */ + description: string; + /** @example [] */ + publisher_properties: { + publisher_domain: string; + property_ids?: string[]; + property_tags?: string[]; + }[]; + /** @example [] */ + format_ids: { + agent_url: string; + id: string; + }[]; + /** @example [] */ + placements?: { + placement_id: string; + name: string; + description?: string; + format_ids?: { + agent_url: string; + id: string; + }[]; + }[]; + delivery_type: 'guaranteed' | 'non_guaranteed'; + /** @example [] */ + pricing_options: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + 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; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + 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; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + 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; + 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; + }; + manifest: { + [key: string]: unknown; + }; + }; + product_card_detailed?: { + format_id: { + agent_url: string; + id: string; + }; + manifest: { + [key: string]: unknown; + }; + }; + /** + * @description Internal database ID + * @example example_id_123 + */ + id: string; + /** + * @description Customer who owns this product + * @example 100 + */ + customer_id: number; + /** + * @description Source ADCP agent ID + * @example example_id_123 + */ + adcp_agent_id?: string; + /** + * @description Human-readable agent name + * @example Example Name + */ + sales_agent_name?: string; + /** + * @description Internal classification of inventory type + * @example premium + * @enum {string} + */ + inventory_type?: 'premium' | 'run_of_site' | 'targeted_package'; + /** + * Format: date-time + * @example string + */ + created_at: string; + /** + * Format: date-time + * @example string + */ + updated_at: string; }; TacticGet: { /** @example 100 */ @@ -1182,13 +2693,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 +2719,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 +2789,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 +2834,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 +2858,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 +2868,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 +2886,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 +2901,7 @@ export interface components { * @example SALES * @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; }; AgentUpdate: { /** @example example_id_123 */ @@ -1460,7 +2912,7 @@ export interface components { * @example SALES * @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; /** @example string */ status: string; }; @@ -1814,102 +3266,897 @@ 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; }[]; }[]; - /** @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[]; + frequency_cap?: { + suppress_minutes: number; + }; + }; + creative_assignments?: { + creative_id: string; + weight?: number; + placement_ids?: string[]; + }[]; + format_ids_to_provide?: { + agent_url: string; + id: string; + }[]; + status: 'draft' | 'active' | 'paused' | 'completed'; + /** @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; + }; + assets: { + [key: string]: + | { + url: string; + width?: number; + height?: number; + format?: string; + alt_text?: string; + } + | { + url: string; + width?: number; + height?: number; + 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: + | ({ + [key: string]: unknown; + } & { + 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'; + 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; + /** @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; + }[]; + }[]; + /** + * @description Full creative objects (enriched from joins) + * @example [] + */ + creatives?: { + creative_id: string; + name: string; + format_id: { + agent_url: string; + id: string; + }; + assets: { + [key: string]: + | { + url: string; + width?: number; + height?: number; + format?: string; + alt_text?: string; + } + | { + url: string; + width?: number; + height?: number; + 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: + | ({ + [key: string]: unknown; + } & { + 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'; + 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; + /** @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; + property_ids?: string[]; + property_tags?: string[]; + }[]; + /** @example [] */ + format_ids: { + agent_url: string; + id: string; + }[]; + /** @example [] */ + placements?: { + placement_id: string; + name: string; + description?: string; + format_ids?: { agent_url: string; id: string; }[]; }[]; + 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; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + 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; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + 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; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + 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; + 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; + }; + 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; + }; + manifest: { + [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 +4190,1324 @@ 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; }[]; }[]; - /** @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[]; + frequency_cap?: { + suppress_minutes: number; + }; + }; + creative_assignments?: { + creative_id: string; + weight?: number; + placement_ids?: string[]; + }[]; + format_ids_to_provide?: { + agent_url: string; + id: string; + }[]; + status: 'draft' | 'active' | 'paused' | 'completed'; + /** @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; + }; + assets: { + [key: string]: + | { + url: string; + width?: number; + height?: number; + format?: string; + alt_text?: string; + } + | { + url: string; + width?: number; + height?: number; + 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: + | ({ + [key: string]: unknown; + } & { + 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'; + 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; + /** @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; }[]; }[]; - /** @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; + }; + assets: { + [key: string]: + | { + url: string; + width?: number; + height?: number; + format?: string; + alt_text?: string; + } + | { + url: string; + width?: number; + height?: number; + 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: + | ({ + [key: string]: unknown; + } & { + 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'; + 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; + /** @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; }[]; }[]; - /** @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[]; + frequency_cap?: { + suppress_minutes: number; + }; + }; + creative_assignments?: { + creative_id: string; + weight?: number; + placement_ids?: string[]; + }[]; + format_ids_to_provide?: { + agent_url: string; + id: string; + }[]; + status: 'draft' | 'active' | 'paused' | 'completed'; + /** @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; + }; + assets: { + [key: string]: + | { + url: string; + width?: number; + height?: number; + format?: string; + alt_text?: string; + } + | { + url: string; + width?: number; + height?: number; + 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: + | ({ + [key: string]: unknown; + } & { + 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'; + 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; + /** @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; }[]; }[]; - /** @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; + }; + assets: { + [key: string]: + | { + url: string; + width?: number; + height?: number; + format?: string; + alt_text?: string; + } + | { + url: string; + width?: number; + height?: number; + 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: + | ({ + [key: string]: unknown; + } & { + 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'; + 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; + /** @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 +5800,7 @@ export interface operations { * @example { * "tool": "creative_sync_sales_agents", * "arguments": { - * "creativeId": "example_id_123" + * "creative_id": "example_id_123" * } * } */ @@ -2446,7 +5817,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeSyncSalesAgents']; + structuredContent: components['schemas']['SyncSalesAgentsOutput']; }; }; }; @@ -2488,8 +5859,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 +5872,7 @@ export interface operations { 'application/json': { /** @enum {string} */ tool: 'media_buy_create'; - arguments: components['schemas']['CreateMediaBuyInput']; + arguments: components['schemas']['MediaBuyCreateInput']; }; }; }; @@ -2550,7 +5924,7 @@ export interface operations { * @example { * "tool": "media_buy_update", * "arguments": { - * "mediaBuyId": "example_id_123" + * "media_buy_id": "example_id_123" * } * } */ @@ -2609,7 +5983,7 @@ export interface operations { * @example { * "tool": "media_buy_delete", * "arguments": { - * "mediaBuyId": "example_id_123", + * "media_buy_id": "example_id_123", * "confirm": true * } * } @@ -2627,7 +6001,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyDelete']; + structuredContent: components['schemas']['DeleteMediaBuyOutput']; }; }; }; @@ -2669,7 +6043,7 @@ export interface operations { * @example { * "tool": "media_buy_execute", * "arguments": { - * "mediaBuyId": "example_id_123" + * "media_buy_id": "example_id_123" * } * } */ @@ -2686,7 +6060,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyExecute']; + structuredContent: components['schemas']['ExecuteMediaBuyOutput']; }; }; }; @@ -2728,7 +6102,7 @@ export interface operations { * @example { * "tool": "media_buy_get", * "arguments": { - * "mediaBuyId": "example_id_123" + * "media_buy_id": "example_id_123" * } * } */ @@ -2802,7 +6176,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyList']; + structuredContent: components['schemas']['ListMediaBuysOutput']; }; }; }; @@ -2844,8 +6218,8 @@ export interface operations { * @example { * "tool": "media_buy_validate_budget", * "arguments": { - * "tacticId": 100, - * "newBudgetAmount": 100 + * "tactic_id": 100, + * "new_budget_amount": 100 * } * } */ @@ -2862,7 +6236,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyValidateBudget']; + structuredContent: components['schemas']['ValidateMediaBuyBudgetOutput']; }; }; }; @@ -3196,21 +6570,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 +6596,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..971913f 100644 --- a/src/types/platform-api.ts +++ b/src/types/platform-api.ts @@ -869,93 +869,562 @@ 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; + }; + assets: { + [key: string]: + | { + url: string; + width?: number; + height?: number; + format?: string; + alt_text?: string; + } + | { + url: string; + width?: number; + height?: number; + 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: + | ({ + [key: string]: unknown; + } & { + 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'; + 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 */ + 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; + }; + assets?: { + [key: string]: + | { + url: string; + width?: number; + height?: number; + format?: string; + alt_text?: string; + } + | { + url: string; + width?: number; + height?: number; + 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: + | ({ + [key: string]: unknown; + } & { + 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'; + 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 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 +1439,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 +1548,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 @@ -1290,121 +1759,947 @@ 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; + }; + assets: { + [key: string]: + | { + url: string; + width?: number; + height?: number; + format?: string; + alt_text?: string; + } + | { + url: string; + width?: number; + height?: number; + 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: + | ({ + [key: string]: unknown; + } & { + 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'; + 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; + /** + * @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; }[]; }[]; - /** @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[]; + frequency_cap?: { + suppress_minutes: number; + }; + }; + creative_assignments?: { + creative_id: string; + weight?: number; + placement_ids?: string[]; + }[]; + format_ids_to_provide?: { + agent_url: string; + id: string; + }[]; + status: 'draft' | 'active' | 'paused' | 'completed'; + /** @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; + }; + assets: { + [key: string]: + | { + url: string; + width?: number; + height?: number; + format?: string; + alt_text?: string; + } + | { + url: string; + width?: number; + height?: number; + 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: + | ({ + [key: string]: unknown; + } & { + 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'; + 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; + /** @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; }[]; }[]; - /** @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; + }; + assets: { + [key: string]: + | { + url: string; + width?: number; + height?: number; + format?: string; + alt_text?: string; + } + | { + url: string; + width?: number; + height?: number; + 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: + | ({ + [key: string]: unknown; + } & { + 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'; + 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; + /** @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 +2984,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 +3022,7 @@ export interface components { displayName: string; }[]; }; - MediaBuyList: { + ListMediaBuysOutput: { /** @example 100 */ total: number; /** @example [] */ @@ -1851,21 +3146,207 @@ 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; + property_ids?: string[]; + property_tags?: string[]; + }[]; + format_ids: { + agent_url: string; + id: string; + }[]; + placements?: { + placement_id: string; + name: string; + description?: string; + format_ids?: { + agent_url: string; + id: string; + }[]; + }[]; + delivery_type: 'guaranteed' | 'non_guaranteed'; + pricing_options: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + 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; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + 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; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + min_spend_per_package?: number; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + 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; + parameters: { + demographic: string; + min_points?: number; + }; + min_spend_per_package?: number; + } | { - agent_url: string; - id: string; - }[]; + 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; + }; + manifest: { + [key: string]: unknown; + }; + }; + product_card_detailed?: { + format_id: { + agent_url: string; + id: string; + }; + manifest: { + [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 +3354,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 +3372,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 +3396,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 +3406,7 @@ export interface components { agentId: string; name: string; /** @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; status: string; relationship: string; endpointUrl: string; @@ -2325,121 +3806,947 @@ 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; + }; + assets: { + [key: string]: + | { + url: string; + width?: number; + height?: number; + format?: string; + alt_text?: string; + } + | { + url: string; + width?: number; + height?: number; + 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: + | ({ + [key: string]: unknown; + } & { + 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'; + 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; + /** + * @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; }[]; }[]; - /** @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[]; + frequency_cap?: { + suppress_minutes: number; + }; + }; + creative_assignments?: { + creative_id: string; + weight?: number; + placement_ids?: string[]; + }[]; + format_ids_to_provide?: { + agent_url: string; + id: string; + }[]; + status: 'draft' | 'active' | 'paused' | 'completed'; + /** @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; + }; + assets: { + [key: string]: + | { + url: string; + width?: number; + height?: number; + format?: string; + alt_text?: string; + } + | { + url: string; + width?: number; + height?: number; + 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: + | ({ + [key: string]: unknown; + } & { + 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'; + 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; + /** @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; }[]; }[]; - /** @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; + }; + assets: { + [key: string]: + | { + url: string; + width?: number; + height?: number; + format?: string; + alt_text?: string; + } + | { + url: string; + width?: number; + height?: number; + 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: + | ({ + [key: string]: unknown; + } & { + 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'; + 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; + /** @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 */ @@ -2560,43 +4867,571 @@ 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; + }; + assets: { + [key: string]: + | { + url: string; + width?: number; + height?: number; + format?: string; + alt_text?: string; + } + | { + url: string; + width?: number; + height?: number; + 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: + | ({ + [key: string]: unknown; + } & { + 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'; + 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; + /** + * @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; + }; + assets: { + [key: string]: + | { + url: string; + width?: number; + height?: number; + format?: string; + alt_text?: string; + } + | { + url: string; + width?: number; + height?: number; + 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: + | ({ + [key: string]: unknown; + } & { + 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'; + 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; + /** + * @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 +6927,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 +6945,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeAssign']; + structuredContent: components['schemas']['AssignCreativeOutput']; }; }; }; @@ -4152,15 +6987,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 +7053,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 +7112,7 @@ export interface operations { * @example { * "tool": "creative_delete", * "arguments": { - * "creativeId": "example_id_123" + * "creative_id": "example_id_123" * } * } */ @@ -4288,7 +7129,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeDelete']; + structuredContent: components['schemas']['DeleteCreativeOutput']; }; }; }; @@ -4330,7 +7171,7 @@ export interface operations { * @example { * "tool": "creative_get", * "arguments": { - * "creativeId": "example_id_123" + * "creative_id": "example_id_123" * } * } */ @@ -4404,7 +7245,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeList']; + structuredContent: components['schemas']['ListCreativesOutput']; }; }; }; @@ -4446,7 +7287,7 @@ export interface operations { * @example { * "tool": "media_buy_get", * "arguments": { - * "mediaBuyId": "example_id_123" + * "media_buy_id": "example_id_123" * } * } */ @@ -4520,7 +7361,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyList']; + structuredContent: components['schemas']['ListMediaBuysOutput']; }; }; };