diff --git a/.changeset/auto-update-1767667096.md b/.changeset/auto-update-1767667096.md new file mode 100644 index 0000000..92bb89c --- /dev/null +++ b/.changeset/auto-update-1767667096.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..a915c79 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 @@ -424,11 +424,11 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /media-buy-create: + /media-buy-get: post: - operationId: media_buy_create - summary: Create media buy - description: Create a new media buy with budget, targeting, and creative specifications. + operationId: media_buy_get + summary: Get media buy + description: Get detailed information about a specific media buy. tags: - Media Buys security: @@ -444,26 +444,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for media_buy_create + description: Request body for media_buy_get required: true content: application/json: example: - tool: media_buy_create + tool: media_buy_get arguments: - tacticId: 100 - agentId: example_id_123 - name: Example Name - products: [] + media_buy_id: example_id_123 schema: type: object properties: tool: type: string enum: - - media_buy_create + - media_buy_get arguments: - $ref: '#/components/schemas/CreateMediaBuyInput' + $ref: '#/components/schemas/GetMediaBuyInput' required: - tool - arguments @@ -503,11 +500,11 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /media-buy-update: + /media-buy-list: post: - operationId: media_buy_update - summary: Update media buy - description: Update an existing media buy with new budget, targeting, or creative assignments. + operationId: media_buy_list + summary: List media buys + description: List all media buys with optional filtering by brand agent, campaign, or status. tags: - Media Buys security: @@ -523,23 +520,22 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for media_buy_update + description: Request body for media_buy_list required: true content: application/json: example: - tool: media_buy_update - arguments: - mediaBuyId: example_id_123 + tool: media_buy_list + arguments: {} schema: type: object properties: tool: type: string enum: - - media_buy_update + - media_buy_list arguments: - $ref: '#/components/schemas/UpdateMediaBuyInput' + $ref: '#/components/schemas/ListMediaBuysInput' required: - tool - arguments @@ -556,7 +552,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/MediaBuyGetOutput' + $ref: '#/components/schemas/ListMediaBuysOutput' required: - content - structuredContent @@ -579,11 +575,11 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /media-buy-delete: + /media-buy-validate-budget: post: - operationId: media_buy_delete - summary: Delete media buy - description: Delete a media buy and cancel any active placements. + operationId: media_buy_validate_budget + summary: Validate media buy budget + description: Validate a media buy budget against campaign constraints and available funds. tags: - Media Buys security: @@ -599,24 +595,24 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for media_buy_delete + description: Request body for media_buy_validate_budget required: true content: application/json: example: - tool: media_buy_delete + tool: media_buy_validate_budget arguments: - mediaBuyId: example_id_123 - confirm: true + tactic_id: 100 + new_budget_amount: 100 schema: type: object properties: tool: type: string enum: - - media_buy_delete + - media_buy_validate_budget arguments: - $ref: '#/components/schemas/DeleteMediaBuyInput' + $ref: '#/components/schemas/ValidateMediaBuyBudgetInput' required: - tool - arguments @@ -633,7 +629,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/MediaBuyDelete' + $ref: '#/components/schemas/ValidateMediaBuyBudgetOutput' required: - content - structuredContent @@ -656,13 +652,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /media-buy-execute: + /notifications-list: post: - operationId: media_buy_execute - summary: Execute media buy - description: Execute a media buy, sending it to the configured sales agents for placement. + operationId: notifications_list + summary: List notifications + description: List notifications for the authenticated user with optional filtering by status. tags: - - Media Buys + - Notifications security: - bearerAuth: [] parameters: @@ -676,23 +672,22 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for media_buy_execute + description: Request body for notifications_list required: true content: application/json: example: - tool: media_buy_execute - arguments: - mediaBuyId: example_id_123 + tool: notifications_list + arguments: {} schema: type: object properties: tool: type: string enum: - - media_buy_execute + - notifications_list arguments: - $ref: '#/components/schemas/ExecuteMediaBuyInput' + $ref: '#/components/schemas/ListNotificationsInput' required: - tool - arguments @@ -709,7 +704,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/MediaBuyExecute' + $ref: '#/components/schemas/NotificationsList' required: - content - structuredContent @@ -732,13 +727,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /media-buy-get: + /notifications-mark-read: post: - operationId: media_buy_get - summary: Get media buy - description: Get detailed information about a specific media buy. + operationId: notifications_mark_read + summary: Mark notification as read + description: Mark a specific notification as read. tags: - - Media Buys + - Notifications security: - bearerAuth: [] parameters: @@ -752,23 +747,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for media_buy_get + description: Request body for notifications_mark_read required: true content: application/json: example: - tool: media_buy_get + tool: notifications_mark_read arguments: - mediaBuyId: example_id_123 + notificationId: example_id_123 schema: type: object properties: tool: type: string enum: - - media_buy_get + - notifications_mark_read arguments: - $ref: '#/components/schemas/GetMediaBuyInput' + $ref: '#/components/schemas/MarkNotificationReadInput' required: - tool - arguments @@ -785,7 +780,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/MediaBuyGetOutput' + $ref: '#/components/schemas/NotificationsMarkRead' required: - content - structuredContent @@ -808,13 +803,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /media-buy-list: + /notifications-mark-acknowledged: post: - operationId: media_buy_list - summary: List media buys - description: List all media buys with optional filtering by brand agent, campaign, or status. + operationId: notifications_mark_acknowledged + summary: Mark notification as acknowledged + description: Mark a specific notification as acknowledged. tags: - - Media Buys + - Notifications security: - bearerAuth: [] parameters: @@ -828,22 +823,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for media_buy_list + description: Request body for notifications_mark_acknowledged required: true content: application/json: example: - tool: media_buy_list - arguments: {} + tool: notifications_mark_acknowledged + arguments: + notificationId: example_id_123 schema: type: object properties: tool: type: string enum: - - media_buy_list + - notifications_mark_acknowledged arguments: - $ref: '#/components/schemas/ListMediaBuysInput' + $ref: '#/components/schemas/MarkNotificationAcknowledgedInput' required: - tool - arguments @@ -860,7 +856,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/MediaBuyList' + $ref: '#/components/schemas/NotificationsMarkAcknowledged' required: - content - structuredContent @@ -883,13 +879,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /media-buy-validate-budget: + /notifications-mark-all-read: post: - operationId: media_buy_validate_budget - summary: Validate media buy budget - description: Validate a media buy budget against campaign constraints and available funds. + operationId: notifications_mark_all_read + summary: Mark all notifications as read + description: Mark all notifications for the authenticated user as read. tags: - - Media Buys + - Notifications security: - bearerAuth: [] parameters: @@ -903,24 +899,22 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for media_buy_validate_budget + description: Request body for notifications_mark_all_read required: true content: application/json: example: - tool: media_buy_validate_budget - arguments: - tacticId: 100 - newBudgetAmount: 100 + tool: notifications_mark_all_read + arguments: {} schema: type: object properties: tool: type: string enum: - - media_buy_validate_budget + - notifications_mark_all_read arguments: - $ref: '#/components/schemas/ValidateMediaBuyBudgetInput' + $ref: '#/components/schemas/MarkAllNotificationsReadInput' required: - tool - arguments @@ -937,7 +931,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/MediaBuyValidateBudget' + $ref: '#/components/schemas/NotificationsMarkAllRead' required: - content - structuredContent @@ -960,13 +954,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /notifications-list: + /media-product-discover: post: - operationId: notifications_list - summary: List notifications - description: List notifications for the authenticated user with optional filtering by status. + operationId: media_product_discover + summary: Discover media products + description: Discover available media products from connected sales agents based on targeting criteria. tags: - - Notifications + - Media Products security: - bearerAuth: [] parameters: @@ -980,22 +974,24 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for notifications_list + description: Request body for media_product_discover required: true content: application/json: example: - tool: notifications_list - arguments: {} + tool: media_product_discover + arguments: + brief: string + brandManifestUrl: https://example.com schema: type: object properties: tool: type: string enum: - - notifications_list + - media_product_discover arguments: - $ref: '#/components/schemas/ListNotificationsInput' + $ref: '#/components/schemas/DiscoverProductsInput' required: - tool - arguments @@ -1012,7 +1008,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/NotificationsList' + $ref: '#/components/schemas/MediaProductDiscover' required: - content - structuredContent @@ -1035,13 +1031,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /notifications-mark-read: + /media-product-list: post: - operationId: notifications_mark_read - summary: Mark notification as read - description: Mark a specific notification as read. + operationId: media_product_list + summary: List media products + description: List saved media products with optional filtering. tags: - - Notifications + - Media Products security: - bearerAuth: [] parameters: @@ -1055,23 +1051,22 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for notifications_mark_read + description: Request body for media_product_list required: true content: application/json: example: - tool: notifications_mark_read - arguments: - notificationId: example_id_123 + tool: media_product_list + arguments: {} schema: type: object properties: tool: type: string enum: - - notifications_mark_read + - media_product_list arguments: - $ref: '#/components/schemas/MarkNotificationReadInput' + $ref: '#/components/schemas/ListProductsInput' required: - tool - arguments @@ -1088,7 +1083,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/NotificationsMarkRead' + $ref: '#/components/schemas/MediaProductList' required: - content - structuredContent @@ -1111,13 +1106,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /notifications-mark-acknowledged: + /media-product-sync: post: - operationId: notifications_mark_acknowledged - summary: Mark notification as acknowledged - description: Mark a specific notification as acknowledged. + operationId: media_product_sync + summary: Sync media products + description: Synchronize media product catalog from connected sales agents. tags: - - Notifications + - Media Products security: - bearerAuth: [] parameters: @@ -1131,23 +1126,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for notifications_mark_acknowledged + description: Request body for media_product_sync required: true content: application/json: example: - tool: notifications_mark_acknowledged + tool: media_product_sync arguments: - notificationId: example_id_123 + sourceId: example_id_123 schema: type: object properties: tool: type: string enum: - - notifications_mark_acknowledged + - media_product_sync arguments: - $ref: '#/components/schemas/MarkNotificationAcknowledgedInput' + $ref: '#/components/schemas/SyncProductsInput' required: - tool - arguments @@ -1164,7 +1159,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/NotificationsMarkAcknowledged' + $ref: '#/components/schemas/MediaProductSync' required: - content - structuredContent @@ -1187,13 +1182,15 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /notifications-mark-all-read: + /agent-get: post: - operationId: notifications_mark_all_read - summary: Mark all notifications as read - description: Mark all notifications for the authenticated user as read. + operationId: agent_get + summary: Get agent + description: >- + Get detailed information about a specific agent (SALES or OUTCOME type). Type is automatically inferred from the + agent ID. tags: - - Notifications + - Agents security: - bearerAuth: [] parameters: @@ -1207,22 +1204,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for notifications_mark_all_read + description: Request body for agent_get required: true content: application/json: example: - tool: notifications_mark_all_read - arguments: {} + tool: agent_get + arguments: + agentId: example_id_123 schema: type: object properties: tool: type: string enum: - - notifications_mark_all_read + - agent_get arguments: - $ref: '#/components/schemas/MarkAllNotificationsReadInput' + $ref: '#/components/schemas/GetAgentInput' required: - tool - arguments @@ -1239,7 +1237,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/NotificationsMarkAllRead' + $ref: '#/components/schemas/AgentGet' required: - content - structuredContent @@ -1262,13 +1260,15 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /media-product-discover: + /agent-list: post: - operationId: media_product_discover - summary: Discover media products - description: Discover available media products from connected sales agents based on targeting criteria. + operationId: agent_list + summary: List agents + description: >- + List all registered agents with comprehensive filtering. Supports filtering by type (SALES/OUTCOME), status, + organization, relationship (SELF/SCOPE3/MARKETPLACE), and name. tags: - - Media Products + - Agents security: - bearerAuth: [] parameters: @@ -1282,24 +1282,22 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for media_product_discover + description: Request body for agent_list required: true content: application/json: example: - tool: media_product_discover - arguments: - brief: string - brandManifestUrl: https://example.com + tool: agent_list + arguments: {} schema: type: object properties: tool: type: string enum: - - media_product_discover + - agent_list arguments: - $ref: '#/components/schemas/DiscoverProductsInput' + $ref: '#/components/schemas/ListAgentsInput' required: - tool - arguments @@ -1316,7 +1314,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/MediaProductDiscover' + $ref: '#/components/schemas/AgentList' required: - content - structuredContent @@ -1339,13 +1337,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /media-product-save: + /agent-register: post: - operationId: media_product_save - summary: Save media product - description: Save a discovered media product for future use in media buys. + operationId: agent_register + summary: Register agent + description: Register a new agent for media buying (SALES type) or outcome optimization (OUTCOME type). tags: - - Media Products + - Agents security: - bearerAuth: [] parameters: @@ -1359,30 +1357,27 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for media_product_save + description: Request body for agent_register required: true content: application/json: example: - tool: media_product_save + tool: agent_register arguments: - productId: example_id_123 + type: SALES name: Example Name - description: string - publisherId: example_id_123 - publisherName: Example Name - deliveryType: guaranteed - inventoryType: premium - pricingModel: auction + endpointUrl: https://example.com + protocol: MCP + seatId: 100 schema: type: object properties: tool: type: string enum: - - media_product_save + - agent_register arguments: - $ref: '#/components/schemas/SaveProductInput' + $ref: '#/components/schemas/RegisterAgentInput' required: - tool - arguments @@ -1399,7 +1394,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/MediaProductSave' + $ref: '#/components/schemas/AgentRegister' required: - content - structuredContent @@ -1422,13 +1417,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /media-product-list: + /agent-unregister: post: - operationId: media_product_list - summary: List media products - description: List saved media products with optional filtering. + operationId: agent_unregister + summary: Unregister agent + description: Unregister an agent and disconnect it from the platform. Type is automatically inferred from the agent ID. tags: - - Media Products + - Agents security: - bearerAuth: [] parameters: @@ -1442,22 +1437,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for media_product_list + description: Request body for agent_unregister required: true content: application/json: example: - tool: media_product_list - arguments: {} + tool: agent_unregister + arguments: + agentId: example_id_123 schema: type: object properties: tool: type: string enum: - - media_product_list + - agent_unregister arguments: - $ref: '#/components/schemas/ListProductsInput' + $ref: '#/components/schemas/UnregisterAgentInput' required: - tool - arguments @@ -1474,7 +1470,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/MediaProductList' + $ref: '#/components/schemas/AgentUnregister' required: - content - structuredContent @@ -1497,13 +1493,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /media-product-sync: + /agent-update: post: - operationId: media_product_sync - summary: Sync media products - description: Synchronize media product catalog from connected sales agents. + operationId: agent_update + summary: Update agent + description: Update agent configuration and credentials. Type is automatically inferred from the agent ID. tags: - - Media Products + - Agents security: - bearerAuth: [] parameters: @@ -1517,23 +1513,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for media_product_sync + description: Request body for agent_update required: true content: application/json: example: - tool: media_product_sync + tool: agent_update arguments: - sourceId: example_id_123 + agentId: example_id_123 schema: type: object properties: tool: type: string enum: - - media_product_sync + - agent_update arguments: - $ref: '#/components/schemas/SyncProductsInput' + $ref: '#/components/schemas/UpdateAgentInput' required: - tool - arguments @@ -1550,7 +1546,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/MediaProductSync' + $ref: '#/components/schemas/AgentUpdate' required: - content - structuredContent @@ -1573,15 +1569,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /agent-get: + /tactic-get: post: - operationId: agent_get - summary: Get agent - description: >- - Get detailed information about a specific agent (SALES or OUTCOME type). Type is automatically inferred from the - agent ID. + operationId: tactic_get + summary: Get tactic + description: Get detailed information about a specific tactic. tags: - - Agents + - Tactics security: - bearerAuth: [] parameters: @@ -1595,23 +1589,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for agent_get + description: Request body for tactic_get required: true content: application/json: example: - tool: agent_get + tool: tactic_get arguments: - agentId: example_id_123 + tacticId: 100 schema: type: object properties: tool: type: string enum: - - agent_get + - tactic_get arguments: - $ref: '#/components/schemas/GetAgentInput' + $ref: '#/components/schemas/GetTacticInput' required: - tool - arguments @@ -1628,7 +1622,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/AgentGet' + $ref: '#/components/schemas/TacticGetOutput' required: - content - structuredContent @@ -1651,15 +1645,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /agent-list: + /tactic-list: post: - operationId: agent_list - summary: List agents - description: >- - List all registered agents with comprehensive filtering. Supports filtering by type (SALES/OUTCOME), status, - organization, relationship (SELF/SCOPE3/MARKETPLACE), and name. + operationId: tactic_list + summary: List tactics + description: List all tactics with optional filtering by brand agent or campaign. tags: - - Agents + - Tactics security: - bearerAuth: [] parameters: @@ -1673,12 +1665,12 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for agent_list + description: Request body for tactic_list required: true content: application/json: example: - tool: agent_list + tool: tactic_list arguments: {} schema: type: object @@ -1686,9 +1678,9 @@ paths: tool: type: string enum: - - agent_list + - tactic_list arguments: - $ref: '#/components/schemas/ListAgentsInput' + $ref: '#/components/schemas/ListTacticsInput' required: - tool - arguments @@ -1705,7 +1697,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/AgentList' + $ref: '#/components/schemas/TacticList' required: - content - structuredContent @@ -1728,13 +1720,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /agent-register: + /webhook-register: post: - operationId: agent_register - summary: Register agent - description: Register a new agent for media buying (SALES type) or outcome optimization (OUTCOME type). + operationId: webhook_register + summary: Register webhook + description: Register a webhook to receive real-time notifications about events. tags: - - Agents + - Webhooks security: - bearerAuth: [] parameters: @@ -1748,26 +1740,26 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for agent_register + description: Request body for webhook_register required: true content: application/json: example: - tool: agent_register + tool: webhook_register arguments: - type: SALES - name: Example Name - endpointUrl: https://example.com - protocol: MCP + endpoint: + url: https://example.com + method: POST + eventTypes: [] schema: type: object properties: tool: type: string enum: - - agent_register + - webhook_register arguments: - $ref: '#/components/schemas/RegisterAgentInput' + $ref: '#/components/schemas/RegisterWebhookInput' required: - tool - arguments @@ -1784,7 +1776,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/AgentRegister' + $ref: '#/components/schemas/WebhookRegister' required: - content - structuredContent @@ -1807,13 +1799,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /agent-unregister: + /webhook-list: post: - operationId: agent_unregister - summary: Unregister agent - description: Unregister an agent and disconnect it from the platform. Type is automatically inferred from the agent ID. + operationId: webhook_list + summary: List webhooks + description: List all registered webhooks. tags: - - Agents + - Webhooks security: - bearerAuth: [] parameters: @@ -1827,23 +1819,22 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for agent_unregister + description: Request body for webhook_list required: true content: application/json: example: - tool: agent_unregister - arguments: - agentId: example_id_123 + tool: webhook_list + arguments: {} schema: type: object properties: tool: type: string enum: - - agent_unregister + - webhook_list arguments: - $ref: '#/components/schemas/UnregisterAgentInput' + $ref: '#/components/schemas/ListWebhooksInput' required: - tool - arguments @@ -1860,7 +1851,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/AgentUnregister' + $ref: '#/components/schemas/WebhookList' required: - content - structuredContent @@ -1883,13 +1874,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /agent-update: + /webhook-delete: post: - operationId: agent_update - summary: Update agent - description: Update agent configuration and credentials. Type is automatically inferred from the agent ID. + operationId: webhook_delete + summary: Delete webhook + description: Delete a registered webhook. tags: - - Agents + - Webhooks security: - bearerAuth: [] parameters: @@ -1903,23 +1894,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for agent_update + description: Request body for webhook_delete required: true content: application/json: example: - tool: agent_update + tool: webhook_delete arguments: - agentId: example_id_123 + webhookId: example_id_123 schema: type: object properties: tool: type: string enum: - - agent_update + - webhook_delete arguments: - $ref: '#/components/schemas/UpdateAgentInput' + $ref: '#/components/schemas/DeleteWebhookInput' required: - tool - arguments @@ -1936,7 +1927,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/AgentUpdate' + $ref: '#/components/schemas/WebhookDelete' required: - content - structuredContent @@ -1959,13 +1950,15 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /tactic-create: + /service-token-create: post: - operationId: tactic_create - summary: Create tactic - description: Create a new tactic defining how to achieve campaign objectives. + operationId: service_token_create + summary: Create service token + description: >- + Create a new service token for API authentication. Returns the full token which should be stored securely as it + cannot be retrieved later. tags: - - Tactics + - Service Tokens security: - bearerAuth: [] parameters: @@ -1979,14 +1972,13 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for tactic_create + description: Request body for service_token_create required: true content: application/json: example: - tool: tactic_create + tool: service_token_create arguments: - campaignId: example_id_123 name: Example Name schema: type: object @@ -1994,9 +1986,9 @@ paths: tool: type: string enum: - - tactic_create + - service_token_create arguments: - $ref: '#/components/schemas/CreateTacticInput' + $ref: '#/components/schemas/CreateServiceTokenInput' required: - tool - arguments @@ -2013,7 +2005,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/TacticCreate' + $ref: '#/components/schemas/CreateServiceTokenOutput' required: - content - structuredContent @@ -2036,13 +2028,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /tactic-update: + /service-token-list: post: - operationId: tactic_update - summary: Update tactic - description: Update an existing tactic with new targeting, budget, or creative requirements. + operationId: service_token_list + summary: List service tokens + description: List all service tokens for the authenticated customer. Secrets are never returned, only metadata. tags: - - Tactics + - Service Tokens security: - bearerAuth: [] parameters: @@ -2056,23 +2048,22 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for tactic_update + description: Request body for service_token_list required: true content: application/json: example: - tool: tactic_update - arguments: - tacticId: 100 + tool: service_token_list + arguments: {} schema: type: object properties: tool: type: string enum: - - tactic_update + - service_token_list arguments: - $ref: '#/components/schemas/UpdateTacticInput' + $ref: '#/components/schemas/ListServiceTokensInput' required: - tool - arguments @@ -2089,7 +2080,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/TacticGetOutput' + $ref: '#/components/schemas/ListServiceTokensOutput' required: - content - structuredContent @@ -2112,13 +2103,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /tactic-delete: + /service-token-get: post: - operationId: tactic_delete - summary: Delete tactic - description: Delete a tactic and all associated media buys. + operationId: service_token_get + summary: Get service token + description: Get detailed information about a specific service token. The secret is never returned. tags: - - Tactics + - Service Tokens security: - bearerAuth: [] parameters: @@ -2132,24 +2123,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for tactic_delete + description: Request body for service_token_get required: true content: application/json: example: - tool: tactic_delete + tool: service_token_get arguments: - tacticId: 100 - confirm: true + id: '1234567890' schema: type: object properties: tool: type: string enum: - - tactic_delete + - service_token_get arguments: - $ref: '#/components/schemas/DeleteTacticInput' + $ref: '#/components/schemas/GetServiceTokenInput' required: - tool - arguments @@ -2166,7 +2156,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/TacticDelete' + $ref: '#/components/schemas/GetServiceTokenOutput' required: - content - structuredContent @@ -2189,13 +2179,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /tactic-get: + /service-token-update: post: - operationId: tactic_get - summary: Get tactic - description: Get detailed information about a specific tactic. + operationId: service_token_update + summary: Update service token + description: Update a service token. Only name, description, and expiration can be modified. tags: - - Tactics + - Service Tokens security: - bearerAuth: [] parameters: @@ -2209,23 +2199,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for tactic_get + description: Request body for service_token_update required: true content: application/json: example: - tool: tactic_get + tool: service_token_update arguments: - tacticId: 100 + id: '1234567890' schema: type: object properties: tool: type: string enum: - - tactic_get + - service_token_update arguments: - $ref: '#/components/schemas/GetTacticInput' + $ref: '#/components/schemas/UpdateServiceTokenInput' required: - tool - arguments @@ -2242,7 +2232,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/TacticGetOutput' + $ref: '#/components/schemas/UpdateServiceTokenOutput' required: - content - structuredContent @@ -2265,13 +2255,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /tactic-list: + /service-token-archive: post: - operationId: tactic_list - summary: List tactics - description: List all tactics with optional filtering by brand agent or campaign. + operationId: service_token_archive + summary: Archive service token + description: Archive (soft delete) a service token. This immediately invalidates the token for authentication. tags: - - Tactics + - Service Tokens security: - bearerAuth: [] parameters: @@ -2285,22 +2275,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for tactic_list + description: Request body for service_token_archive required: true content: application/json: example: - tool: tactic_list - arguments: {} + tool: service_token_archive + arguments: + id: '1234567890' schema: type: object properties: tool: type: string enum: - - tactic_list + - service_token_archive arguments: - $ref: '#/components/schemas/ListTacticsInput' + $ref: '#/components/schemas/ArchiveServiceTokenInput' required: - tool - arguments @@ -2317,7 +2308,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/TacticList' + $ref: '#/components/schemas/ArchiveServiceTokenOutput' required: - content - structuredContent @@ -2340,13 +2331,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /tactic-link-campaign: + /customer-get: post: - operationId: tactic_link_campaign - summary: Link tactic to campaign - description: Link a tactic to a campaign. + operationId: customer_get + summary: Get customer info + description: Get detailed information about a customer from the core database. tags: - - Tactics + - Customers security: - bearerAuth: [] parameters: @@ -2360,24 +2351,22 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for tactic_link_campaign + description: Request body for customer_get required: true content: application/json: example: - tool: tactic_link_campaign - arguments: - tacticId: 100 - campaignId: example_id_123 + tool: customer_get + arguments: {} schema: type: object properties: tool: type: string enum: - - tactic_link_campaign + - customer_get arguments: - $ref: '#/components/schemas/LinkCampaignToTacticInput' + $ref: '#/components/schemas/GetCustomerInput' required: - tool - arguments @@ -2394,7 +2383,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/TacticLinkCampaign' + $ref: '#/components/schemas/GetCustomerOutput' required: - content - structuredContent @@ -2417,13 +2406,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /tactic-unlink-campaign: + /customer-get-seats: post: - operationId: tactic_unlink_campaign - summary: Unlink tactic from campaign - description: Unlink a tactic from a campaign. + operationId: customer_get_seats + summary: Get customer seats + description: Get all seats associated with a customer from the core database. tags: - - Tactics + - Customers security: - bearerAuth: [] parameters: @@ -2437,24 +2426,22 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for tactic_unlink_campaign + description: Request body for customer_get_seats required: true content: application/json: example: - tool: tactic_unlink_campaign - arguments: - tacticId: 100 - campaignId: example_id_123 + tool: customer_get_seats + arguments: {} schema: type: object properties: tool: type: string enum: - - tactic_unlink_campaign + - customer_get_seats arguments: - $ref: '#/components/schemas/UnlinkCampaignFromTacticInput' + $ref: '#/components/schemas/GetCustomerSeatsInput' required: - tool - arguments @@ -2471,7 +2458,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/TacticUnlinkCampaign' + $ref: '#/components/schemas/GetCustomerSeatsOutput' required: - content - structuredContent @@ -2494,13 +2481,15 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /webhook-register: + /signal-create: post: - operationId: webhook_register - summary: Register webhook - description: Register a webhook to receive real-time notifications about events. + operationId: signal_create + summary: Register a signal + description: >- + Register a new signal from a signals agent. Signals represent audience segments or data signals that can be used + for targeting. tags: - - Webhooks + - Signals security: - bearerAuth: [] parameters: @@ -2514,26 +2503,26 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for webhook_register + description: Request body for signal_create required: true content: application/json: example: - tool: webhook_register + tool: signal_create arguments: - endpoint: - url: https://example.com - method: POST - eventTypes: [] + adcpAgentId: 100 + signalId: example_id_123 + name: Example Name + access: [] schema: type: object properties: tool: type: string enum: - - webhook_register + - signal_create arguments: - $ref: '#/components/schemas/RegisterWebhookInput' + $ref: '#/components/schemas/RegisterSignalInput' required: - tool - arguments @@ -2550,7 +2539,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/WebhookRegister' + $ref: '#/components/schemas/SignalCreate' required: - content - structuredContent @@ -2573,13 +2562,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /webhook-list: + /signal-get: post: - operationId: webhook_list - summary: List webhooks - description: List all registered webhooks. + operationId: signal_get + summary: Get signal details + description: Get detailed information about a specific signal including its access configurations and regions. tags: - - Webhooks + - Signals security: - bearerAuth: [] parameters: @@ -2593,22 +2582,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for webhook_list + description: Request body for signal_get required: true content: application/json: example: - tool: webhook_list - arguments: {} + tool: signal_get + arguments: + signalId: example_id_123 schema: type: object properties: tool: type: string enum: - - webhook_list + - signal_get arguments: - $ref: '#/components/schemas/ListWebhooksInput' + $ref: '#/components/schemas/GetSignalInput' required: - tool - arguments @@ -2625,7 +2615,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/WebhookList' + $ref: '#/components/schemas/SignalGet' required: - content - structuredContent @@ -2648,13 +2638,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /webhook-delete: + /signal-update: post: - operationId: webhook_delete - summary: Delete webhook - description: Delete a registered webhook. + operationId: signal_update + summary: Update a signal + description: Update an existing signal with new information, regions, or access configurations. tags: - - Webhooks + - Signals security: - bearerAuth: [] parameters: @@ -2668,23 +2658,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for webhook_delete + description: Request body for signal_update required: true content: application/json: example: - tool: webhook_delete + tool: signal_update arguments: - webhookId: example_id_123 + signalId: example_id_123 schema: type: object properties: tool: type: string enum: - - webhook_delete + - signal_update arguments: - $ref: '#/components/schemas/DeleteWebhookInput' + $ref: '#/components/schemas/UpdateSignalFromAgentInput' required: - tool - arguments @@ -2701,7 +2691,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/WebhookDelete' + $ref: '#/components/schemas/SignalUpdate' required: - content - structuredContent @@ -2724,15 +2714,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /service-token-create: + /signal-delete: post: - operationId: service_token_create - summary: Create service token - description: >- - Create a new service token for API authentication. Returns the full token which should be stored securely as it - cannot be retrieved later. + operationId: signal_delete + summary: Delete a signal + description: Delete (archive) a signal. This soft-deletes the signal and all associated access records. tags: - - Service Tokens + - Signals security: - bearerAuth: [] parameters: @@ -2746,23 +2734,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for service_token_create + description: Request body for signal_delete required: true content: application/json: example: - tool: service_token_create + tool: signal_delete arguments: - name: Example Name + signalId: example_id_123 schema: type: object properties: tool: type: string enum: - - service_token_create + - signal_delete arguments: - $ref: '#/components/schemas/CreateServiceTokenInput' + $ref: '#/components/schemas/DeregisterSignalInput' required: - tool - arguments @@ -2779,7 +2767,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/CreateServiceTokenOutput' + $ref: '#/components/schemas/SignalDelete' required: - content - structuredContent @@ -2802,13 +2790,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /service-token-list: + /signal-list: post: - operationId: service_token_list - summary: List service tokens - description: List all service tokens for the authenticated customer. Secrets are never returned, only metadata. + operationId: signal_list + summary: List signals + description: List signals with optional filtering by agent, scope, live status, and account. tags: - - Service Tokens + - Signals security: - bearerAuth: [] parameters: @@ -2822,12 +2810,12 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for service_token_list + description: Request body for signal_list required: true content: application/json: example: - tool: service_token_list + tool: signal_list arguments: {} schema: type: object @@ -2835,9 +2823,9 @@ paths: tool: type: string enum: - - service_token_list + - signal_list arguments: - $ref: '#/components/schemas/ListServiceTokensInput' + $ref: '#/components/schemas/ListSignalsInput' required: - tool - arguments @@ -2854,7 +2842,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/ListServiceTokensOutput' + $ref: '#/components/schemas/SignalList' required: - content - structuredContent @@ -2877,13 +2865,15 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /service-token-get: + /signal-discover: post: - operationId: service_token_get - summary: Get service token - description: Get detailed information about a specific service token. The secret is never returned. + operationId: signal_discover + summary: Discover signals + description: >- + Discover available signals in the marketplace. Returns signals that are accessible to the buyer based on public + availability or proprietary access. tags: - - Service Tokens + - Signals security: - bearerAuth: [] parameters: @@ -2897,23 +2887,22 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for service_token_get + description: Request body for signal_discover required: true content: application/json: example: - tool: service_token_get - arguments: - id: '1234567890' + tool: signal_discover + arguments: {} schema: type: object properties: tool: type: string enum: - - service_token_get + - signal_discover arguments: - $ref: '#/components/schemas/GetServiceTokenInput' + $ref: '#/components/schemas/DiscoverSignalsInput' required: - tool - arguments @@ -2930,7 +2919,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/GetServiceTokenOutput' + $ref: '#/components/schemas/SignalDiscover' required: - content - structuredContent @@ -2953,317 +2942,62 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /service-token-update: - post: - operationId: service_token_update - summary: Update service token - description: Update a service token. Only name, description, and expiration can be modified. - tags: - - Service Tokens - security: - - bearerAuth: [] - parameters: - - name: mcp-session-id - in: header - required: true - schema: +components: + schemas: + BitmapTargetingProfileResponse: + type: object + properties: + dimensionName: + description: Targeting dimension name (e.g., country, region, city, device_type) + type: string + example: Example Name + anyOf: + description: Included targeting item keys (e.g., "US", "MX") + type: array + items: type: string - format: uuid - description: >- - MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a - session ID, then reuse it for all subsequent tool requests in the same session. - requestBody: - description: Request body for service_token_update - required: true - content: - application/json: - example: - tool: service_token_update - arguments: - id: '1234567890' - schema: - type: object - properties: - tool: - type: string - enum: - - service_token_update - arguments: - $ref: '#/components/schemas/UpdateServiceTokenInput' - required: - - tool - - arguments - responses: - '200': - description: Successful response - content: - application/json: - schema: - type: object - properties: - content: - type: array - items: - $ref: '#/components/schemas/MCPContent' - structuredContent: - $ref: '#/components/schemas/UpdateServiceTokenOutput' - required: - - content - - structuredContent - additionalProperties: false - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/BadRequest' - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Unauthorized' - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/InternalError' - /service-token-archive: - post: - operationId: service_token_archive - summary: Archive service token - description: Archive (soft delete) a service token. This immediately invalidates the token for authentication. - tags: - - Service Tokens - security: - - bearerAuth: [] - parameters: - - name: mcp-session-id - in: header - required: true - schema: + example: [] + noneOf: + description: Excluded targeting item keys + type: array + items: type: string - format: uuid - description: >- - MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a - session ID, then reuse it for all subsequent tool requests in the same session. - requestBody: - description: Request body for service_token_archive - required: true - content: - application/json: - example: - tool: service_token_archive - arguments: - id: '1234567890' - schema: - type: object - properties: - tool: - type: string - enum: - - service_token_archive - arguments: - $ref: '#/components/schemas/ArchiveServiceTokenInput' - required: - - tool - - arguments - responses: - '200': - description: Successful response - content: - application/json: - schema: - type: object - properties: - content: - type: array - items: - $ref: '#/components/schemas/MCPContent' - structuredContent: - $ref: '#/components/schemas/ArchiveServiceTokenOutput' - required: - - content - - structuredContent - additionalProperties: false - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/BadRequest' - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Unauthorized' - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/InternalError' - /customer-get: - post: - operationId: customer_get - summary: Get customer info - description: Get detailed information about a customer from the core database. - tags: - - Customers - security: - - bearerAuth: [] - parameters: - - name: mcp-session-id - in: header - required: true - schema: - type: string - format: uuid - description: >- - MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a - session ID, then reuse it for all subsequent tool requests in the same session. - requestBody: - description: Request body for customer_get - required: true - content: - application/json: - example: - tool: customer_get - arguments: {} - schema: - type: object - properties: - tool: - type: string - enum: - - customer_get - arguments: - $ref: '#/components/schemas/GetCustomerInput' - required: - - tool - - arguments - responses: - '200': - description: Successful response - content: - application/json: - schema: - type: object - properties: - content: - type: array - items: - $ref: '#/components/schemas/MCPContent' - structuredContent: - $ref: '#/components/schemas/GetCustomerOutput' - required: - - content - - structuredContent - additionalProperties: false - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/BadRequest' - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Unauthorized' - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/InternalError' - /customer-get-seats: - post: - operationId: customer_get_seats - summary: Get customer seats - description: Get all seats associated with a customer from the core database. - tags: - - Customers - security: - - bearerAuth: [] - parameters: - - name: mcp-session-id - in: header - required: true - schema: - type: string - format: uuid - description: >- - MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a - session ID, then reuse it for all subsequent tool requests in the same session. - requestBody: - description: Request body for customer_get_seats - required: true - content: - application/json: - example: - tool: customer_get_seats - arguments: {} - schema: - type: object - properties: - tool: - type: string - enum: - - customer_get_seats - arguments: - $ref: '#/components/schemas/GetCustomerSeatsInput' - required: - - tool - - arguments - responses: - '200': - description: Successful response - content: - application/json: - schema: - type: object - properties: - content: - type: array - items: - $ref: '#/components/schemas/MCPContent' - structuredContent: - $ref: '#/components/schemas/GetCustomerSeatsOutput' - required: - - content - - structuredContent - additionalProperties: false - '400': - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/BadRequest' - '401': - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Unauthorized' - '500': - description: Internal server error - content: - application/json: - schema: - $ref: '#/components/schemas/InternalError' -components: - schemas: - ListChannelsInput: - type: object - properties: {} - GetCustomerInput: - type: object - properties: - customerId: + example: [] + required: + - dimensionName + - anyOf + - noneOf + BrandStoryAgentSummary: + type: object + properties: + id: + type: number + example: 100 + name: + type: string + example: Example Name + required: + - id + - name + BrandStandardsAgentSummary: + type: object + properties: + id: + type: number + example: 100 + name: + type: string + example: Example Name + required: + - id + - name + ListChannelsInput: + type: object + properties: {} + GetCustomerInput: + type: object + properties: + customerId: description: >- The unique identifier of the customer to retrieve. If not provided, uses the authenticated users customer ID. @@ -3285,276 +3019,87 @@ components: SyncSalesAgentsInput: type: object properties: - creativeId: + creative_id: type: string example: example_id_123 + debug: + description: Enable debug mode to return full ADCP request/response logs for troubleshooting + type: boolean + example: true required: - - creativeId + - creative_id ListCountriesInput: type: object properties: {} ListLanguagesInput: type: object properties: {} - CreateMediaBuyInput: + GetMediaBuyInput: type: object properties: - tacticId: + media_buy_id: + type: string + example: example_id_123 + required: + - media_buy_id + ListMediaBuysInput: + type: object + properties: + tactic_id: type: number example: 100 - agentId: + status: + type: string + enum: + - DRAFT + - PENDING_APPROVAL + - ACTIVE + - PAUSED + - COMPLETED + - FAILED + - REJECTED + - ARCHIVED + example: DRAFT + take: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + skip: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + ValidateMediaBuyBudgetInput: + type: object + properties: + tactic_id: + type: number + example: 100 + new_budget_amount: + type: number + minimum: 0 + exclusiveMinimum: true + example: 100 + required: + - tactic_id + - new_budget_amount + ListNotificationsInput: + type: object + properties: + brandAgentId: + type: number + example: 100 + campaignId: type: string example: example_id_123 - name: + creativeId: type: string - minLength: 1 - example: Example Name - description: + example: example_id_123 + tacticId: type: string - example: string - products: - type: array - items: - type: object - properties: - mediaProductId: - type: string - budgetAmount: - type: number - minimum: 0 - exclusiveMinimum: true - budgetCurrency: - type: string - pricingCpm: - type: number - minimum: 0 - exclusiveMinimum: true - pricingSignalCost: - type: number - displayOrder: - type: integer - minimum: -9007199254740991 - maximum: 9007199254740991 - creatives: - type: array - items: - type: object - properties: - creative_id: - type: string - name: - type: string - format_id: - anyOf: - - type: string - - type: object - properties: - agent_url: - type: string - id: - type: string - required: - - agent_url - - id - assets: - type: object - additionalProperties: - type: object - properties: - url: - type: string - width: - type: number - height: - type: number - required: - - url - click_url: - type: string - required: - - creative_id - - name - - format_id - required: - - mediaProductId - - budgetAmount - example: [] - creatives: - type: array - items: - type: object - properties: - creative_id: - type: string - name: - type: string - format_id: - anyOf: - - type: string - - type: object - properties: - agent_url: - type: string - id: - type: string - required: - - agent_url - - id - assets: - type: object - additionalProperties: - type: object - properties: - url: - type: string - width: - type: number - height: - type: number - required: - - url - click_url: - type: string - required: - - creative_id - - name - - format_id - example: [] - required: - - tacticId - - agentId - - name - - products - UpdateMediaBuyInput: - type: object - properties: - mediaBuyId: - type: string - example: example_id_123 - name: - type: string - example: Example Name - description: - type: string - example: string - status: - type: string - enum: - - DRAFT - - PENDING_APPROVAL - - ACTIVE - - PAUSED - - COMPLETED - - FAILED - - REJECTED - example: DRAFT - creativeIds: - type: array - items: - type: string - example: [] - packages: - type: array - items: - type: object - properties: - packageId: - type: string - creativeIds: - type: array - items: - type: string - required: - - packageId - - creativeIds - example: [] - required: - - mediaBuyId - DeleteMediaBuyInput: - type: object - properties: - mediaBuyId: - type: string - example: example_id_123 - confirm: - type: boolean - example: true - required: - - mediaBuyId - - confirm - ExecuteMediaBuyInput: - type: object - properties: - mediaBuyId: - type: string - example: example_id_123 - required: - - mediaBuyId - GetMediaBuyInput: - type: object - properties: - mediaBuyId: - type: string - example: example_id_123 - required: - - mediaBuyId - ListMediaBuysInput: - type: object - properties: - tacticId: - 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 - ValidateMediaBuyBudgetInput: - type: object - properties: - tacticId: - type: number - example: 100 - newBudgetAmount: - type: number - minimum: 0 - exclusiveMinimum: true - example: 100 - required: - - tacticId - - newBudgetAmount - ListNotificationsInput: - type: object - properties: - brandAgentId: - type: number - example: 100 - campaignId: - type: string - example: example_id_123 - creativeId: - type: string - example: example_id_123 - tacticId: - type: string - example: example_id_123 - types: + example: example_id_123 + types: type: array items: type: string @@ -3623,6 +3168,28 @@ components: - video - display - audio + formatIds: + description: Filter by specific structured format IDs (e.g., display_300x250_image). More precise than formatTypes. + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id standardFormatsOnly: description: Only return products accepting IAB standard formats type: boolean @@ -3642,97 +3209,6 @@ components: required: - brief - brandManifestUrl - SaveProductInput: - type: object - properties: - productId: - type: string - example: example_id_123 - name: - type: string - example: Example Name - description: - type: string - example: string - publisherId: - type: string - example: example_id_123 - publisherName: - type: string - example: Example Name - deliveryType: - type: string - enum: - - guaranteed - - non_guaranteed - example: guaranteed - inventoryType: - type: string - enum: - - premium - - run_of_site - - targeted_package - example: premium - creativeFormats: - anyOf: - - type: array - items: - type: string - - type: array - items: - type: object - properties: - agent_url: - type: string - id: - type: string - required: - - agent_url - - id - pricingModel: - type: string - enum: - - auction - - fixed_cpm - example: auction - fixedCpm: - type: number - minimum: 0 - exclusiveMinimum: true - example: 100 - floorCpm: - type: number - minimum: 0 - exclusiveMinimum: true - example: 100 - targetCpm: - type: number - minimum: 0 - exclusiveMinimum: true - example: 100 - pricingOptions: - type: array - items: - type: object - additionalProperties: {} - example: [] - supportedTargeting: - type: array - items: - type: string - example: [] - adcpAgentId: - type: string - example: example_id_123 - required: - - productId - - name - - description - - publisherId - - publisherName - - deliveryType - - inventoryType - - pricingModel ListProductsInput: type: object properties: @@ -3767,11 +3243,12 @@ components: type: object properties: type: - description: Filter by agent type (SALES or OUTCOME) + description: Filter by agent type (SALES, OUTCOME, or SIGNAL) type: string enum: - SALES - OUTCOME + - SIGNAL example: SALES status: description: Filter by status (PENDING, ACTIVE, DISABLED) @@ -3808,6 +3285,7 @@ components: enum: - SALES - OUTCOME + - SIGNAL example: SALES name: description: Agent name @@ -3918,11 +3396,35 @@ components: - token - type: object properties: {} - required: - - type + reportingType: + description: >- + Reporting type for SALES agents: WEBHOOK (default), BUCKET, or POLLING. Defaults to WEBHOOK if not + specified. + type: string + enum: + - WEBHOOK + - BUCKET + - POLLING + example: WEBHOOK + reportingPollingCadence: + description: 'Reporting polling cadence for SALES agents (required only when reportingType is POLLING): DAILY or MONTHLY' + type: string + enum: + - DAILY + - MONTHLY + example: DAILY + seatId: + description: The seat ID to associate the agent with + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + required: + - type - name - endpointUrl - protocol + - seatId UnregisterAgentInput: type: object properties: @@ -4043,140 +3545,23 @@ components: - 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: + reportingType: + description: 'Reporting type for SALES agents: WEBHOOK (default), BUCKET, or POLLING' type: string - example: Example Name - prompt: + enum: + - WEBHOOK + - BUCKET + - POLLING + example: WEBHOOK + reportingPollingCadence: + description: 'Reporting polling cadence for SALES agents (required only when reportingType is POLLING): DAILY or MONTHLY' 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 + enum: + - DAILY + - MONTHLY + example: DAILY required: - - tacticId - - confirm + - agentId GetTacticInput: type: object properties: @@ -4201,30 +3586,6 @@ components: 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: @@ -4368,6 +3729,14 @@ components: type: string minLength: 1 example: Example Name + userId: + description: >- + User ID to associate with the token. Required for SuperAdmins creating tokens for other customers. If not + provided, defaults to the authenticated user. + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 required: - name UpdateServiceTokenInput: @@ -4436,1160 +3805,3424 @@ components: type: integer format: int64 example: 100 - MediaBuyGet: + RegisterSignalInput: type: object properties: - id: + adcpAgentId: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + signalId: type: string + minLength: 1 + maxLength: 255 + pattern: ^[\w\-:.]+$ example: example_id_123 - tacticId: - type: number - example: 100 - customerId: - type: number - example: 100 name: type: string + minLength: 1 + maxLength: 255 example: Example Name description: type: string + maxLength: 5000 example: string - products: + keyType: 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 + type: string + enum: + - hour + - half_hour + - day + - property + - publisher + - seller + - content_channel + - content_network + - content_show + - content_series + - content_language + - content_genre + - content_rating + - content_livestream + - content_length_min + - content_length_max + - dma + - city + - country + - region + - postal_code + - provider_category + - provider_segment + - device_type + - device_model + - device_make + - operating_system + - co2e_decile + - viewability_decile + - attention_potential_decile + - completion_rate_decile + - maid + - liveramp + - lat_lng_radius + - id5 + - coreid + - yahoo_connect example: [] - packages: + regions: + maxItems: 6 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 + type: string + enum: + - NORAM + - LATAM + - EMEA + - APAC + - ANZ + - GLOBAL example: [] - creatives: + metadata: + type: object + additionalProperties: {} + access: + minItems: 1 type: array items: type: object properties: - creativeId: - type: string - name: - type: string - formatId: + account: type: string - mediaUrl: - type: string - status: + minLength: 1 + scope: type: string + enum: + - PUBLIC + - PROPRIETARY + pricingOptions: + minItems: 1 + type: array + items: + anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + required: + - view_threshold + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + isLive: + default: false + type: boolean 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 - adcp: - type: object - properties: - mediaBuyId: - type: string - status: - type: string - webhookUrl: - type: string - performance: - type: object - properties: - impressions: - type: number - spend: - type: number - clicks: - type: number - lastUpdated: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - required: - - impressions - - spend - - clicks - archivedAt: - 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: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - required: - - id - - tacticId - - customerId - - name - - pricing - - status - - createdAt - - updatedAt - TacticGet: - type: object - properties: - id: - type: number - example: 100 - name: - type: string - example: Example Name - prompt: - type: string - example: string - campaignIds: - type: array - items: - type: string - example: [] - channelCodes: - type: array - items: - type: string + - account + - scope + - pricingOptions example: [] - countryCodes: - type: array - items: - type: string - example: [] - mediaBuyCount: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - archivedAt: - 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 + - adcpAgentId + - signalId - name - - channelCodes - - countryCodes - - createdAt - - updatedAt - MCPContent: - type: object - properties: - type: - type: string - enum: - - text - example: text - text: - type: string - example: string - required: - - type - - text - additionalProperties: false - BadRequest: - description: Bad request error response + - access + GetSignalInput: type: object properties: - error: + signalId: type: string - example: string - message: + minLength: 1 + maxLength: 255 + pattern: ^[\w\-:.]+$ + example: example_id_123 + account: type: string + maxLength: 255 example: string + includeArchived: + default: false + type: boolean required: - - error - additionalProperties: false - Unauthorized: - description: Unauthorized error response + - signalId + UpdateSignalFromAgentInput: type: object properties: - error: - type: string - example: string - message: + signalId: type: string - example: string - required: - - error - additionalProperties: false - InternalError: - description: Internal server error response - type: object - properties: - error: + minLength: 1 + maxLength: 255 + pattern: ^[\w\-:.]+$ + example: example_id_123 + name: type: string - example: string - message: + minLength: 1 + maxLength: 255 + example: Example Name + description: type: string + maxLength: 5000 example: string - required: - - error - additionalProperties: false - ChannelList: - type: object - properties: - total: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - items: + addAccess: type: array items: type: object properties: - channel: + account: type: string - displayName: + minLength: 1 + scope: type: string - required: - - channel - - displayName - additionalProperties: false - example: [] - required: - - total - - items - additionalProperties: false - GetCustomerOutput: - type: object - properties: - id: - description: Unique identifier for the customer - type: number - example: 100 - company: - description: Company name - type: string - example: string - name: - description: Customer display name - type: string - example: Example Name - active: - description: Whether the customer is currently active - type: boolean - example: true - createdAt: - description: ISO 8601 timestamp when the customer 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: - - id - - company - - name - - active - - createdAt - additionalProperties: false - GetCustomerSeatsOutput: - type: object - properties: - customerId: - description: The customer ID these seats belong to - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - seats: - description: Array of seats belonging to the customer + enum: + - PUBLIC + - PROPRIETARY + pricingOptions: + minItems: 1 + type: array + items: + anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + required: + - view_threshold + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + isLive: + default: false + type: boolean + required: + - account + - scope + - pricingOptions + example: [] + updateAccess: type: array items: type: object properties: - id: - description: Unique identifier for the seat - type: string - name: - description: Seat display name - type: string - customerId: - description: Customer ID that owns this seat - type: number - active: - description: Whether the seat is currently active + accessId: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + isLive: type: boolean + pricingOptions: + type: array + items: + anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + required: + - view_threshold + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + scope: + type: string + enum: + - PUBLIC + - PROPRIETARY required: - - id - - name - - customerId - - active - additionalProperties: false + - accessId + example: [] + archiveAccess: + type: array + items: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 example: [] - count: - description: Total number of seats returned - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 required: - - customerId - - seats - - count - additionalProperties: false - CreativeSyncSalesAgents: + - signalId + DeregisterSignalInput: type: object properties: - success: - type: boolean - example: true - creativeId: - type: string - example: example_id_123 - campaignId: + signalId: type: string + minLength: 1 + maxLength: 255 + pattern: ^[\w\-:.]+$ example: example_id_123 required: - - success - - creativeId - additionalProperties: false - CountryList: + - signalId + ListSignalsInput: type: object properties: - total: + signalAgentId: type: integer - minimum: 0 + minimum: -9007199254740991 maximum: 9007199254740991 example: 100 - items: + scope: + type: string + enum: + - PUBLIC + - PROPRIETARY + example: PUBLIC + isLive: + type: boolean + example: true + account: + type: string + maxLength: 255 + example: string + limit: + default: 20 + type: integer + exclusiveMinimum: true + maximum: 100 + offset: + default: 0 + type: integer + minimum: 0 + maximum: 9007199254740991 + includeArchived: + default: false + type: boolean + DiscoverSignalsInput: + type: object + properties: + agentId: + type: string + maxLength: 255 + example: example_id_123 + signalSpec: + type: string + maxLength: 5000 + example: string + signalIds: + maxItems: 100 type: array items: - type: object - properties: - key: - type: string - displayName: - type: string - required: - - key - - displayName - additionalProperties: false + type: string + maxLength: 255 example: [] - required: - - total - - items - additionalProperties: false - LanguageList: - type: object - properties: - total: + limit: + default: 20 + type: integer + exclusiveMinimum: true + maximum: 100 + offset: + default: 0 type: integer minimum: 0 maximum: 9007199254740991 - example: 100 - items: - type: array - items: - type: object - properties: - key: - type: string - displayName: - type: string - required: - - key - - displayName - additionalProperties: false - example: [] - required: - - total - - items - additionalProperties: false - MediaBuyDelete: - type: object - properties: - success: - type: boolean - example: true - id: - type: string - example: example_id_123 - required: - - success - - id - additionalProperties: false - MediaBuyExecute: + MediaBuyGet: type: object properties: - success: - type: boolean - example: true - mediaBuyId: - type: string - example: example_id_123 - status: - type: string - example: string - adcpMediaBuyId: + media_buy_id: + description: ADCP media buy identifier type: string example: example_id_123 - adcpStatus: - type: string - example: string - required: - - success - - mediaBuyId - - status - additionalProperties: false - MediaBuyList: - type: object - properties: - total: + tactic_id: + description: Internal tactic ID type: integer - minimum: 0 + exclusiveMinimum: true maximum: 9007199254740991 example: 100 - items: - type: array - items: - $ref: '#/components/schemas/MediaBuyGetOutput' - example: [] - required: - - total - - items - additionalProperties: false - MediaBuyValidateBudget: - type: object - properties: - valid: - type: boolean - example: true - message: - type: string - example: string - required: - - valid - additionalProperties: false - NotificationsList: - type: object - properties: - total: + customer_id: + description: Internal customer ID type: integer - minimum: 0 + exclusiveMinimum: true maximum: 9007199254740991 example: 100 - hasMore: - type: boolean - example: true - items: + 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: - id: + product_id: + description: ADCP product identifier type: string - type: + sales_agent_id: type: string - data: - type: object - additionalProperties: {} - read: - type: boolean - acknowledged: - type: boolean - createdAt: + sales_agent_name: 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))$ + budget: + description: ADCP budget field + type: number + pacing: + description: ADCP pacing field + type: string + enum: + - asap + - even + - front_loaded + pricing_option_id: + type: string + bid_price: + type: number + display_order: + type: number + creative_formats: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id required: - - id - - type - - data - - read - - acknowledged - - createdAt - additionalProperties: false + - product_id + - sales_agent_id example: [] - required: - - total - - hasMore - - items - additionalProperties: false - NotificationsMarkRead: - type: object - properties: - success: - type: boolean - example: true - notificationId: - type: string - example: example_id_123 - required: - - success - - notificationId - additionalProperties: false - NotificationsMarkAcknowledged: - type: object - properties: - success: - type: boolean - example: true - notificationId: - type: string - example: example_id_123 - required: - - success - - notificationId - additionalProperties: false - NotificationsMarkAllRead: - type: object - properties: - success: - type: boolean - example: true - count: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - required: - - success - - count - additionalProperties: false - MediaProductDiscover: - type: object - properties: - success: - type: boolean - example: true - productsFound: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - productsSaved: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - successfulAgents: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - failedAgents: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - products: + packages: + description: Post-execution ADCP packages (enriched) type: array items: type: object properties: - productId: - type: string - name: - type: string - publisherName: - type: string - salesAgentId: - type: string - salesAgentName: + package_id: type: string - deliveryType: + buyer_ref: + nullable: true type: string - enum: - - guaranteed - - non_guaranteed - inventoryType: + product_id: + nullable: true type: string - enum: - - premium - - run_of_site - - targeted_package - creativeFormats: + budget: + nullable: true + type: number + pacing: + nullable: true anyOf: - - type: array + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + pricing_option_id: + nullable: true + type: string + bid_price: + nullable: true + type: number + impressions: + nullable: true + type: number + targeting_overlay: + nullable: true + type: object + properties: + geo_country_any_of: + nullable: true + type: array items: type: string - - type: array + geo_region_any_of: + nullable: true + type: array items: - type: object - properties: - agent_url: - type: string - id: - type: string - required: - - agent_url - - id - additionalProperties: false - fixedCpm: - type: number - floorCpm: - type: number - targetCpm: - type: number - required: - - productId - - name - - publisherName - - deliveryType - - inventoryType - additionalProperties: false - example: [] - required: - - success - - productsFound - - productsSaved - - successfulAgents - - failedAgents - - products - additionalProperties: false - MediaProductSave: - type: object - properties: - id: - type: string - example: example_id_123 - productId: - type: string - example: example_id_123 - name: - type: string - example: Example Name - publisherId: - type: string - example: example_id_123 - publisherName: - type: string - example: Example Name - customerId: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - required: - - id - - productId - - name - - publisherId - - publisherName - - customerId - - createdAt - - updatedAt - additionalProperties: false - MediaProductList: - type: object - properties: - total: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - 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 + type: string + geo_metro_any_of: + nullable: true + type: array items: type: string - - type: array + geo_postal_code_any_of: + nullable: true + type: array items: + type: string + axe_include_segment: + nullable: true + type: string + axe_exclude_segment: + nullable: true + type: string + frequency_cap: + nullable: true + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + creative_assignments: + nullable: true + type: array + items: + type: object + properties: + creative_id: + type: string + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - creative_id + format_ids_to_provide: + nullable: true + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + paused: + nullable: true + type: boolean + ext: + nullable: true + type: object + additionalProperties: {} + product_ids: + description: Array of product IDs (enriched from joins) + type: array + items: + type: string + creatives: + description: Full creative objects (enriched from joins) + type: array + items: + type: object + properties: + creative_id: + type: string + name: + type: string + format_id: type: object properties: agent_url: type: string id: type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number required: - agent_url - id - additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + status: + description: Internal creative status (not in ADCP protocol) + type: string + required: + - creative_id + - name + - format_id + - assets + - status + created_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + updated_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + sales_agent_id: + type: string + sales_agent_name: + type: string + creative_formats: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id required: - - id - - productId - - name - - deliveryType - additionalProperties: false + - package_id + - creatives + - created_at + - updated_at example: [] - required: - - total - - items - additionalProperties: false - MediaProductSync: - type: object - properties: - success: - type: boolean - example: true - productsSaved: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - required: - - success - - productsSaved - additionalProperties: false - AgentGet: - anyOf: - - type: object - properties: - agentId: - type: string - name: - type: string - type: - type: string - enum: - - SALES - - OUTCOME - status: - type: string - relationship: - type: string - endpointUrl: - type: string - protocol: - type: string - authenticationType: - type: string - description: - type: string - organizationId: - type: string - registeredBy: - type: string - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - required: - - agentId - - name - - type - - status - - relationship - - endpointUrl - - protocol - - authenticationType - - createdAt - - updatedAt - additionalProperties: false - - type: object - properties: - agentId: - type: string - name: - type: string - type: - type: string - enum: - - SALES - - OUTCOME - status: - type: string - relationship: - type: string - endpointUrl: - type: string - protocol: - type: string - authenticationType: - type: string - description: - type: string - organizationId: + creatives: + description: Full creative objects (enriched from joins) + type: array + items: + type: object + properties: + creative_id: + type: string + name: + type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + status: + description: Internal creative status (not in ADCP protocol) + type: string + required: + - creative_id + - name + - format_id + - assets + - status + example: [] + adcp: + description: ADCP-specific metadata (from execute response) + type: object + properties: + media_buy_id: type: string - registeredBy: + status: type: string - createdAt: + webhook_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))$ - updatedAt: + 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))$ - customerAccountCount: - type: integer - minimum: 0 - maximum: 9007199254740991 required: - - agentId - - name - - type - - status - - relationship - - endpointUrl - - protocol - - authenticationType - - createdAt - - updatedAt - - customerAccountCount - additionalProperties: false - AgentList: + - 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 + TacticGet: type: object properties: - total: + id: + type: number + example: 100 + name: + type: string + example: Example Name + prompt: + type: string + example: string + campaignIds: + type: array + items: + type: string + example: [] + channelCodes: + type: array + items: + type: string + example: [] + countryCodes: + type: array + items: + type: string + example: [] + mediaBuyCount: type: integer minimum: 0 maximum: 9007199254740991 example: 100 - items: + targetingCount: + description: Count of targeting dimensions (channels, countries, bitmap profiles, brand agents) + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + bitmapTargetingProfiles: + description: Bitmap targeting profiles with targeting item keys for UI display 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 - 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 - customerAccountCount: - type: integer - minimum: 0 - maximum: 9007199254740991 - required: - - agentId - - name - - type - - status - - relationship - - endpointUrl - - protocol - - customerAccountCount - additionalProperties: false + $ref: '#/components/schemas/BitmapTargetingProfileResponse' + example: [] + brandStoryAgents: + description: Brand story agents associated with this tactic + type: array + items: + $ref: '#/components/schemas/BrandStoryAgentSummary' + example: [] + brandStandardsAgents: + description: Brand standards agents associated with this tactic + type: array + items: + $ref: '#/components/schemas/BrandStandardsAgentSummary' example: [] + 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 + archivedAt: + 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: - - total - - items - additionalProperties: false - AgentRegister: + - id + - name + - channelCodes + - countryCodes + - createdAt + - updatedAt + MCPContent: 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: + - text + example: text + text: type: string example: string - endpointUrl: - type: string - example: https://example.com required: - - agentId - - name - type - - status - - endpointUrl + - text additionalProperties: false - AgentUnregister: + BadRequest: + description: Bad request error response type: object properties: - success: - type: boolean - example: true - agentId: + error: type: string - example: example_id_123 - type: + example: string + message: type: string - enum: - - SALES - - OUTCOME - example: SALES + example: string required: - - success - - agentId - - type + - error additionalProperties: false - AgentUpdate: + Unauthorized: + description: Unauthorized error response type: object properties: - agentId: + error: type: string - example: example_id_123 - name: + example: string + message: type: string - example: Example Name - type: + example: string + required: + - error + additionalProperties: false + InternalError: + description: Internal server error response + type: object + properties: + error: type: string - enum: - - SALES - - OUTCOME - example: SALES - status: + example: string + message: type: string example: string required: - - agentId - - name - - type - - status + - error + additionalProperties: false + ChannelList: + type: object + properties: + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + items: + type: array + items: + type: object + properties: + channel: + type: string + displayName: + type: string + required: + - channel + - displayName + additionalProperties: false + example: [] + required: + - total + - items additionalProperties: false - TacticCreate: + GetCustomerOutput: type: object properties: id: + description: Unique identifier for the customer type: number example: 100 - name: - type: string - example: Example Name - prompt: + company: + description: Company name type: string example: string - campaignId: + name: + description: Customer display name type: string - example: example_id_123 - channelCodes: - type: array - items: - type: string - example: [] - countryCodes: - type: array - items: - type: string - example: [] + example: Example Name + active: + description: Whether the customer is currently active + type: boolean + example: true createdAt: + description: ISO 8601 timestamp when the customer was created type: string format: date-time pattern: >- @@ -5597,225 +7230,4773 @@ components: example: string required: - id + - company - name - - campaignId - - channelCodes - - countryCodes + - active - createdAt additionalProperties: false - TacticDelete: - type: object - properties: - success: - type: boolean - example: true - tacticId: - type: number - example: 100 - required: - - success - - tacticId - additionalProperties: false - TacticList: + GetCustomerSeatsOutput: type: object properties: - total: + customerId: + description: The customer ID these seats belong to type: integer - minimum: 0 + exclusiveMinimum: true maximum: 9007199254740991 example: 100 - items: + seats: + description: Array of seats belonging to the customer type: array items: - $ref: '#/components/schemas/TacticGetOutput' + type: object + properties: + id: + description: Unique identifier for the seat + type: string + name: + description: Seat display name + type: string + customerId: + description: Customer ID that owns this seat + type: number + active: + description: Whether the seat is currently active + type: boolean + type: + description: Seat type (BUYER or ACTIVATION) + type: string + enum: + - BUYER + - ACTIVATION + required: + - id + - name + - customerId + - active + - type + additionalProperties: false + example: [] + count: + description: Total number of seats returned + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + required: + - customerId + - seats + - count + additionalProperties: false + SyncSalesAgentsOutput: + type: object + properties: + success: + type: boolean + example: true + creative_id: + type: string + example: example_id_123 + campaign_id: + type: string + example: example_id_123 + debug_info: + type: object + properties: + request: {} + response: {} + debugLogs: + type: array + items: + type: object + properties: + type: + type: string + timestamp: + type: string + message: + type: string + request: + type: object + properties: + method: + type: string + url: + type: string + headers: + type: object + additionalProperties: + type: string + body: {} + additionalProperties: false + response: + type: object + properties: + status: + type: number + statusText: + type: string + headers: + type: object + additionalProperties: + type: string + body: {} + additionalProperties: false + required: + - type + additionalProperties: false + error: {} + agentResults: + type: array + items: + type: object + properties: + agentId: + type: string + agentName: + type: string + request: {} + response: {} + debugLogs: + type: array + items: + type: object + properties: + type: + type: string + timestamp: + type: string + message: + type: string + request: + type: object + properties: + method: + type: string + url: + type: string + headers: + type: object + additionalProperties: + type: string + body: {} + additionalProperties: false + response: + type: object + properties: + status: + type: number + statusText: + type: string + headers: + type: object + additionalProperties: + type: string + body: {} + additionalProperties: false + required: + - type + additionalProperties: false + error: {} + required: + - agentId + - agentName + additionalProperties: false + additionalProperties: false + required: + - success + - creative_id + additionalProperties: false + CountryList: + type: object + properties: + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + items: + type: array + items: + type: object + properties: + key: + type: string + displayName: + type: string + required: + - key + - displayName + additionalProperties: false + example: [] + required: + - total + - items + additionalProperties: false + LanguageList: + type: object + properties: + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + items: + type: array + items: + type: object + properties: + key: + type: string + displayName: + type: string + required: + - key + - displayName + additionalProperties: false + example: [] + required: + - total + - items + additionalProperties: false + ListMediaBuysOutput: + type: object + properties: + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + items: + type: array + items: + $ref: '#/components/schemas/MediaBuyGetOutput' + example: [] + required: + - total + - items + additionalProperties: false + ValidateMediaBuyBudgetOutput: + type: object + properties: + valid: + type: boolean + example: true + message: + type: string + example: string + required: + - valid + additionalProperties: false + NotificationsList: + type: object + properties: + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + hasMore: + type: boolean + example: true + items: + type: array + items: + type: object + properties: + id: + type: string + type: + type: string + data: + type: object + additionalProperties: {} + read: + type: boolean + acknowledged: + type: boolean + createdAt: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + required: + - id + - type + - data + - read + - acknowledged + - createdAt + additionalProperties: false + example: [] + required: + - total + - hasMore + - items + additionalProperties: false + NotificationsMarkRead: + type: object + properties: + success: + type: boolean + example: true + notificationId: + type: string + example: example_id_123 + required: + - success + - notificationId + additionalProperties: false + NotificationsMarkAcknowledged: + type: object + properties: + success: + type: boolean + example: true + notificationId: + type: string + example: example_id_123 + required: + - success + - notificationId + additionalProperties: false + NotificationsMarkAllRead: + type: object + properties: + success: + type: boolean + example: true + count: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + required: + - success + - count + additionalProperties: false + MediaProductDiscover: + type: object + properties: + success: + type: boolean + example: true + products_found: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + products_saved: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + successful_agents: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + failed_agents: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + products: + type: array + items: + type: object + properties: + product_id: + type: string + name: + type: string + description: + type: string + publisher_properties: + description: Publisher property selectors + type: array + items: + type: object + properties: + property_id: + type: string + property_type: + type: string + name: + type: string + identifiers: + type: array + items: + type: object + properties: + type: + type: string + value: + type: string + include_subdomains: + type: boolean + required: + - type + - value + additionalProperties: false + tags: + type: array + items: + type: string + publisher_domain: + type: string + additionalProperties: false + format_ids: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + placements: + description: Specific placements within product + type: array + items: + type: object + properties: + placement_id: + type: string + name: + type: string + description: + type: string + format_ids: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + required: + - placement_id + - name + additionalProperties: false + delivery_type: + anyOf: + - type: string + enum: + - guaranteed + - type: string + enum: + - non_guaranteed + pricing_options: + type: array + items: + anyOf: + - anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + additionalProperties: false + required: + - view_threshold + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + additionalProperties: false + required: + - view_threshold + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + minItems: 2 + estimated_exposures: + description: Estimated impressions for guaranteed products + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + measurement: + description: Measurement details + type: object + properties: + type: + type: string + attribution: + type: string + window: + type: string + reporting: + type: string + required: + - type + - attribution + - reporting + additionalProperties: false + delivery_measurement: + description: Delivery measurement provider and methodology + type: object + properties: + provider: + type: string + notes: + type: string + required: + - provider + additionalProperties: false + reporting_capabilities: + description: Available reporting options + type: object + properties: + supported_metrics: + type: array + items: + type: string + reporting_frequency: + type: array + items: + type: string + custom_dimensions: + type: array + items: + type: string + additionalProperties: false + creative_policy: + description: Creative requirements and restrictions + type: object + properties: + max_file_size: + type: number + allowed_formats: + type: array + items: + type: string + restricted_categories: + type: array + items: + type: string + approval_required: + type: boolean + guidelines_url: + type: string + additionalProperties: false + is_custom: + description: Whether this is a custom product + type: boolean + brief_relevance: + description: AI-generated relevance explanation included when discovering products + type: string + expires_at: + description: Expiration for custom products + 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))$ + product_card: + description: Standard visual card + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + additionalProperties: false + product_card_detailed: + description: Detailed carousel card + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + additionalProperties: false + ext: + description: Extension data + type: object + additionalProperties: {} + id: + description: Internal database ID + type: string + customer_id: + description: Customer who owns this product (null = generic product) + nullable: true + type: integer + minimum: -9007199254740991 + 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 + formats: + description: ADCP format_ids array of FormatID objects {agent_url, id} + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + supported_targeting: + description: Supported targeting capabilities + type: array + items: + type: string + created_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + updated_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + required: + - product_id + - name + - description + - format_ids + - delivery_type + - pricing_options + - id + - customer_id + - created_at + - updated_at + additionalProperties: false + example: [] + agent_results: + type: array + items: + type: object + properties: + agentId: + type: string + agentName: + type: string + success: + type: boolean + productCount: + type: integer + minimum: 0 + maximum: 9007199254740991 + error: + type: string + debugLogs: + type: array + items: + type: object + properties: + type: + type: string + timestamp: + type: string + message: + type: string + request: + type: object + properties: + method: + type: string + url: + type: string + headers: + type: object + additionalProperties: + type: string + body: {} + additionalProperties: false + response: + type: object + properties: + status: + type: number + statusText: + type: string + headers: + type: object + additionalProperties: + type: string + body: {} + additionalProperties: false + required: + - type + additionalProperties: false + rawResponseData: {} + required: + - agentId + - agentName + - success + - productCount + additionalProperties: false + 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: + type: object + properties: + product_id: + type: string + name: + type: string + description: + type: string + publisher_properties: + description: Publisher property selectors + type: array + items: + type: object + properties: + property_id: + type: string + property_type: + type: string + name: + type: string + identifiers: + type: array + items: + type: object + properties: + type: + type: string + value: + type: string + include_subdomains: + type: boolean + required: + - type + - value + additionalProperties: false + tags: + type: array + items: + type: string + publisher_domain: + type: string + additionalProperties: false + format_ids: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + placements: + description: Specific placements within product + type: array + items: + type: object + properties: + placement_id: + type: string + name: + type: string + description: + type: string + format_ids: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + required: + - placement_id + - name + additionalProperties: false + delivery_type: + anyOf: + - type: string + enum: + - guaranteed + - type: string + enum: + - non_guaranteed + pricing_options: + type: array + items: + anyOf: + - anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + additionalProperties: false + required: + - view_threshold + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + additionalProperties: false + required: + - view_threshold + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + minItems: 2 + estimated_exposures: + description: Estimated impressions for guaranteed products + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + measurement: + description: Measurement details + type: object + properties: + type: + type: string + attribution: + type: string + window: + type: string + reporting: + type: string + required: + - type + - attribution + - reporting + additionalProperties: false + delivery_measurement: + description: Delivery measurement provider and methodology + type: object + properties: + provider: + type: string + notes: + type: string + required: + - provider + additionalProperties: false + reporting_capabilities: + description: Available reporting options + type: object + properties: + supported_metrics: + type: array + items: + type: string + reporting_frequency: + type: array + items: + type: string + custom_dimensions: + type: array + items: + type: string + additionalProperties: false + creative_policy: + description: Creative requirements and restrictions + type: object + properties: + max_file_size: + type: number + allowed_formats: + type: array + items: + type: string + restricted_categories: + type: array + items: + type: string + approval_required: + type: boolean + guidelines_url: + type: string + additionalProperties: false + is_custom: + description: Whether this is a custom product + type: boolean + brief_relevance: + description: AI-generated relevance explanation included when discovering products + type: string + expires_at: + description: Expiration for custom products + 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))$ + product_card: + description: Standard visual card + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + additionalProperties: false + product_card_detailed: + description: Detailed carousel card + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + additionalProperties: false + ext: + description: Extension data + type: object + additionalProperties: {} + id: + description: Internal database ID + type: string + customer_id: + description: Customer who owns this product (null = generic product) + nullable: true + type: integer + minimum: -9007199254740991 + 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 + formats: + description: ADCP format_ids array of FormatID objects {agent_url, id} + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + supported_targeting: + description: Supported targeting capabilities + type: array + items: + type: string + created_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + updated_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + required: + - product_id + - name + - description + - format_ids + - delivery_type + - pricing_options + - id + - customer_id + - created_at + - updated_at + additionalProperties: false + 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 + reportingType: + nullable: true + type: string + enum: + - WEBHOOK + - BUCKET + - POLLING + reportingPollingCadence: + nullable: true + type: string + enum: + - DAILY + - MONTHLY + 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: + - 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 + - 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 + name: + type: string + example: Example Name + type: + type: string + enum: + - SALES + - OUTCOME + - SIGNAL + example: SALES + status: + type: string + example: string + reportingType: + nullable: true + type: string + enum: + - WEBHOOK + - BUCKET + - POLLING + example: WEBHOOK + reportingPollingCadence: + nullable: true + type: string + enum: + - DAILY + - MONTHLY + example: DAILY + required: + - agentId + - name + - type + - status + additionalProperties: false + TacticList: + type: object + properties: + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + items: + type: array + items: + $ref: '#/components/schemas/TacticGetOutput' + example: [] + required: + - total + - items + 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: + url: + type: string + method: + type: string + authenticationType: + type: string + 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 + 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: + type: array + items: + type: object + properties: + id: + type: string + status: + type: string + endpoint: + type: object + properties: + url: + type: string + method: + type: string + authenticationType: + type: string + required: + - 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 + 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 + 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 + 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 + required: + - 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 + 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: + - 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' + 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 + userEmail: + description: Email of the user who owns this token + type: string + 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 + isAdmin: + description: Whether the requesting user has admin privileges (can see all tokens) + type: boolean + example: true + required: + - tokens + - count + - isAdmin + additionalProperties: false + SignalCreate: + type: object + properties: + signal: + type: object + properties: + id: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + signalId: + type: string + adcpAgentId: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + name: + type: string + description: + nullable: true + type: string + keyType: + nullable: true + type: array + items: + type: string + enum: + - hour + - half_hour + - day + - property + - publisher + - seller + - content_channel + - content_network + - content_show + - content_series + - content_language + - content_genre + - content_rating + - content_livestream + - content_length_min + - content_length_max + - dma + - city + - country + - region + - postal_code + - provider_category + - provider_segment + - device_type + - device_model + - device_make + - operating_system + - co2e_decile + - viewability_decile + - attention_potential_decile + - completion_rate_decile + - maid + - liveramp + - lat_lng_radius + - id5 + - coreid + - yahoo_connect + regions: + nullable: true + type: array + items: + type: string + enum: + - NORAM + - LATAM + - EMEA + - APAC + - ANZ + - GLOBAL + metadata: + nullable: true + type: object + additionalProperties: {} + archivedAt: + 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))$ + createdBy: + nullable: true + type: string + updatedBy: + nullable: true + 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: + - id + - signalId + - adcpAgentId + - name + - description + - keyType + - regions + - metadata + - archivedAt + - createdBy + - updatedBy + - createdAt + - updatedAt + additionalProperties: false + access: + type: array + items: + type: object + properties: + id: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + signalId: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + account: + type: string + scope: + type: string + enum: + - PUBLIC + - PROPRIETARY + pricingOptions: + type: array + items: + anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + additionalProperties: false + required: + - view_threshold + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + type: + type: string + enum: + - agent + agentUrl: + type: string + isLive: + type: boolean + deployedAt: + 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))$ + estimatedActivationDurationMinutes: + nullable: true + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + decisioningPlatformSegmentId: + nullable: true + type: string + archivedAt: + 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))$ + 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: + - id + - signalId + - account + - scope + - pricingOptions + - type + - agentUrl + - isLive + - deployedAt + - estimatedActivationDurationMinutes + - decisioningPlatformSegmentId + - archivedAt + - createdAt + - updatedAt + additionalProperties: false + example: [] + required: + - signal + - access + additionalProperties: false + SignalGet: + type: object + properties: + signal: + type: object + properties: + id: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + signalId: + type: string + adcpAgentId: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + name: + type: string + description: + nullable: true + type: string + keyType: + nullable: true + type: array + items: + type: string + enum: + - hour + - half_hour + - day + - property + - publisher + - seller + - content_channel + - content_network + - content_show + - content_series + - content_language + - content_genre + - content_rating + - content_livestream + - content_length_min + - content_length_max + - dma + - city + - country + - region + - postal_code + - provider_category + - provider_segment + - device_type + - device_model + - device_make + - operating_system + - co2e_decile + - viewability_decile + - attention_potential_decile + - completion_rate_decile + - maid + - liveramp + - lat_lng_radius + - id5 + - coreid + - yahoo_connect + regions: + nullable: true + type: array + items: + type: string + enum: + - NORAM + - LATAM + - EMEA + - APAC + - ANZ + - GLOBAL + metadata: + nullable: true + type: object + additionalProperties: {} + archivedAt: + 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))$ + createdBy: + nullable: true + type: string + updatedBy: + nullable: true + 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: + - id + - signalId + - adcpAgentId + - name + - description + - keyType + - regions + - metadata + - archivedAt + - createdBy + - updatedBy + - createdAt + - updatedAt + additionalProperties: false + access: + type: array + items: + type: object + properties: + id: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + signalId: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + account: + type: string + scope: + type: string + enum: + - PUBLIC + - PROPRIETARY + pricingOptions: + type: array + items: + anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + additionalProperties: false + required: + - view_threshold + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + type: + type: string + enum: + - agent + agentUrl: + type: string + isLive: + type: boolean + deployedAt: + 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))$ + estimatedActivationDurationMinutes: + nullable: true + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + decisioningPlatformSegmentId: + nullable: true + type: string + archivedAt: + 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))$ + 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: + - id + - signalId + - account + - scope + - pricingOptions + - type + - agentUrl + - isLive + - deployedAt + - estimatedActivationDurationMinutes + - decisioningPlatformSegmentId + - archivedAt + - createdAt + - updatedAt + additionalProperties: false example: [] required: - - total - - items - additionalProperties: false - TacticLinkCampaign: - 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 - 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 + - signal + - access additionalProperties: false - WebhookRegister: + SignalUpdate: type: object properties: - id: - type: string - example: example_id_123 - brandAgentId: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - endpoint: + signal: type: object properties: - url: + id: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + signalId: type: string - method: + adcpAgentId: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + name: type: string - authenticationType: + description: + nullable: true type: string - 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: + keyType: + nullable: true type: array items: type: string - metrics: + enum: + - hour + - half_hour + - day + - property + - publisher + - seller + - content_channel + - content_network + - content_show + - content_series + - content_language + - content_genre + - content_rating + - content_livestream + - content_length_min + - content_length_max + - dma + - city + - country + - region + - postal_code + - provider_category + - provider_segment + - device_type + - device_model + - device_make + - operating_system + - co2e_decile + - viewability_decile + - attention_potential_decile + - completion_rate_decile + - maid + - liveramp + - lat_lng_radius + - id5 + - coreid + - yahoo_connect + regions: + nullable: true type: array items: type: string - minSeverity: + enum: + - NORAM + - LATAM + - EMEA + - APAC + - ANZ + - GLOBAL + metadata: + nullable: true + type: object + additionalProperties: {} + archivedAt: + nullable: true 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: + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + createdBy: + nullable: true + type: string + updatedBy: + nullable: true + 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: - - success + - id + - signalId + - adcpAgentId + - name + - description + - keyType + - regions + - metadata + - archivedAt + - createdBy + - updatedBy + - createdAt + - updatedAt 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: + access: type: array items: type: object properties: id: - type: string - status: - type: string - endpoint: - type: object - properties: - url: - type: string - method: - type: string - authenticationType: - type: string - required: - - url - - method - additionalProperties: false - eventTypes: - type: array - items: - type: string - brandAgentId: type: integer - exclusiveMinimum: true + minimum: -9007199254740991 maximum: 9007199254740991 - failureCount: + signalId: type: integer - minimum: 0 + minimum: -9007199254740991 maximum: 9007199254740991 - lastSuccess: + account: + type: string + scope: + type: string + enum: + - PUBLIC + - PROPRIETARY + pricingOptions: + type: array + items: + anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + additionalProperties: false + required: + - view_threshold + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + type: + type: string + enum: + - agent + agentUrl: + type: string + isLive: + type: boolean + deployedAt: 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: + estimatedActivationDurationMinutes: + nullable: true + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + decisioningPlatformSegmentId: + nullable: true + type: string + archivedAt: nullable: true type: string format: date-time @@ -5826,723 +12007,1175 @@ components: format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|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: - id - - status - - endpoint - - eventTypes - - failureCount + - signalId + - account + - scope + - pricingOptions + - type + - agentUrl + - isLive + - deployedAt + - estimatedActivationDurationMinutes + - decisioningPlatformSegmentId + - archivedAt - createdAt + - updatedAt additionalProperties: false example: [] required: - - total - - items + - signal + - access additionalProperties: false - WebhookDelete: + SignalDelete: 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 - 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 - 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 - required: - - 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 + - success - 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: - - id - - customerId - - name - - accessClientId - - createdAt - - updatedAt - additionalProperties: false - ListServiceTokensOutput: + SignalList: type: object properties: - tokens: - description: 'Array of service tokens. Note: accessClientSecret is never included in list responses' + signals: 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 + items: + type: object + properties: + id: type: integer - format: int64 - organizationId: - description: Optional organization identifier for scoping the token + minimum: -9007199254740991 + maximum: 9007199254740991 + signalId: type: string + adcpAgentId: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 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) + nullable: true type: string - expiresAt: - description: ISO 8601 timestamp when the token expires, if set + keyType: + nullable: true + type: array + items: + type: string + enum: + - hour + - half_hour + - day + - property + - publisher + - seller + - content_channel + - content_network + - content_show + - content_series + - content_language + - content_genre + - content_rating + - content_livestream + - content_length_min + - content_length_max + - dma + - city + - country + - region + - postal_code + - provider_category + - provider_segment + - device_type + - device_model + - device_make + - operating_system + - co2e_decile + - viewability_decile + - attention_potential_decile + - completion_rate_decile + - maid + - liveramp + - lat_lng_radius + - id5 + - coreid + - yahoo_connect + regions: + nullable: true + type: array + items: + type: string + enum: + - NORAM + - LATAM + - EMEA + - APAC + - ANZ + - GLOBAL + metadata: + nullable: true + type: object + additionalProperties: {} + archivedAt: + 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))$ + createdBy: + nullable: true + type: string + updatedBy: + nullable: true + type: 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))$ 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))$ + access: + type: array + items: + type: object + properties: + id: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + signalId: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + account: + type: string + scope: + type: string + enum: + - PUBLIC + - PROPRIETARY + pricingOptions: + type: array + items: + anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + additionalProperties: false + required: + - view_threshold + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + type: + type: string + enum: + - agent + agentUrl: + type: string + isLive: + type: boolean + deployedAt: + 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))$ + estimatedActivationDurationMinutes: + nullable: true + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + decisioningPlatformSegmentId: + nullable: true + type: string + archivedAt: + 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))$ + 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: + - id + - signalId + - account + - scope + - pricingOptions + - type + - agentUrl + - isLive + - deployedAt + - estimatedActivationDurationMinutes + - decisioningPlatformSegmentId + - archivedAt + - createdAt + - updatedAt + additionalProperties: false required: - id - - customerId + - signalId + - adcpAgentId - name - - accessClientId + - description + - keyType + - regions + - metadata + - archivedAt + - createdBy + - updatedBy - createdAt - updatedAt + - access additionalProperties: false example: [] - count: - description: Total number of tokens returned + total: type: integer minimum: 0 maximum: 9007199254740991 example: 100 + limit: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + example: 100 + offset: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + example: 100 required: - - tokens - - count + - signals + - total + - limit + - offset additionalProperties: false - MediaBuyGetOutput: + SignalDiscover: type: object properties: - id: - type: string - example: example_id_123 - tacticId: - type: number - example: 100 - customerId: - type: number - example: 100 - name: - type: string - example: Example Name - description: - type: string - example: string - products: + agentResults: type: array items: type: object properties: - mediaProductId: - type: string - salesAgentId: + agentId: type: string - salesAgentName: + agentName: type: string - budgetAmount: - type: number - budgetCurrency: + success: + type: boolean + signalCount: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + error: 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 + - agentId + - agentName + - success + - signalCount additionalProperties: false example: [] - packages: + signals: 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: + signalId: 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: + name: 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: + description: type: string - salesAgentName: + dataProvider: type: string - pricingCpm: - type: number - pricingSignalCost: - type: number - bidPrice: + coveragePercentage: + nullable: true type: number - pricingOptionId: - type: string - creativeFormats: + access: type: array items: type: object properties: - agent_url: + account: + nullable: true type: string - id: + scope: type: string + pricingOptions: + type: array + items: + anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + additionalProperties: false + required: + - view_threshold + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + isLive: + type: boolean required: - - agent_url - - id + - account + - scope + - pricingOptions + - isLive additionalProperties: false + regions: + nullable: true + type: array + items: + type: string + enum: + - NORAM + - LATAM + - EMEA + - APAC + - ANZ + - GLOBAL + keyType: + nullable: true + type: array + items: + type: string + enum: + - hour + - half_hour + - day + - property + - publisher + - seller + - content_channel + - content_network + - content_show + - content_series + - content_language + - content_genre + - content_rating + - content_livestream + - content_length_min + - content_length_max + - dma + - city + - country + - region + - postal_code + - provider_category + - provider_segment + - device_type + - device_model + - device_make + - operating_system + - co2e_decile + - viewability_decile + - attention_potential_decile + - completion_rate_decile + - maid + - liveramp + - lat_lng_radius + - id5 + - coreid + - yahoo_connect + metadata: + nullable: true + type: object + additionalProperties: {} 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 + - signalId - name - - formatId - - mediaUrl - - status + - description + - dataProvider + - coveragePercentage + - access + - regions + - keyType + - metadata 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: - type: object - properties: - mediaBuyId: - type: string - status: - type: string - webhookUrl: - type: string - additionalProperties: false - performance: - type: object - properties: - impressions: - type: number - spend: - type: number - clicks: - type: number - lastUpdated: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - required: - - impressions - - spend - - clicks - additionalProperties: false - archivedAt: - 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: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - required: - - id - - tacticId - - customerId - - name - - pricing - - status - - createdAt - - updatedAt + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + required: + - agentResults + - signals + - total additionalProperties: false - TacticGetOutput: + BitmapTargetingProfileResponseOutput: type: object properties: - id: - type: number - example: 100 - name: + dimensionName: + description: Targeting dimension name (e.g., country, region, city, device_type) type: string example: Example Name - prompt: - type: string - example: string - campaignIds: - type: array - items: - type: string - example: [] - channelCodes: + anyOf: + description: Included targeting item keys (e.g., "US", "MX") type: array items: type: string example: [] - countryCodes: + noneOf: + description: Excluded targeting item keys type: array items: type: string example: [] - mediaBuyCount: - type: integer - minimum: 0 - maximum: 9007199254740991 + required: + - dimensionName + - anyOf + - noneOf + additionalProperties: false + BrandStoryAgentSummaryOutput: + type: object + properties: + id: + type: number example: 100 - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - archivedAt: + name: 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 + example: Example Name required: - id - name - - channelCodes - - countryCodes - - createdAt - - updatedAt additionalProperties: false - MediaBuyCreate: + BrandStandardsAgentSummaryOutput: type: object properties: id: + type: number + example: 100 + name: + type: string + example: Example Name + required: + - id + - name + additionalProperties: false + MediaBuyGetOutput: + type: object + properties: + 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: - type: string - salesAgentId: + product_id: + description: ADCP product identifier type: string - salesAgentName: + sales_agent_id: 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: + sales_agent_name: type: string - productIds: - type: array - items: - type: string - impressions: - type: number budget: + description: ADCP budget field 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: + pacing: + description: ADCP pacing field type: string - salesAgentName: + enum: + - asap + - even + - front_loaded + pricing_option_id: type: string - pricingCpm: - type: number - pricingSignalCost: + bid_price: type: number - bidPrice: + display_order: type: number - pricingOptionId: - type: string - creativeFormats: + creative_formats: type: array items: type: object @@ -6551,157 +13184,126 @@ components: type: string id: type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number required: - agent_url - id additionalProperties: false required: - - packageId - - productIds - - impressions - - budget - - targetingOverlay - - 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 + - product_id + - sales_agent_id 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: - type: object - properties: - mediaBuyId: - type: string - status: - type: string - webhookUrl: - type: string - additionalProperties: false - performance: - type: object - properties: - impressions: - type: number - spend: - type: number - clicks: - type: number - lastUpdated: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - required: - - impressions - - spend - - clicks - additionalProperties: false - archivedAt: - 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: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - required: - - id - - tacticId - - customerId - - name - - pricing - - status - - createdAt - - updatedAt - additionalProperties: false - MediaBuyUpdate: - type: object - properties: - id: - type: string - example: example_id_123 - tacticId: - type: number - example: 100 - customerId: - type: number - example: 100 - name: - type: string - example: Example Name - description: - type: string - example: string - products: + packages: + description: Post-execution ADCP packages (enriched) type: array items: type: object properties: - mediaProductId: + package_id: type: string - salesAgentId: + buyer_ref: + nullable: true type: string - salesAgentName: + product_id: + nullable: true type: string - budgetAmount: + budget: + nullable: true type: number - budgetCurrency: + pacing: + nullable: true + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + pricing_option_id: + nullable: true type: string - pricingCpm: - type: number - pricingSignalCost: + bid_price: + nullable: true type: number - displayOrder: + impressions: + nullable: true type: number - creativeFormats: + targeting_overlay: + nullable: true + type: object + properties: + geo_country_any_of: + nullable: true + type: array + items: + type: string + geo_region_any_of: + nullable: true + type: array + items: + type: string + geo_metro_any_of: + nullable: true + type: array + items: + type: string + geo_postal_code_any_of: + nullable: true + type: array + items: + type: string + axe_include_segment: + nullable: true + type: string + axe_exclude_segment: + nullable: true + type: string + frequency_cap: + nullable: true + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + additionalProperties: false + additionalProperties: false + creative_assignments: + nullable: true + type: array + items: + type: object + properties: + creative_id: + type: string + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - creative_id + additionalProperties: false + format_ids_to_provide: + nullable: true type: array items: type: object @@ -6710,76 +13312,930 @@ components: type: string id: type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number required: - agent_url - id additionalProperties: false - required: - - mediaProductId - - salesAgentId - additionalProperties: false - example: [] - packages: - type: array - items: - type: object - properties: - packageId: - type: string - productIds: + paused: + nullable: true + type: boolean + ext: + nullable: true + type: object + additionalProperties: {} + product_ids: + description: Array of product IDs (enriched from joins) type: array items: type: string - impressions: - type: number - budget: - type: number - targetingOverlay: {} creatives: + description: Full creative objects (enriched from joins) type: array items: type: object properties: - creativeId: + creative_id: type: string name: type: string - formatId: - type: string - mediaUrl: - type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 status: + description: Internal creative status (not in ADCP protocol) type: string required: - - creativeId + - creative_id - name - - formatId - - mediaUrl + - format_id + - assets - status additionalProperties: false - createdAt: + created_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - updatedAt: + updated_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - salesAgentId: - type: string - salesAgentName: + sales_agent_id: type: string - pricingCpm: - type: number - pricingSignalCost: - type: number - bidPrice: - type: number - pricingOptionId: + sales_agent_name: type: string - creativeFormats: + creative_formats: type: array items: type: object @@ -6788,71 +14244,924 @@ components: type: string id: type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number required: - agent_url - id additionalProperties: false required: - - packageId - - productIds - - impressions - - budget - - targetingOverlay + - package_id - creatives - - createdAt - - updatedAt + - created_at + - updated_at additionalProperties: false example: [] creatives: + description: Full creative objects (enriched from joins) type: array items: type: object properties: - creativeId: + creative_id: type: string name: type: string - formatId: - type: string - mediaUrl: - type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 status: + description: Internal creative status (not in ADCP protocol) type: string required: - - creativeId + - creative_id - name - - formatId - - mediaUrl + - format_id + - assets - status additionalProperties: false example: [] - pricing: - type: object - properties: - cpm: - type: number - signalCost: - type: number - totalCpm: - type: number - required: - - cpm - - totalCpm - additionalProperties: false - status: - type: string - example: string adcp: + description: ADCP-specific metadata (from execute response) type: object properties: - mediaBuyId: + media_buy_id: type: string status: type: string - webhookUrl: + webhook_url: type: string additionalProperties: false performance: + description: Performance metrics (from reporting) type: object properties: impressions: @@ -6861,7 +15170,7 @@ components: type: number clicks: type: number - lastUpdated: + last_updated: type: string format: date-time pattern: >- @@ -6871,35 +15180,38 @@ 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: + TacticGetOutput: type: object properties: id: @@ -6931,6 +15243,30 @@ components: minimum: 0 maximum: 9007199254740991 example: 100 + targetingCount: + description: Count of targeting dimensions (channels, countries, bitmap profiles, brand agents) + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + bitmapTargetingProfiles: + description: Bitmap targeting profiles with targeting item keys for UI display + type: array + items: + $ref: '#/components/schemas/BitmapTargetingProfileResponseOutput' + example: [] + brandStoryAgents: + description: Brand story agents associated with this tactic + type: array + items: + $ref: '#/components/schemas/BrandStoryAgentSummaryOutput' + example: [] + brandStandardsAgents: + description: Brand standards agents associated with this tactic + type: array + items: + $ref: '#/components/schemas/BrandStandardsAgentSummaryOutput' + example: [] createdAt: type: string format: date-time diff --git a/platform-api.yaml b/platform-api.yaml index 5dabd8b..63793a0 100644 --- a/platform-api.yaml +++ b/platform-api.yaml @@ -1525,7 +1525,7 @@ paths: example: tool: brand_story_update arguments: - brandStoryId: example_id_123 + previousModelId: example_id_123 prompt: string schema: type: object @@ -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 @@ -2408,13 +2413,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /media-buy-get: + /creative-sync-sales-agents: post: - operationId: media_buy_get - summary: Get media buy - description: Get detailed information about a specific media buy. + operationId: creative_sync_sales_agents + summary: Sync creatives to sales agents + description: Synchronize creatives to connected sales agents (DSPs, publisher platforms). tags: - - Media Buys + - Creatives security: - bearerAuth: [] parameters: @@ -2428,23 +2433,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for media_buy_get + description: Request body for creative_sync_sales_agents required: true content: application/json: example: - tool: media_buy_get + tool: creative_sync_sales_agents arguments: - mediaBuyId: example_id_123 + creative_id: example_id_123 schema: type: object properties: tool: type: string enum: - - media_buy_get + - creative_sync_sales_agents arguments: - $ref: '#/components/schemas/GetMediaBuyInput' + $ref: '#/components/schemas/SyncSalesAgentsInput' required: - tool - arguments @@ -2461,7 +2466,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/MediaBuyGetOutput' + $ref: '#/components/schemas/SyncSalesAgentsOutput' required: - content - structuredContent @@ -2484,11 +2489,11 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /media-buy-list: + /media-buy-create: post: - operationId: media_buy_list - summary: List media buys - description: List all media buys with optional filtering by brand agent, campaign, or status. + operationId: media_buy_create + summary: Create media buy + description: Create a new media buy with budget, targeting, and creative specifications. tags: - Media Buys security: @@ -2504,22 +2509,29 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for media_buy_list + description: Request body for media_buy_create required: true content: application/json: example: - tool: media_buy_list - arguments: {} + tool: media_buy_create + arguments: + brand_manifest: null + start_time: null + end_time: string + tactic_id: 100 + agent_id: example_id_123 + name: Example Name + products: [] schema: type: object properties: tool: type: string enum: - - media_buy_list + - media_buy_create arguments: - $ref: '#/components/schemas/ListMediaBuysInput' + $ref: '#/components/schemas/MediaBuyCreateInput' required: - tool - arguments @@ -2536,7 +2548,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/MediaBuyList' + $ref: '#/components/schemas/MediaBuyGetOutput' required: - content - structuredContent @@ -2559,13 +2571,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /media-product-list: + /media-buy-update: post: - operationId: media_product_list - summary: List media products - description: List saved media products with optional filtering. + operationId: media_buy_update + summary: Update media buy + description: Update an existing media buy with new budget, targeting, or creative assignments. tags: - - Media Products + - Media Buys security: - bearerAuth: [] parameters: @@ -2579,22 +2591,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for media_product_list + description: Request body for media_buy_update required: true content: application/json: example: - tool: media_product_list - arguments: {} + tool: media_buy_update + arguments: + media_buy_id: example_id_123 schema: type: object properties: tool: type: string enum: - - media_product_list + - media_buy_update arguments: - $ref: '#/components/schemas/ListProductsInput' + $ref: '#/components/schemas/UpdateMediaBuyInput' required: - tool - arguments @@ -2611,7 +2624,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/MediaProductList' + $ref: '#/components/schemas/UpdateMediaBuyOutput' required: - content - structuredContent @@ -2634,15 +2647,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /agent-get: + /media-buy-delete: post: - operationId: agent_get - summary: Get agent - description: >- - Get detailed information about a specific agent (SALES or OUTCOME type). Type is automatically inferred from the - agent ID. + operationId: media_buy_delete + summary: Delete media buy + description: Delete a media buy and cancel any active placements. tags: - - Agents + - Media Buys security: - bearerAuth: [] parameters: @@ -2656,23 +2667,24 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for agent_get + description: Request body for media_buy_delete required: true content: application/json: example: - tool: agent_get + tool: media_buy_delete arguments: - agentId: example_id_123 + media_buy_id: example_id_123 + confirm: true schema: type: object properties: tool: type: string enum: - - agent_get + - media_buy_delete arguments: - $ref: '#/components/schemas/GetAgentInput' + $ref: '#/components/schemas/DeleteMediaBuyInput' required: - tool - arguments @@ -2689,7 +2701,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/AgentGet' + $ref: '#/components/schemas/DeleteMediaBuyOutput' required: - content - structuredContent @@ -2712,15 +2724,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /agent-list: + /media-buy-execute: post: - operationId: agent_list - summary: List agents - description: >- - List all registered agents with comprehensive filtering. Supports filtering by type (SALES/OUTCOME), status, - organization, relationship (SELF/SCOPE3/MARKETPLACE), and name. + operationId: media_buy_execute + summary: Execute media buy + description: Execute a media buy, sending it to the configured sales agents for placement. tags: - - Agents + - Media Buys security: - bearerAuth: [] parameters: @@ -2734,22 +2744,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for agent_list + description: Request body for media_buy_execute required: true content: application/json: example: - tool: agent_list - arguments: {} + tool: media_buy_execute + arguments: + media_buy_id: example_id_123 schema: type: object properties: tool: type: string enum: - - agent_list + - media_buy_execute arguments: - $ref: '#/components/schemas/ListAgentsInput' + $ref: '#/components/schemas/ExecuteMediaBuyInput' required: - tool - arguments @@ -2766,7 +2777,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/AgentList' + $ref: '#/components/schemas/ExecuteMediaBuyOutput' required: - content - structuredContent @@ -2789,13 +2800,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /tactic-get: + /media-buy-get: post: - operationId: tactic_get - summary: Get tactic - description: Get detailed information about a specific tactic. + operationId: media_buy_get + summary: Get media buy + description: Get detailed information about a specific media buy. tags: - - Tactics + - Media Buys security: - bearerAuth: [] parameters: @@ -2809,23 +2820,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for tactic_get + description: Request body for media_buy_get required: true content: application/json: example: - tool: tactic_get + tool: media_buy_get arguments: - tacticId: 100 + media_buy_id: example_id_123 schema: type: object properties: tool: type: string enum: - - tactic_get + - media_buy_get arguments: - $ref: '#/components/schemas/GetTacticInput' + $ref: '#/components/schemas/GetMediaBuyInput' required: - tool - arguments @@ -2842,7 +2853,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/TacticGetOutput' + $ref: '#/components/schemas/MediaBuyGetOutput' required: - content - structuredContent @@ -2865,13 +2876,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /tactic-list: + /media-buy-list: post: - operationId: tactic_list - summary: List tactics - description: List all tactics with optional filtering by brand agent or campaign. + operationId: media_buy_list + summary: List media buys + description: List all media buys with optional filtering by brand agent, campaign, or status. tags: - - Tactics + - Media Buys security: - bearerAuth: [] parameters: @@ -2885,12 +2896,12 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for tactic_list + description: Request body for media_buy_list required: true content: application/json: example: - tool: tactic_list + tool: media_buy_list arguments: {} schema: type: object @@ -2898,9 +2909,9 @@ paths: tool: type: string enum: - - tactic_list + - media_buy_list arguments: - $ref: '#/components/schemas/ListTacticsInput' + $ref: '#/components/schemas/ListMediaBuysInput' required: - tool - arguments @@ -2917,7 +2928,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/TacticList' + $ref: '#/components/schemas/ListMediaBuysOutput' required: - content - structuredContent @@ -2940,15 +2951,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /outcomes-agent-get-proposals: + /media-product-discover: post: - operationId: outcomes_agent_get_proposals - summary: Get proposals from outcome agents - description: >- - Request tactical proposals from outcome agents for a campaign. Outcome agents analyze the campaign brief and - budget to propose execution strategies. + operationId: media_product_discover + summary: Discover media products + description: Discover available media products from connected sales agents based on targeting criteria. tags: - - Outcome Agents + - Media Products security: - bearerAuth: [] parameters: @@ -2962,23 +2971,24 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for outcomes_agent_get_proposals + description: Request body for media_product_discover required: true content: application/json: example: - tool: outcomes_agent_get_proposals + tool: media_product_discover arguments: - campaignId: example_id_123 + brief: string + brandManifestUrl: https://example.com schema: type: object properties: tool: type: string enum: - - outcomes_agent_get_proposals + - media_product_discover arguments: - $ref: '#/components/schemas/OutcomesAgentGetProposalsInput' + $ref: '#/components/schemas/DiscoverProductsInput' required: - tool - arguments @@ -2995,7 +3005,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/OutcomesAgentGetProposals' + $ref: '#/components/schemas/MediaProductDiscover' required: - content - structuredContent @@ -3018,13 +3028,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /outcomes-agent-accept-proposal: + /media-product-list: post: - operationId: outcomes_agent_accept_proposal - summary: Accept outcome agent proposal - description: Accept a proposal from an outcome agent, creating a tactic and assigning it to the agent for management. + operationId: media_product_list + summary: List media products + description: List saved media products with optional filtering. tags: - - Outcome Agents + - Media Products security: - bearerAuth: [] parameters: @@ -3038,23 +3048,22 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for outcomes_agent_accept_proposal + description: Request body for media_product_list required: true content: application/json: example: - tool: outcomes_agent_accept_proposal - arguments: - proposalId: example_id_123 + tool: media_product_list + arguments: {} schema: type: object properties: tool: type: string enum: - - outcomes_agent_accept_proposal + - media_product_list arguments: - $ref: '#/components/schemas/OutcomesAgentAcceptProposalInput' + $ref: '#/components/schemas/ListProductsInput' required: - tool - arguments @@ -3071,7 +3080,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/OutcomesAgentAcceptProposal' + $ref: '#/components/schemas/MediaProductList' required: - content - structuredContent @@ -3094,13 +3103,15 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /outcomes-agent-list-tactics: + /agent-get: post: - operationId: outcomes_agent_list_tactics - summary: List tactics by outcome agent - description: List all tactics managed by a specific outcome agent. + operationId: agent_get + summary: Get agent + description: >- + Get detailed information about a specific agent (SALES or OUTCOME type). Type is automatically inferred from the + agent ID. tags: - - Outcome Agents + - Agents security: - bearerAuth: [] parameters: @@ -3114,23 +3125,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for outcomes_agent_list_tactics + description: Request body for agent_get required: true content: application/json: example: - tool: outcomes_agent_list_tactics + tool: agent_get arguments: - outcomeAgentId: example_id_123 + agentId: example_id_123 schema: type: object properties: tool: type: string enum: - - outcomes_agent_list_tactics + - agent_get arguments: - $ref: '#/components/schemas/OutcomesAgentListTacticsInput' + $ref: '#/components/schemas/GetAgentInput' required: - tool - arguments @@ -3147,7 +3158,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/OutcomesAgentListTactics' + $ref: '#/components/schemas/AgentGet' required: - content - structuredContent @@ -3170,15 +3181,15 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /service-token-create: + /agent-list: post: - operationId: service_token_create - summary: Create service token + operationId: agent_list + summary: List agents description: >- - Create a new service token for API authentication. Returns the full token which should be stored securely as it - cannot be retrieved later. + List all registered agents with comprehensive filtering. Supports filtering by type (SALES/OUTCOME), status, + organization, relationship (SELF/SCOPE3/MARKETPLACE), and name. tags: - - Service Tokens + - Agents security: - bearerAuth: [] parameters: @@ -3192,23 +3203,22 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for service_token_create + description: Request body for agent_list required: true content: application/json: example: - tool: service_token_create - arguments: - name: Example Name + tool: agent_list + arguments: {} schema: type: object properties: tool: type: string enum: - - service_token_create + - agent_list arguments: - $ref: '#/components/schemas/CreateServiceTokenInput' + $ref: '#/components/schemas/ListAgentsInput' required: - tool - arguments @@ -3225,7 +3235,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/CreateServiceTokenOutput' + $ref: '#/components/schemas/AgentList' required: - content - structuredContent @@ -3248,13 +3258,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /service-token-list: + /agent-account-list: post: - operationId: service_token_list - summary: List service tokens - description: List all service tokens for the authenticated customer. Secrets are never returned, only metadata. + operationId: agent_account_list + summary: List agent accounts + description: List all your accounts registered with a specific agent. Only SALES agents support accounts. tags: - - Service Tokens + - Agent Accounts security: - bearerAuth: [] parameters: @@ -3268,22 +3278,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for service_token_list + description: Request body for agent_account_list required: true content: application/json: example: - tool: service_token_list - arguments: {} + tool: agent_account_list + arguments: + agentId: example_id_123 schema: type: object properties: tool: type: string enum: - - service_token_list + - agent_account_list arguments: - $ref: '#/components/schemas/ListServiceTokensInput' + $ref: '#/components/schemas/ListAgentAccountsInput' required: - tool - arguments @@ -3300,7 +3311,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/ListServiceTokensOutput' + $ref: '#/components/schemas/AgentAccountList' required: - content - structuredContent @@ -3323,13 +3334,15 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /service-token-get: + /agent-account-register: post: - operationId: service_token_get - summary: Get service token - description: Get detailed information about a specific service token. The secret is never returned. + operationId: agent_account_register + summary: Register agent account + description: >- + Register your account with a SALES agent to access their products. Provide account credentials for + authentication with the agent. tags: - - Service Tokens + - Agent Accounts security: - bearerAuth: [] parameters: @@ -3343,23 +3356,24 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for service_token_get + description: Request body for agent_account_register required: true content: application/json: example: - tool: service_token_get + tool: agent_account_register arguments: - id: '1234567890' + agentId: example_id_123 + accountIdentifier: example_id_123 schema: type: object properties: tool: type: string enum: - - service_token_get + - agent_account_register arguments: - $ref: '#/components/schemas/GetServiceTokenInput' + $ref: '#/components/schemas/RegisterAgentAccountInput' required: - tool - arguments @@ -3376,7 +3390,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/GetServiceTokenOutput' + $ref: '#/components/schemas/AgentAccountRegister' required: - content - structuredContent @@ -3399,13 +3413,15 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /service-token-update: + /agent-account-unregister: post: - operationId: service_token_update - summary: Update service token - description: Update a service token. Only name, description, and expiration can be modified. + operationId: agent_account_unregister + summary: Unregister agent account + description: >- + Unregister your account from a SALES agent. This deactivates your access to the agent but does not affect other + customers. tags: - - Service Tokens + - Agent Accounts security: - bearerAuth: [] parameters: @@ -3419,23 +3435,24 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for service_token_update + description: Request body for agent_account_unregister required: true content: application/json: example: - tool: service_token_update + tool: agent_account_unregister arguments: - id: '1234567890' + agentId: example_id_123 + confirm: true schema: type: object properties: tool: type: string enum: - - service_token_update + - agent_account_unregister arguments: - $ref: '#/components/schemas/UpdateServiceTokenInput' + $ref: '#/components/schemas/UnregisterAgentAccountInput' required: - tool - arguments @@ -3452,7 +3469,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/UpdateServiceTokenOutput' + $ref: '#/components/schemas/AgentAccountUnregister' required: - content - structuredContent @@ -3475,13 +3492,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /service-token-archive: + /agent-account-update: post: - operationId: service_token_archive - summary: Archive service token - description: Archive (soft delete) a service token. This immediately invalidates the token for authentication. + operationId: agent_account_update + summary: Update agent account + description: Update authentication credentials for your account with a SALES agent. tags: - - Service Tokens + - Agent Accounts security: - bearerAuth: [] parameters: @@ -3495,23 +3512,25 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for service_token_archive + description: Request body for agent_account_update required: true content: application/json: example: - tool: service_token_archive + tool: agent_account_update arguments: - id: '1234567890' + agentId: example_id_123 + accountIdentifier: example_id_123 + auth: null schema: type: object properties: tool: type: string enum: - - service_token_archive + - agent_account_update arguments: - $ref: '#/components/schemas/ArchiveServiceTokenInput' + $ref: '#/components/schemas/UpdateAgentAccountInput' required: - tool - arguments @@ -3528,7 +3547,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/ArchiveServiceTokenOutput' + $ref: '#/components/schemas/AgentAccountUpdate' required: - content - structuredContent @@ -3551,13 +3570,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /customer-get: + /tactic-create: post: - operationId: customer_get - summary: Get customer info - description: Get detailed information about a customer from the core database. + operationId: tactic_create + summary: Create tactic + description: Create a new tactic defining how to achieve campaign objectives. tags: - - Customers + - Tactics security: - bearerAuth: [] parameters: @@ -3571,22 +3590,24 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for customer_get + description: Request body for tactic_create required: true content: application/json: example: - tool: customer_get - arguments: {} - schema: + tool: tactic_create + arguments: + campaignId: example_id_123 + name: Example Name + schema: type: object properties: tool: type: string enum: - - customer_get + - tactic_create arguments: - $ref: '#/components/schemas/GetCustomerInput' + $ref: '#/components/schemas/CreateTacticInput' required: - tool - arguments @@ -3603,7 +3624,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/GetCustomerOutput' + $ref: '#/components/schemas/TacticCreate' required: - content - structuredContent @@ -3626,13 +3647,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /customer-get-seats: + /tactic-update: post: - operationId: customer_get_seats - summary: Get customer seats - description: Get all seats associated with a customer from the core database. + operationId: tactic_update + summary: Update tactic + description: Update an existing tactic with new targeting, budget, or creative requirements. tags: - - Customers + - Tactics security: - bearerAuth: [] parameters: @@ -3646,22 +3667,23 @@ paths: MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. requestBody: - description: Request body for customer_get_seats + description: Request body for tactic_update required: true content: application/json: example: - tool: customer_get_seats - arguments: {} + tool: tactic_update + arguments: + tacticId: 100 schema: type: object properties: tool: type: string enum: - - customer_get_seats + - tactic_update arguments: - $ref: '#/components/schemas/GetCustomerSeatsInput' + $ref: '#/components/schemas/UpdateTacticInput' required: - tool - arguments @@ -3678,7 +3700,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/GetCustomerSeatsOutput' + $ref: '#/components/schemas/TacticGetOutput' required: - content - structuredContent @@ -3701,1270 +3723,15850 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' -components: - schemas: - BudgetRange: - description: Budget range for campaign planning - type: object - properties: - min: - description: Minimum budget available - example: 50000 - type: number - minimum: 0 - exclusiveMinimum: true - max: - description: Maximum budget available - example: 150000 - type: number - minimum: 0 - exclusiveMinimum: true - currency: - description: Currency for budget (ISO 4217 code) - example: USD - default: USD - type: string - minLength: 3 - maxLength: 3 - required: - - min - - max - ProposalCard: - description: Visual card data for rendering proposals in marketplace UI, following ADCP product card pattern - type: object - properties: - title: - description: Proposal name/title - example: Premium Display Campaign - type: string - description: - description: What the proposal offers - example: Target premium inventory at $2.50 vCPM with 85% viewability guarantee - type: string - image_carousel: - description: Optional array of image URLs showcasing the approach - example: - - https://example.com/chart1.png - - https://example.com/viz2.png - type: array - items: + /tactic-delete: + post: + operationId: tactic_delete + summary: Delete tactic + description: Delete a tactic and all associated media buys. + tags: + - Tactics + security: + - bearerAuth: [] + parameters: + - name: mcp-session-id + in: header + required: true + schema: type: string - format: uri - details: - description: Markdown-formatted detailed execution plan and specifications - example: |- - ## Execution Strategy - - We will target... - type: string - pricing_summary: - description: Pricing information for comparison - type: object - properties: - method: - description: Human-readable pricing method - example: 15% revenue share - type: string - budget_capacity: - description: Human-readable budget capacity - example: $50,000 maximum - type: string - estimated_cost: - description: Optional estimated cost calculation - example: $7,500 estimated fee - type: string - required: - - method - - budget_capacity - required: - - title - - description - - pricing_summary - ListAssetsInput: - type: object - properties: - brandAgentId: - description: Optional brand agent ID to filter assets - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - ListBrandAgentsInput: - description: Parameters for listing brand agents. Authentication is automatic. - type: object - properties: - where: - description: Prisma-style where clause for filtering agents - type: object - additionalProperties: {} - orderBy: - description: Prisma-style orderBy clause - type: object - additionalProperties: {} - take: - description: Number of records to return - example: 10 - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - skip: - description: Number of records to skip - example: 0 - type: integer - minimum: 0 - maximum: 9007199254740991 - distinct: - description: Fields to use for distinct selection - type: array - items: + format: uuid + description: >- + MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a + session ID, then reuse it for all subsequent tool requests in the same session. + requestBody: + description: Request body for tactic_delete + required: true + content: + application/json: + example: + tool: tactic_delete + arguments: + tacticId: 100 + confirm: true + schema: + type: object + properties: + tool: + type: string + enum: + - tactic_delete + arguments: + $ref: '#/components/schemas/DeleteTacticInput' + required: + - tool + - arguments + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/MCPContent' + structuredContent: + $ref: '#/components/schemas/TacticDelete' + required: + - content + - structuredContent + additionalProperties: false + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/BadRequest' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Unauthorized' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/InternalError' + /tactic-get: + post: + operationId: tactic_get + summary: Get tactic + description: Get detailed information about a specific tactic. + tags: + - Tactics + security: + - bearerAuth: [] + parameters: + - name: mcp-session-id + in: header + required: true + schema: type: string - example: [] - GetBrandAgentInput: - description: Parameters for retrieving a specific brand agent - type: object - properties: - brandAgentId: - description: The unique identifier for the brand agent - example: 123 - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - required: - - brandAgentId - CreateBrandAgentInput: - description: Parameters for creating a new brand agent - type: object - properties: - name: - description: Name of the brand agent (advertiser account) - example: Nike Global Campaigns - type: string - minLength: 1 - maxLength: 255 - description: - description: Optional description of the brand agent - example: Brand agent for Nike global advertising campaigns - type: string - maxLength: 1000 - manifestUrl: - description: URL to the brand manifest - example: https://example.com/brand-manifest - type: string - format: uri - countryCodes: - description: Country codes (ISO 3166-1 alpha-2) - example: - - US - - CA - - GB + format: uuid + description: >- + MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a + session ID, then reuse it for all subsequent tool requests in the same session. + requestBody: + description: Request body for tactic_get + required: true + content: + application/json: + example: + tool: tactic_get + arguments: + tacticId: 100 + schema: + type: object + properties: + tool: + type: string + enum: + - tactic_get + arguments: + $ref: '#/components/schemas/GetTacticInput' + required: + - tool + - arguments + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/MCPContent' + structuredContent: + $ref: '#/components/schemas/TacticGetOutput' + required: + - content + - structuredContent + additionalProperties: false + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/BadRequest' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Unauthorized' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/InternalError' + /tactic-list: + post: + operationId: tactic_list + summary: List tactics + description: List all tactics with optional filtering by brand agent or campaign. + tags: + - Tactics + security: + - bearerAuth: [] + parameters: + - name: mcp-session-id + in: header + required: true + schema: + type: string + format: uuid + description: >- + MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a + session ID, then reuse it for all subsequent tool requests in the same session. + requestBody: + description: Request body for tactic_list + required: true + content: + application/json: + example: + tool: tactic_list + arguments: {} + schema: + type: object + properties: + tool: + type: string + enum: + - tactic_list + arguments: + $ref: '#/components/schemas/ListTacticsInput' + required: + - tool + - arguments + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/MCPContent' + structuredContent: + $ref: '#/components/schemas/TacticList' + required: + - content + - structuredContent + additionalProperties: false + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/BadRequest' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Unauthorized' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/InternalError' + /tactic-link-campaign: + post: + operationId: tactic_link_campaign + summary: Link tactic to campaign + description: Link a tactic to a campaign. + tags: + - Tactics + security: + - bearerAuth: [] + parameters: + - name: mcp-session-id + in: header + required: true + schema: + type: string + format: uuid + description: >- + MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a + session ID, then reuse it for all subsequent tool requests in the same session. + requestBody: + description: Request body for tactic_link_campaign + required: true + content: + application/json: + example: + tool: tactic_link_campaign + arguments: + tacticId: 100 + campaignId: example_id_123 + schema: + type: object + properties: + tool: + type: string + enum: + - tactic_link_campaign + arguments: + $ref: '#/components/schemas/LinkCampaignToTacticInput' + required: + - tool + - arguments + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/MCPContent' + structuredContent: + $ref: '#/components/schemas/TacticLinkCampaign' + required: + - content + - structuredContent + additionalProperties: false + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/BadRequest' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Unauthorized' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/InternalError' + /tactic-unlink-campaign: + post: + operationId: tactic_unlink_campaign + summary: Unlink tactic from campaign + description: Unlink a tactic from a campaign. + tags: + - Tactics + security: + - bearerAuth: [] + parameters: + - name: mcp-session-id + in: header + required: true + schema: + type: string + format: uuid + description: >- + MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a + session ID, then reuse it for all subsequent tool requests in the same session. + requestBody: + description: Request body for tactic_unlink_campaign + required: true + content: + application/json: + example: + tool: tactic_unlink_campaign + arguments: + tacticId: 100 + campaignId: example_id_123 + schema: + type: object + properties: + tool: + type: string + enum: + - tactic_unlink_campaign + arguments: + $ref: '#/components/schemas/UnlinkCampaignFromTacticInput' + required: + - tool + - arguments + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/MCPContent' + structuredContent: + $ref: '#/components/schemas/TacticUnlinkCampaign' + required: + - content + - structuredContent + additionalProperties: false + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/BadRequest' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Unauthorized' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/InternalError' + /outcomes-agent-get-proposals: + post: + operationId: outcomes_agent_get_proposals + summary: Get proposals from outcome agents + description: >- + Request tactical proposals from outcome agents for a campaign. Outcome agents analyze the campaign brief and + budget to propose execution strategies. + tags: + - Outcome Agents + security: + - bearerAuth: [] + parameters: + - name: mcp-session-id + in: header + required: true + schema: + type: string + format: uuid + description: >- + MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a + session ID, then reuse it for all subsequent tool requests in the same session. + requestBody: + description: Request body for outcomes_agent_get_proposals + required: true + content: + application/json: + example: + tool: outcomes_agent_get_proposals + arguments: + campaignId: example_id_123 + schema: + type: object + properties: + tool: + type: string + enum: + - outcomes_agent_get_proposals + arguments: + $ref: '#/components/schemas/OutcomesAgentGetProposalsInput' + required: + - tool + - arguments + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/MCPContent' + structuredContent: + $ref: '#/components/schemas/OutcomesAgentGetProposals' + required: + - content + - structuredContent + additionalProperties: false + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/BadRequest' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Unauthorized' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/InternalError' + /outcomes-agent-accept-proposal: + post: + operationId: outcomes_agent_accept_proposal + summary: Accept outcome agent proposal + description: Accept a proposal from an outcome agent, creating a tactic and assigning it to the agent for management. + tags: + - Outcome Agents + security: + - bearerAuth: [] + parameters: + - name: mcp-session-id + in: header + required: true + schema: + type: string + format: uuid + description: >- + MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a + session ID, then reuse it for all subsequent tool requests in the same session. + requestBody: + description: Request body for outcomes_agent_accept_proposal + required: true + content: + application/json: + example: + tool: outcomes_agent_accept_proposal + arguments: + proposalId: example_id_123 + schema: + type: object + properties: + tool: + type: string + enum: + - outcomes_agent_accept_proposal + arguments: + $ref: '#/components/schemas/OutcomesAgentAcceptProposalInput' + required: + - tool + - arguments + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/MCPContent' + structuredContent: + $ref: '#/components/schemas/OutcomesAgentAcceptProposal' + required: + - content + - structuredContent + additionalProperties: false + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/BadRequest' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Unauthorized' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/InternalError' + /outcomes-agent-list-tactics: + post: + operationId: outcomes_agent_list_tactics + summary: List tactics by outcome agent + description: List all tactics managed by a specific outcome agent. + tags: + - Outcome Agents + security: + - bearerAuth: [] + parameters: + - name: mcp-session-id + in: header + required: true + schema: + type: string + format: uuid + description: >- + MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a + session ID, then reuse it for all subsequent tool requests in the same session. + requestBody: + description: Request body for outcomes_agent_list_tactics + required: true + content: + application/json: + example: + tool: outcomes_agent_list_tactics + arguments: + outcomeAgentId: example_id_123 + schema: + type: object + properties: + tool: + type: string + enum: + - outcomes_agent_list_tactics + arguments: + $ref: '#/components/schemas/OutcomesAgentListTacticsInput' + required: + - tool + - arguments + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/MCPContent' + structuredContent: + $ref: '#/components/schemas/OutcomesAgentListTactics' + required: + - content + - structuredContent + additionalProperties: false + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/BadRequest' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Unauthorized' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/InternalError' + /service-token-create: + post: + operationId: service_token_create + summary: Create service token + description: >- + Create a new service token for API authentication. Returns the full token which should be stored securely as it + cannot be retrieved later. + tags: + - Service Tokens + security: + - bearerAuth: [] + parameters: + - name: mcp-session-id + in: header + required: true + schema: + type: string + format: uuid + description: >- + MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a + session ID, then reuse it for all subsequent tool requests in the same session. + requestBody: + description: Request body for service_token_create + required: true + content: + application/json: + example: + tool: service_token_create + arguments: + name: Example Name + schema: + type: object + properties: + tool: + type: string + enum: + - service_token_create + arguments: + $ref: '#/components/schemas/CreateServiceTokenInput' + required: + - tool + - arguments + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/MCPContent' + structuredContent: + $ref: '#/components/schemas/CreateServiceTokenOutput' + required: + - content + - structuredContent + additionalProperties: false + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/BadRequest' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Unauthorized' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/InternalError' + /service-token-list: + post: + operationId: service_token_list + summary: List service tokens + description: List all service tokens for the authenticated customer. Secrets are never returned, only metadata. + tags: + - Service Tokens + security: + - bearerAuth: [] + parameters: + - name: mcp-session-id + in: header + required: true + schema: + type: string + format: uuid + description: >- + MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a + session ID, then reuse it for all subsequent tool requests in the same session. + requestBody: + description: Request body for service_token_list + required: true + content: + application/json: + example: + tool: service_token_list + arguments: {} + schema: + type: object + properties: + tool: + type: string + enum: + - service_token_list + arguments: + $ref: '#/components/schemas/ListServiceTokensInput' + required: + - tool + - arguments + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/MCPContent' + structuredContent: + $ref: '#/components/schemas/ListServiceTokensOutput' + required: + - content + - structuredContent + additionalProperties: false + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/BadRequest' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Unauthorized' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/InternalError' + /service-token-get: + post: + operationId: service_token_get + summary: Get service token + description: Get detailed information about a specific service token. The secret is never returned. + tags: + - Service Tokens + security: + - bearerAuth: [] + parameters: + - name: mcp-session-id + in: header + required: true + schema: + type: string + format: uuid + description: >- + MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a + session ID, then reuse it for all subsequent tool requests in the same session. + requestBody: + description: Request body for service_token_get + required: true + content: + application/json: + example: + tool: service_token_get + arguments: + id: '1234567890' + schema: + type: object + properties: + tool: + type: string + enum: + - service_token_get + arguments: + $ref: '#/components/schemas/GetServiceTokenInput' + required: + - tool + - arguments + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/MCPContent' + structuredContent: + $ref: '#/components/schemas/GetServiceTokenOutput' + required: + - content + - structuredContent + additionalProperties: false + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/BadRequest' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Unauthorized' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/InternalError' + /service-token-update: + post: + operationId: service_token_update + summary: Update service token + description: Update a service token. Only name, description, and expiration can be modified. + tags: + - Service Tokens + security: + - bearerAuth: [] + parameters: + - name: mcp-session-id + in: header + required: true + schema: + type: string + format: uuid + description: >- + MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a + session ID, then reuse it for all subsequent tool requests in the same session. + requestBody: + description: Request body for service_token_update + required: true + content: + application/json: + example: + tool: service_token_update + arguments: + id: '1234567890' + schema: + type: object + properties: + tool: + type: string + enum: + - service_token_update + arguments: + $ref: '#/components/schemas/UpdateServiceTokenInput' + required: + - tool + - arguments + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/MCPContent' + structuredContent: + $ref: '#/components/schemas/UpdateServiceTokenOutput' + required: + - content + - structuredContent + additionalProperties: false + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/BadRequest' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Unauthorized' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/InternalError' + /service-token-archive: + post: + operationId: service_token_archive + summary: Archive service token + description: Archive (soft delete) a service token. This immediately invalidates the token for authentication. + tags: + - Service Tokens + security: + - bearerAuth: [] + parameters: + - name: mcp-session-id + in: header + required: true + schema: + type: string + format: uuid + description: >- + MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a + session ID, then reuse it for all subsequent tool requests in the same session. + requestBody: + description: Request body for service_token_archive + required: true + content: + application/json: + example: + tool: service_token_archive + arguments: + id: '1234567890' + schema: + type: object + properties: + tool: + type: string + enum: + - service_token_archive + arguments: + $ref: '#/components/schemas/ArchiveServiceTokenInput' + required: + - tool + - arguments + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/MCPContent' + structuredContent: + $ref: '#/components/schemas/ArchiveServiceTokenOutput' + required: + - content + - structuredContent + additionalProperties: false + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/BadRequest' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Unauthorized' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/InternalError' + /customer-get: + post: + operationId: customer_get + summary: Get customer info + description: Get detailed information about a customer from the core database. + tags: + - Customers + security: + - bearerAuth: [] + parameters: + - name: mcp-session-id + in: header + required: true + schema: + type: string + format: uuid + description: >- + MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a + session ID, then reuse it for all subsequent tool requests in the same session. + requestBody: + description: Request body for customer_get + required: true + content: + application/json: + example: + tool: customer_get + arguments: {} + schema: + type: object + properties: + tool: + type: string + enum: + - customer_get + arguments: + $ref: '#/components/schemas/GetCustomerInput' + required: + - tool + - arguments + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/MCPContent' + structuredContent: + $ref: '#/components/schemas/GetCustomerOutput' + required: + - content + - structuredContent + additionalProperties: false + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/BadRequest' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Unauthorized' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/InternalError' + /customer-get-seats: + post: + operationId: customer_get_seats + summary: Get customer seats + description: Get all seats associated with a customer from the core database. + tags: + - Customers + security: + - bearerAuth: [] + parameters: + - name: mcp-session-id + in: header + required: true + schema: + type: string + format: uuid + description: >- + MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a + session ID, then reuse it for all subsequent tool requests in the same session. + requestBody: + description: Request body for customer_get_seats + required: true + content: + application/json: + example: + tool: customer_get_seats + arguments: {} + schema: + type: object + properties: + tool: + type: string + enum: + - customer_get_seats + arguments: + $ref: '#/components/schemas/GetCustomerSeatsInput' + required: + - tool + - arguments + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/MCPContent' + structuredContent: + $ref: '#/components/schemas/GetCustomerSeatsOutput' + required: + - content + - structuredContent + additionalProperties: false + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/BadRequest' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Unauthorized' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/InternalError' + /signal-get: + post: + operationId: signal_get + summary: Get signal details + description: Get detailed information about a specific signal including its access configurations and regions. + tags: + - Signals + security: + - bearerAuth: [] + parameters: + - name: mcp-session-id + in: header + required: true + schema: + type: string + format: uuid + description: >- + MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a + session ID, then reuse it for all subsequent tool requests in the same session. + requestBody: + description: Request body for signal_get + required: true + content: + application/json: + example: + tool: signal_get + arguments: + signalId: example_id_123 + schema: + type: object + properties: + tool: + type: string + enum: + - signal_get + arguments: + $ref: '#/components/schemas/GetSignalInput' + required: + - tool + - arguments + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/MCPContent' + structuredContent: + $ref: '#/components/schemas/SignalGet' + required: + - content + - structuredContent + additionalProperties: false + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/BadRequest' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Unauthorized' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/InternalError' + /signal-list: + post: + operationId: signal_list + summary: List signals + description: List signals with optional filtering by agent, scope, live status, and account. + tags: + - Signals + security: + - bearerAuth: [] + parameters: + - name: mcp-session-id + in: header + required: true + schema: + type: string + format: uuid + description: >- + MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a + session ID, then reuse it for all subsequent tool requests in the same session. + requestBody: + description: Request body for signal_list + required: true + content: + application/json: + example: + tool: signal_list + arguments: {} + schema: + type: object + properties: + tool: + type: string + enum: + - signal_list + arguments: + $ref: '#/components/schemas/ListSignalsInput' + required: + - tool + - arguments + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/MCPContent' + structuredContent: + $ref: '#/components/schemas/SignalList' + required: + - content + - structuredContent + additionalProperties: false + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/BadRequest' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Unauthorized' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/InternalError' + /signal-discover: + post: + operationId: signal_discover + summary: Discover signals + description: >- + Discover available signals in the marketplace. Returns signals that are accessible to the buyer based on public + availability or proprietary access. + tags: + - Signals + security: + - bearerAuth: [] + parameters: + - name: mcp-session-id + in: header + required: true + schema: + type: string + format: uuid + description: >- + MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a + session ID, then reuse it for all subsequent tool requests in the same session. + requestBody: + description: Request body for signal_discover + required: true + content: + application/json: + example: + tool: signal_discover + arguments: {} + schema: + type: object + properties: + tool: + type: string + enum: + - signal_discover + arguments: + $ref: '#/components/schemas/DiscoverSignalsInput' + required: + - tool + - arguments + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + content: + type: array + items: + $ref: '#/components/schemas/MCPContent' + structuredContent: + $ref: '#/components/schemas/SignalDiscover' + required: + - content + - structuredContent + additionalProperties: false + '400': + description: Bad request + content: + application/json: + schema: + $ref: '#/components/schemas/BadRequest' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/Unauthorized' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/InternalError' +components: + schemas: + AvailableBrandAgent: + type: object + properties: + id: + type: number + example: 100 + name: + type: string + example: Example Name + required: + - id + - name + BitmapTargetingProfile: + type: object + properties: + dimensionName: + description: >- + Targeting dimension name (e.g., country, region, city, device_type, browser, operating_system, language, + day_part) + type: string + example: Example Name + anyOf: + description: Include targeting item IDs + default: [] + type: array + items: + anyOf: + - type: integer + format: int64 + - type: string + - type: number + noneOf: + description: Exclude targeting item IDs + default: [] + type: array + items: + anyOf: + - type: integer + format: int64 + - type: string + - type: number + required: + - dimensionName + BudgetRange: + description: Budget range for campaign planning + type: object + properties: + min: + description: Minimum budget available + example: 50000 + type: number + minimum: 0 + exclusiveMinimum: true + max: + description: Maximum budget available + example: 150000 + type: number + minimum: 0 + exclusiveMinimum: true + currency: + description: Currency for budget (ISO 4217 code) + example: USD + default: USD + type: string + minLength: 3 + maxLength: 3 + required: + - min + - max + ProposalCard: + description: Visual card data for rendering proposals in marketplace UI, following ADCP product card pattern + type: object + properties: + title: + description: Proposal name/title + example: Premium Display Campaign + type: string + description: + description: What the proposal offers + example: Target premium inventory at $2.50 vCPM with 85% viewability guarantee + type: string + image_carousel: + description: Optional array of image URLs showcasing the approach + example: + - https://example.com/chart1.png + - https://example.com/viz2.png + type: array + items: + type: string + format: uri + details: + description: Markdown-formatted detailed execution plan and specifications + example: |- + ## Execution Strategy + + We will target... + type: string + pricing_summary: + description: Pricing information for comparison + type: object + properties: + method: + description: Human-readable pricing method + example: 15% revenue share + type: string + budget_capacity: + description: Human-readable budget capacity + example: $50,000 maximum + type: string + estimated_cost: + description: Optional estimated cost calculation + example: $7,500 estimated fee + type: string + required: + - method + - budget_capacity + required: + - title + - description + - pricing_summary + BitmapTargetingProfileResponse: + type: object + properties: + dimensionName: + description: Targeting dimension name (e.g., country, region, city, device_type) + type: string + example: Example Name + anyOf: + description: Included targeting item keys (e.g., "US", "MX") + type: array + items: + type: string + example: [] + noneOf: + description: Excluded targeting item keys + type: array + items: + type: string + example: [] + required: + - dimensionName + - anyOf + - noneOf + BrandStoryAgentSummary: + type: object + properties: + id: + type: number + example: 100 + name: + type: string + example: Example Name + required: + - id + - name + BrandStandardsAgentSummary: + type: object + properties: + id: + type: number + example: 100 + name: + type: string + example: Example Name + required: + - id + - name + ListAssetsInput: + type: object + properties: + brandAgentId: + description: Optional brand agent ID to filter assets + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + ListBrandAgentsInput: + description: Parameters for listing brand agents. Authentication is automatic. + type: object + properties: + where: + description: Prisma-style where clause for filtering agents + type: object + additionalProperties: {} + orderBy: + description: Prisma-style orderBy clause + type: object + additionalProperties: {} + take: + description: Number of records to return + example: 10 + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + skip: + description: Number of records to skip + example: 0 + type: integer + minimum: 0 + maximum: 9007199254740991 + distinct: + description: Fields to use for distinct selection + type: array + items: + type: string + example: [] + GetBrandAgentInput: + description: Parameters for retrieving a specific brand agent + type: object + properties: + brandAgentId: + description: The unique identifier for the brand agent + example: 123 + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + required: + - brandAgentId + CreateBrandAgentInput: + description: Parameters for creating a new brand agent + type: object + properties: + name: + description: Name of the brand agent (advertiser account) + example: Nike Global Campaigns + type: string + minLength: 1 + maxLength: 255 + description: + description: Optional description of the brand agent + example: Brand agent for Nike global advertising campaigns + type: string + maxLength: 1000 + manifestUrl: + description: URL to the brand manifest + example: https://example.com/brand-manifest + type: string + format: uri + countryCodes: + description: Country codes (ISO 3166-1 alpha-2) + example: + - US + - CA + - GB + type: array + items: + type: string + minLength: 2 + maxLength: 2 + required: + - name + UpdateBrandAgentInput: + description: Parameters for updating a brand agent + type: object + properties: + brandAgentId: + description: The unique identifier for the brand agent + example: 123 + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + name: + description: Updated name of the brand agent + type: string + minLength: 1 + maxLength: 255 + example: Example Name + description: + description: Updated description + type: string + maxLength: 1000 + example: string + manifestUrl: + description: Updated URL to the brand manifest + example: https://example.com/brand-manifest + type: string + format: uri + countryCodes: + description: Updated country codes + type: array + items: + type: string + minLength: 2 + maxLength: 2 + example: [] + required: + - brandAgentId + DeleteBrandAgentInput: + description: Parameters for deleting a brand agent + type: object + properties: + brandAgentId: + description: The unique identifier for the brand agent to delete + example: 123 + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + required: + - brandAgentId + CreateBrandStandardInput: + type: object + properties: + brandAgentId: + description: Brand agent ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + name: + description: Standard name + type: string + minLength: 1 + maxLength: 255 + example: Example Name + description: + description: Standard description + type: string + example: string + prompt: + description: Brand standards prompt + type: string + minLength: 1 + example: string + isPrimary: + description: Whether this is the primary standard + type: boolean + example: true + countries: + description: Country codes + type: array + items: + type: string + example: [] + channels: + description: Channel types + type: array + items: + type: string + enum: + - ctv + - video + - display + - app + - social + example: [] + brands: + description: Brand names + type: array + items: + type: string + example: [] + required: + - brandAgentId + - prompt + DeleteBrandStandardInput: + type: object + properties: + brandStandardId: + description: Brand standard ID + type: string + example: example_id_123 + required: + - brandStandardId + ListBrandStandardsInput: + type: object + properties: + brandAgentId: + description: Optional brand agent ID to filter brand standards by + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + where: + description: Prisma-style where clause for filtering standards + type: object + additionalProperties: {} + orderBy: + description: Prisma-style orderBy clause + type: object + additionalProperties: {} + take: + description: Number of records to return + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + skip: + description: Number of records to skip + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + distinct: + description: Fields to use for distinct selection + type: array + items: + type: string + example: [] + CreateBrandStoryInput: + type: object + properties: + brandAgentId: + description: Brand agent ID (bigint or string) + anyOf: + - type: integer + format: int64 + - type: string + name: + description: Story name + type: string + minLength: 1 + maxLength: 255 + example: Example Name + prompt: + description: Brand story prompt + type: string + example: string + brands: + description: Brand names + type: array + items: + type: string + example: [] + languages: + description: Language codes (use language_list tool to see available options) + type: array + items: + type: string + example: [] + required: + - brandAgentId + - name + - languages + UpdateBrandStoryInput: + type: object + properties: + previousModelId: + description: ID of the model to update + type: string + example: example_id_123 + name: + description: Story name + type: string + example: Example Name + prompt: + description: Updated brand story prompt + type: string + minLength: 1 + example: string + languages: + description: Language codes - if provided, replaces existing languages (use language_list tool to see available options) + type: array + items: + type: string + example: [] + isPrimary: + description: If true, marks the new model as primary, otherwise inherits from previous model + type: boolean + example: true + required: + - previousModelId + - prompt + DeleteBrandStoryInput: + type: object + properties: + brandStoryId: + description: Brand story ID + type: string + example: example_id_123 + required: + - brandStoryId + ListBrandStoriesInput: + type: object + properties: + brandAgentId: + description: Optional brand agent ID to filter brand stories by + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + where: + description: Filtering criteria + type: object + additionalProperties: {} + orderBy: + description: Ordering criteria + type: object + additionalProperties: {} + take: + description: Number of records to return + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + skip: + description: Number of records to skip + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + distinct: + description: Fields to use for distinct selection + type: array + items: + type: string + example: [] + ListCampaignsInput: + description: Parameters for listing campaigns + type: object + properties: + brandAgentId: + description: Filter by brand agent ID + example: 123 + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + status: + description: Filter by campaign status + type: string + enum: + - ACTIVE + - PAUSED + - ARCHIVED + - DRAFT + example: ACTIVE + limit: + description: Number of results to return + example: 50 + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + offset: + description: Number of results to skip for pagination + example: 0 + type: integer + minimum: 0 + maximum: 9007199254740991 + CreateCampaignInput: + description: Parameters for creating a new campaign + type: object + properties: + brandAgentId: + description: Brand agent ID that will own this campaign + example: 123 + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + name: + description: Optional name for the campaign (auto-generated if not provided) + example: Summer 2025 Tech Campaign + type: string + minLength: 1 + maxLength: 255 + prompt: + description: >- + Natural language description of campaign requirements. The backend will parse this to extract targeting, + budget, and creative requirements. + example: Create a video campaign targeting tech enthusiasts aged 25-45 with $50k budget + type: string + minLength: 10 + budget: + description: Budget configuration for the campaign + type: object + properties: + total: + type: number + minimum: 0 + exclusiveMinimum: true + currency: + default: USD + type: string + minLength: 3 + maxLength: 3 + dailyCap: + type: number + minimum: 0 + exclusiveMinimum: true + pacing: + type: string + enum: + - EVEN + - ASAP + - FRONTLOADED + required: + - total + startDate: + description: Campaign start date (ISO 8601 format) + example: '2025-01-15T00:00:00Z' + 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))$ + endDate: + description: Campaign end date (ISO 8601 format) + example: '2025-03-31T23:59:59Z' + 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))$ + scoringWeights: + description: Scoring weights for campaign optimization + type: object + properties: + affinity: + type: number + minimum: 0 + maximum: 1 + outcome: + type: number + minimum: 0 + maximum: 1 + quality: + type: number + minimum: 0 + maximum: 1 + outcomeScoreWindowDays: + description: Number of days for outcome measurement window + example: 30 + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + status: + description: Initial campaign status + type: string + enum: + - ACTIVE + - PAUSED + - ARCHIVED + - DRAFT + example: ACTIVE + required: + - brandAgentId + - prompt + GetCampaignInput: + description: Parameters for retrieving a specific campaign + type: object + properties: + campaignId: + description: The unique identifier for the campaign + example: cmp_987654321 + type: string + minLength: 1 + required: + - campaignId + UpdateCampaignInput: + description: Parameters for updating a campaign + type: object + properties: + campaignId: + description: The unique identifier for the campaign + example: cmp_987654321 + type: string + minLength: 1 + name: + description: Updated campaign name + type: string + minLength: 1 + maxLength: 255 + example: Example Name + prompt: + description: Updated campaign prompt + type: string + minLength: 10 + example: string + budget: + description: Updated budget configuration + type: object + properties: + total: + type: number + minimum: 0 + exclusiveMinimum: true + currency: + default: USD + type: string + minLength: 3 + maxLength: 3 + dailyCap: + type: number + minimum: 0 + exclusiveMinimum: true + pacing: + type: string + enum: + - EVEN + - ASAP + - FRONTLOADED + startDate: + description: Updated start date + 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 + endDate: + description: Updated end date + 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 + scoringWeights: + description: Updated scoring weights + type: object + properties: + affinity: + type: number + minimum: 0 + maximum: 1 + outcome: + type: number + minimum: 0 + maximum: 1 + quality: + type: number + minimum: 0 + maximum: 1 + outcomeScoreWindowDays: + description: Updated outcome score window days + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + status: + description: Updated campaign status + type: string + enum: + - ACTIVE + - PAUSED + - ARCHIVED + - DRAFT + example: ACTIVE + required: + - campaignId + DeleteCampaignInput: + description: Parameters for deleting a campaign + type: object + properties: + campaignId: + description: The unique identifier for the campaign to delete + example: cmp_987654321 + type: string + minLength: 1 + hardDelete: + description: 'If true, permanently delete the campaign. Default: false (soft delete/archive)' + type: boolean + example: true + required: + - campaignId + GetCampaignSummaryInput: + type: object + properties: + campaignId: + description: Campaign ID + type: string + example: example_id_123 + required: + - campaignId + ListCampaignTacticsInput: + type: object + properties: + campaignId: + description: Campaign ID + type: string + example: example_id_123 + required: + - campaignId + ValidateBriefInput: + type: object + properties: + brief: + description: Campaign brief text + type: string + minLength: 10 + example: string + required: + - brief + ListChannelsInput: + type: object + properties: {} + GetCustomerInput: + type: object + properties: + customerId: + description: >- + The unique identifier of the customer to retrieve. If not provided, uses the authenticated users customer + ID. + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + GetCustomerSeatsInput: + type: object + properties: + customerId: + description: >- + The unique identifier of the customer whose seats to retrieve. If not provided, uses the authenticated users + customer ID. + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + AssignCreativeInput: + type: object + properties: + creative_id: + type: string + example: example_id_123 + campaign_id: + type: string + example: example_id_123 + required: + - creative_id + - campaign_id + CreativeCreateInput: + type: object + properties: + creative_id: + type: string + example: example_id_123 + name: + type: string + example: Example Name + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + example: [] + tags: + nullable: true + type: array + items: + type: string + example: [] + approved: + nullable: true + type: boolean + example: true + weight: + nullable: true + type: number + example: 100 + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + example: [] + brand_agent_id: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + organization_id: + type: string + example: example_id_123 + campaign_id: + type: string + example: example_id_123 + required: + - creative_id + - name + - format_id + - assets + - brand_agent_id + CreativeUpdateInput: + type: object + properties: + creative_id: + type: string + example: example_id_123 + name: + type: string + example: Example Name + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + example: [] + tags: + nullable: true + type: array + items: + type: string + example: [] + approved: + nullable: true + type: boolean + example: true + weight: + nullable: true + type: number + example: 100 + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + example: [] + status: + type: string + enum: + - PENDING + - APPROVED + - AUTO_APPROVED + - CHANGES_REQUESTED + - REJECTED + example: PENDING + required: + - creative_id + DeleteCreativeInput: + type: object + properties: + creative_id: + type: string + example: example_id_123 + required: + - creative_id + GetCreativeInput: + type: object + properties: + creative_id: + type: string + example: example_id_123 + required: + - creative_id + ListCreativesInput: + type: object + properties: + campaign_id: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + brand_agent_id: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + status: + type: string + enum: + - ACTIVE + - PAUSED + - ARCHIVED + - DRAFT + example: ACTIVE + take: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + skip: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + SyncSalesAgentsInput: + type: object + properties: + creative_id: + type: string + example: example_id_123 + debug: + description: Enable debug mode to return full ADCP request/response logs for troubleshooting + type: boolean + example: true + required: + - creative_id + ListCountriesInput: + type: object + properties: {} + ListLanguagesInput: + type: object + properties: {} + MediaBuyCreateInput: + type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + po_number: + nullable: true + type: string + example: string + start_time: + anyOf: + - type: string + enum: + - asap + - type: string + end_time: + type: string + example: string + reporting_webhook: + nullable: true + allOf: + - type: object + properties: + url: + type: string + token: + nullable: true + type: string + authentication: + type: object + properties: + schemes: + type: array + items: + anyOf: + - anyOf: + - type: string + enum: + - Bearer + - type: string + enum: + - HMAC-SHA256 + minItems: 1 + maxItems: 1 + credentials: + type: string + required: + - schemes + - credentials + required: + - url + - authentication + - type: object + properties: + reporting_frequency: + anyOf: + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - monthly + requested_metrics: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - impressions + - type: string + enum: + - spend + - type: string + enum: + - clicks + - type: string + enum: + - ctr + - type: string + enum: + - video_completions + - type: string + enum: + - completion_rate + - type: string + enum: + - conversions + - type: string + enum: + - viewability + - type: string + enum: + - engagement_rate + required: + - reporting_frequency + context: + nullable: true + type: object + additionalProperties: {} + ext: + nullable: true + type: object + additionalProperties: {} + tactic_id: + description: Internal tactic ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + 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: + product_id: + type: string + format_ids: + nullable: true + type: array + items: + anyOf: + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + - type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + minItems: 2 + budget: + type: number + pacing: + nullable: true + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + pricing_option_id: + type: string + bid_price: + nullable: true + type: number + targeting_overlay: + nullable: true + type: object + properties: + geo_country_any_of: + nullable: true + type: array + items: + type: string + geo_region_any_of: + nullable: true + type: array + items: + type: string + geo_metro_any_of: + nullable: true + type: array + items: + type: string + geo_postal_code_any_of: + nullable: true + type: array + items: + type: string + axe_include_segment: + nullable: true + type: string + axe_exclude_segment: + nullable: true + type: string + frequency_cap: + nullable: true + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + creative_ids: + nullable: true + type: array + items: + type: string + creatives: + nullable: true + type: array + items: + type: object + properties: + creative_id: + type: string + name: + type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - creative_id + - name + - format_id + - assets + ext: + nullable: true + type: object + additionalProperties: {} + display_order: + description: Display order in UI (internal only) + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + required: + - product_id + - budget + - pricing_option_id + example: [] + creatives: + description: Optional inline creatives + type: array + items: + type: object + properties: + creative_id: + type: string + name: + type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - creative_id + - name + - format_id + - assets + example: [] + required: + - brand_manifest + - start_time + - end_time + - tactic_id + - agent_id + - name + - products + UpdateMediaBuyInput: + type: object + properties: + media_buy_id: + type: string + minLength: 1 + example: example_id_123 + name: + type: string + minLength: 1 + maxLength: 255 + example: Example Name + description: + type: string + maxLength: 2000 + example: string + status: + type: string + enum: + - DRAFT + - PENDING_APPROVAL + - ACTIVE + - PAUSED + - COMPLETED + - FAILED + - REJECTED + - ARCHIVED + example: DRAFT + creative_ids: + maxItems: 100 + type: array + items: + type: string + minLength: 1 + maxLength: 255 + example: [] + products: + maxItems: 100 + type: array + items: + type: object + properties: + product_id: + type: string + budget: + type: number + pacing: + nullable: true + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + bid_price: + nullable: true + type: number + pricing_option_id: + type: string + required: + - product_id + example: [] + packages: + maxItems: 100 + type: array + items: + type: object + properties: + package_id: + type: string + budget: + nullable: true + type: number + pacing: + nullable: true + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + bid_price: + nullable: true + type: number + creative_ids: + maxItems: 100 + type: array + items: + type: string + minLength: 1 + maxLength: 255 + required: + - package_id + example: [] + debug: + description: Enable debug mode to return full ADCP request/response logs for troubleshooting + type: boolean + example: true + required: + - media_buy_id + DeleteMediaBuyInput: + type: object + properties: + media_buy_id: + type: string + example: example_id_123 + confirm: + type: boolean + example: true + required: + - media_buy_id + - confirm + ExecuteMediaBuyInput: + type: object + properties: + media_buy_id: + type: string + example: example_id_123 + debug: + description: Enable debug mode to return full ADCP request/response logs for troubleshooting + type: boolean + example: true + required: + - media_buy_id + 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 + - ARCHIVED + 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 + budgetRange: + allOf: + - $ref: '#/components/schemas/BudgetRange' + startDate: + description: Campaign start date (ISO 8601) + example: '2025-01-01T00:00:00Z' + 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))$ + endDate: + description: Campaign end date (ISO 8601) + example: '2025-01-31T23:59:59Z' + 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))$ + channels: + description: Advertising channels + example: + - display + - video + type: array + items: + type: string + enum: + - ctv + - video + - display + - app + - social + countries: + description: ISO 3166-1 alpha-2 country codes + example: + - US + - CA + type: array + items: + type: string + brief: + description: Campaign brief text + type: string + example: string + required: + - campaignId + OutcomesAgentAcceptProposalInput: + type: object + properties: + proposalId: + description: Database ID of the proposal to accept + example: '123' + type: string + tacticName: + description: >- + Optional: Name for the tactic/strategy that will be created. If not provided, a unique identifier will be + generated. + example: Premium Display Campaign + type: string + customFields: + description: Optional custom fields required by the outcome agent + type: object + additionalProperties: {} + required: + - proposalId + OutcomesAgentListTacticsInput: + type: object + properties: + outcomeAgentId: + description: ID of the outcome agent to list tactics for + example: '123' + type: string + required: + - outcomeAgentId + DiscoverProductsInput: + type: object + properties: + brief: + description: >- + Natural language description of campaign requirements (e.g., "Launch $50k luxury electric vehicle awareness + campaign targeting 10M affluent buyers, 60 days, max CPM $15") + type: string + minLength: 1 + example: string + brandManifestUrl: + description: Valid URL for the brand (e.g., company website https://example.com or hosted brand manifest JSON) + type: string + format: uri + example: https://example.com + filters: + description: Structured filters for product discovery + type: object + properties: + deliveryType: + type: string + enum: + - guaranteed + - non_guaranteed + isFixedPrice: + description: Filter for fixed price vs auction products + type: boolean + formatTypes: + description: Filter by format types + type: array + items: + type: string + enum: + - video + - display + - audio + formatIds: + description: Filter by specific structured format IDs (e.g., display_300x250_image). More precise than formatTypes. + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + standardFormatsOnly: + description: Only return products accepting IAB standard formats + type: boolean + minExposures: + description: Minimum exposures/impressions needed for measurement validity + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + agentId: + description: 'Optional: Query a specific sales agent by ID. If not provided, queries all active sales agents.' + type: string + example: example_id_123 + saveToDatabase: + description: 'Whether to save discovered products for future use (default: true)' + type: boolean + example: true + required: + - brief + - brandManifestUrl + ListProductsInput: + type: object + properties: + take: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + skip: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + 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, 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: Filter by agent name (partial match) + type: string + example: Example Name + ListAgentAccountsInput: + type: object + properties: + agentId: + description: The agent ID to list accounts for + type: string + example: example_id_123 + supportedAgentTypes: + description: Agent types that support accounts. Defaults to ["SALES"]. Currently only SALES agents support accounts. + default: + - SALES + type: array + items: + type: string + enum: + - SALES + - OUTCOME + - SIGNAL + required: + - agentId + RegisterAgentAccountInput: + type: object + properties: + agentId: + description: The agent ID to register an account with + type: string + example: example_id_123 + accountIdentifier: + description: Account identifier + type: string + example: example_id_123 + auth: + description: >- + Authentication configuration (optional). Use ADCP format: { type: "bearer" | "oauth" | "none", token: "..." + } + 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: {} + supportedAgentTypes: + description: Agent types that support accounts. Defaults to ["SALES"]. Currently only SALES agents support accounts. + default: + - SALES + type: array + items: + type: string + enum: + - SALES + - OUTCOME + - SIGNAL + required: + - agentId + - accountIdentifier + UnregisterAgentAccountInput: + type: object + properties: + agentId: + description: The agent ID to unregister your account from + type: string + example: example_id_123 + confirm: + description: Must be true to confirm this destructive operation + type: boolean + example: true + supportedAgentTypes: + description: Agent types that support accounts. Defaults to ["SALES"]. Currently only SALES agents support accounts. + default: + - SALES + type: array + items: + type: string + enum: + - SALES + - OUTCOME + - SIGNAL + required: + - agentId + - confirm + UpdateAgentAccountInput: + type: object + properties: + agentId: + description: The agent ID + type: string + example: example_id_123 + accountIdentifier: + description: Account identifier + type: string + example: example_id_123 + 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: {} + supportedAgentTypes: + description: Agent types that support accounts. Defaults to ["SALES"]. Currently only SALES agents support accounts. + default: + - SALES + type: array + items: + type: string + enum: + - SALES + - OUTCOME + - SIGNAL + required: + - agentId + - accountIdentifier + - auth + 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: + description: Available brand standards for AI to select from based on prompt + type: array + items: + $ref: '#/components/schemas/AvailableBrandAgent' + example: [] + availableBrandStory: + description: Available brand stories for AI to select from based on prompt + type: array + items: + $ref: '#/components/schemas/AvailableBrandAgent' + example: [] + bitmapTargetingProfiles: + description: Bitmap targeting profiles for detailed targeting (validated against targeting_dimension table) + type: array + items: + $ref: '#/components/schemas/BitmapTargetingProfile' + example: [] + brandStoryAgentIds: + description: IDs of brand story agents to associate with this tactic + type: array + items: + type: number + example: [] + brandStandardsAgentIds: + description: IDs of brand standards agents to associate with this tactic + type: array + items: + type: number + 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: + description: Available brand standards for AI to select from based on prompt + type: array + items: + $ref: '#/components/schemas/AvailableBrandAgent' + example: [] + availableBrandStory: + description: Available brand stories for AI to select from based on prompt + type: array + items: + $ref: '#/components/schemas/AvailableBrandAgent' + example: [] + bitmapTargetingProfiles: + description: Bitmap targeting profiles for detailed targeting (replaces existing profiles) + type: array + items: + $ref: '#/components/schemas/BitmapTargetingProfile' + example: [] + brandStoryAgentIds: + description: IDs of brand story agents to associate with this tactic + type: array + items: + type: number + example: [] + brandStandardsAgentIds: + description: IDs of brand standards agents to associate with this tactic + type: array + items: + type: number + 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 + 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 + userId: + description: >- + User ID to associate with the token. Required for SuperAdmins creating tokens for other customers. If not + provided, defaults to the authenticated user. + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + 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 + GetSignalInput: + type: object + properties: + signalId: + type: string + minLength: 1 + maxLength: 255 + pattern: ^[\w\-:.]+$ + example: example_id_123 + account: + type: string + maxLength: 255 + example: string + includeArchived: + default: false + type: boolean + required: + - signalId + ListSignalsInput: + type: object + properties: + signalAgentId: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + example: 100 + scope: + type: string + enum: + - PUBLIC + - PROPRIETARY + example: PUBLIC + isLive: + type: boolean + example: true + account: + type: string + maxLength: 255 + example: string + limit: + default: 20 + type: integer + exclusiveMinimum: true + maximum: 100 + offset: + default: 0 + type: integer + minimum: 0 + maximum: 9007199254740991 + includeArchived: + default: false + type: boolean + DiscoverSignalsInput: + type: object + properties: + agentId: + type: string + maxLength: 255 + example: example_id_123 + signalSpec: + type: string + maxLength: 5000 + example: string + signalIds: + maxItems: 100 + type: array + items: + type: string + maxLength: 255 + example: [] + limit: + default: 20 + type: integer + exclusiveMinimum: true + maximum: 100 + offset: + default: 0 + type: integer + minimum: 0 + maximum: 9007199254740991 + BrandAgentUpdate: + type: object + properties: + id: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + name: + type: string + example: Example Name + description: + type: string + example: string + manifestUrl: + type: string + format: uri + example: https://example.com + customerId: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + seatId: + nullable: true + type: integer + format: int64 + example: 100 + countryCodes: + type: array + items: + type: string + example: [] + createdAt: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + updatedAt: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + required: + - id + - name + - customerId + - createdAt + - updatedAt + BrandStandardsCreate: + type: object + properties: + id: + type: string + example: example_id_123 + name: + type: string + example: Example Name + description: + type: string + example: string + countryCodes: + type: array + items: + type: string + example: [] + channelCodes: + type: array + items: + type: string + example: [] + brands: + type: array + items: + type: string + example: [] + models: + type: array + items: + type: object + properties: + id: + type: string + name: + type: string + prompt: + type: string + status: + nullable: true + 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: + - id + - name + - prompt + - status + - createdAt + - updatedAt + example: [] + createdAt: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + updatedAt: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + required: + - id + - name + - countryCodes + - channelCodes + - brands + - models + - createdAt + - updatedAt + CampaignUpdate: + type: object + properties: + campaignId: + type: string + example: example_id_123 + name: + type: string + example: Example Name + status: + type: string + example: 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))$ + 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: + - campaignId + - name + - status + - createdAt + - updatedAt + CreativeGet: + type: object + properties: + creative_id: + type: string + example: example_id_123 + name: + type: string + example: Example Name + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + example: [] + tags: + nullable: true + type: array + items: + type: string + example: [] + approved: + nullable: true + type: boolean + example: true + weight: + nullable: true + type: number + example: 100 + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + example: [] + status: + description: Internal creative status + type: string + example: string + campaign_id: + description: Associated campaign ID + type: string + example: example_id_123 + created_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + updated_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + required: + - 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: + product_id: + description: ADCP product identifier + type: string + sales_agent_id: + type: string + sales_agent_name: + type: string + budget: + description: ADCP budget field + type: number + pacing: + description: ADCP pacing field + type: string + enum: + - asap + - even + - front_loaded + pricing_option_id: + type: string + bid_price: + type: number + display_order: + type: number + creative_formats: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + required: + - product_id + - sales_agent_id + example: [] + packages: + description: Post-execution ADCP packages (enriched) + type: array + items: + type: object + properties: + package_id: + type: string + buyer_ref: + nullable: true + type: string + product_id: + nullable: true + type: string + budget: + nullable: true + type: number + pacing: + nullable: true + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + pricing_option_id: + nullable: true + type: string + bid_price: + nullable: true + type: number + impressions: + nullable: true + type: number + targeting_overlay: + nullable: true + type: object + properties: + geo_country_any_of: + nullable: true + type: array + items: + type: string + geo_region_any_of: + nullable: true + type: array + items: + type: string + geo_metro_any_of: + nullable: true + type: array + items: + type: string + geo_postal_code_any_of: + nullable: true + type: array + items: + type: string + axe_include_segment: + nullable: true + type: string + axe_exclude_segment: + nullable: true + type: string + frequency_cap: + nullable: true + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + creative_assignments: + nullable: true + type: array + items: + type: object + properties: + creative_id: + type: string + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - creative_id + format_ids_to_provide: + nullable: true + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + paused: + nullable: true + type: boolean + ext: + nullable: true + type: object + additionalProperties: {} + product_ids: + description: Array of product IDs (enriched from joins) + type: array + items: + type: string + creatives: + description: Full creative objects (enriched from joins) + type: array + items: + type: object + properties: + creative_id: + type: string + name: + type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + status: + description: Internal creative status (not in ADCP protocol) + type: string + required: + - creative_id + - name + - format_id + - assets + - status + created_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + updated_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + sales_agent_id: + type: string + sales_agent_name: + type: string + creative_formats: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + required: + - package_id + - creatives + - created_at + - updated_at + example: [] + creatives: + description: Full creative objects (enriched from joins) + type: array + items: + type: object + properties: + creative_id: + type: string + name: + type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + status: + description: Internal creative status (not in ADCP protocol) + type: string + required: + - creative_id + - name + - format_id + - assets + - status + example: [] + adcp: + description: ADCP-specific metadata (from execute response) + type: object + properties: + media_buy_id: + type: string + status: + type: string + webhook_url: + type: string + performance: + description: Performance metrics (from reporting) + type: object + properties: + impressions: + type: number + spend: + type: number + clicks: + type: number + last_updated: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + required: + - impressions + - spend + - clicks + created_at: + description: Created timestamp + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + updated_at: + description: Updated timestamp + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + archived_at: + description: Archived timestamp + nullable: true + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + required: + - media_buy_id + - tactic_id + - customer_id + - name + - status + - created_at + - updated_at + TacticGet: + type: object + properties: + id: + type: number + example: 100 + name: + type: string + example: Example Name + prompt: + type: string + example: string + campaignIds: + type: array + items: + type: string + example: [] + channelCodes: + type: array + items: + type: string + example: [] + countryCodes: + type: array + items: + type: string + example: [] + mediaBuyCount: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + targetingCount: + description: Count of targeting dimensions (channels, countries, bitmap profiles, brand agents) + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + bitmapTargetingProfiles: + description: Bitmap targeting profiles with targeting item keys for UI display + type: array + items: + $ref: '#/components/schemas/BitmapTargetingProfileResponse' + example: [] + brandStoryAgents: + description: Brand story agents associated with this tactic + type: array + items: + $ref: '#/components/schemas/BrandStoryAgentSummary' + example: [] + brandStandardsAgents: + description: Brand standards agents associated with this tactic + type: array + items: + $ref: '#/components/schemas/BrandStandardsAgentSummary' + example: [] + 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 + archivedAt: + 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 + - name + - channelCodes + - countryCodes + - createdAt + - updatedAt + MCPContent: + type: object + properties: + type: + type: string + enum: + - text + example: text + text: + type: string + example: string + required: + - type + - text + additionalProperties: false + BadRequest: + description: Bad request error response + type: object + properties: + error: + type: string + example: string + message: + type: string + example: string + required: + - error + additionalProperties: false + Unauthorized: + description: Unauthorized error response + type: object + properties: + error: + type: string + example: string + message: + type: string + example: string + required: + - error + additionalProperties: false + InternalError: + description: Internal server error response + type: object + properties: + error: + type: string + example: string + message: + type: string + example: string + required: + - error + additionalProperties: false + AssetList: + type: object + properties: + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + items: + type: array + items: + type: object + properties: + assetId: + type: string + originalFilename: + type: string + assetType: + type: string + size: + type: number + brandAgentId: + type: string + customerId: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + signedUrl: + type: string + tags: + type: array + items: + type: string + required: + - assetId + - originalFilename + - assetType + - size + - brandAgentId + - customerId + - signedUrl + additionalProperties: false + example: [] + required: + - total + - items + additionalProperties: false + BrandAgentList: + type: object + properties: + brandAgents: + type: array + items: + $ref: '#/components/schemas/BrandAgentUpdateOutput' + example: [] + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + required: + - brandAgents + - total + additionalProperties: false + BrandAgentDelete: + type: object + properties: + success: + type: boolean + example: true + deletedId: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + required: + - success + - deletedId + additionalProperties: false + BrandStandardsDelete: + type: object + properties: + success: + type: boolean + example: true + id: + type: string + example: example_id_123 + required: + - success + - id + additionalProperties: false + BrandStandardsList: + type: object + properties: + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + items: + type: array + items: + $ref: '#/components/schemas/BrandStandardsCreateOutput' + example: [] + required: + - total + - items + additionalProperties: false + BrandStoryCreate: + type: object + properties: + id: + type: string + example: example_id_123 + name: + type: string + example: Example Name + brandAgentId: + type: string + example: example_id_123 + countryCodes: + type: array + items: + type: string + example: [] + channelCodes: + type: array + items: + type: string + example: [] + languages: + type: array + items: + type: string + example: [] + brands: + type: array + items: + type: string + example: [] + currentModel: + type: object + properties: + id: + type: string + name: + type: string + prompt: + type: string + status: + nullable: true + 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: + - id + - name + - prompt + - status + - createdAt + - updatedAt + 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))$ + example: string + updatedAt: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + required: + - id + - name + - createdAt + - updatedAt + additionalProperties: false + BrandStoryUpdate: + type: object + properties: + id: + type: string + example: example_id_123 + name: + type: string + example: Example Name + prompt: + type: string + example: string + status: + type: string + example: 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))$ + example: string + updatedAt: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + required: + - id + - name + - createdAt + - updatedAt + additionalProperties: false + BrandStoryDelete: + type: object + properties: + success: + type: boolean + example: true + id: + type: string + example: example_id_123 + required: + - success + - id + additionalProperties: false + BrandStoryList: + type: object + properties: + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + items: type: array items: - type: string - minLength: 2 - maxLength: 2 + type: object + properties: + id: + type: string + name: + type: string + description: + type: string + status: + type: string + type: + type: string + languages: + type: array + items: + type: string + currentModel: + type: object + properties: + id: + type: string + name: + type: string + prompt: + type: string + status: + nullable: true + 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: + - id + - name + - prompt + - status + - createdAt + - updatedAt + 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))$ + required: + - id + - name + - status + - type + - languages + - createdAt + - updatedAt + additionalProperties: false + example: [] + required: + - total + - items + additionalProperties: false + CampaignList: + type: object + properties: + campaigns: + type: array + items: + $ref: '#/components/schemas/CampaignUpdateOutput' + example: [] + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + required: + - campaigns + - total + additionalProperties: false + CampaignDelete: + type: object + properties: + success: + type: boolean + example: true + deletedId: + type: string + example: example_id_123 + required: + - success + - deletedId + additionalProperties: false + CampaignGetSummary: + type: object + properties: + campaignId: + type: string + example: example_id_123 + summary: + type: object + additionalProperties: {} + required: + - campaignId + - summary + additionalProperties: false + CampaignListTactics: + type: object + properties: + tactics: + type: array + items: {} + example: [] + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + required: + - tactics + - total + additionalProperties: false + CampaignValidateBrief: + type: object + properties: + valid: + type: boolean + example: true + feedback: + type: string + example: string + required: + - valid + additionalProperties: false + ChannelList: + type: object + properties: + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + items: + type: array + items: + type: object + properties: + channel: + type: string + displayName: + type: string + required: + - channel + - displayName + additionalProperties: false + example: [] + required: + - total + - items + additionalProperties: false + GetCustomerOutput: + type: object + properties: + id: + description: Unique identifier for the customer + type: number + example: 100 + company: + description: Company name + type: string + example: string + name: + description: Customer display name + type: string + example: Example Name + active: + description: Whether the customer is currently active + type: boolean + example: true + createdAt: + description: ISO 8601 timestamp when the customer 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: + - id + - company - name - UpdateBrandAgentInput: - description: Parameters for updating a brand agent + - active + - createdAt + additionalProperties: false + GetCustomerSeatsOutput: type: object properties: - brandAgentId: - description: The unique identifier for the brand agent - example: 123 + customerId: + description: The customer ID these seats belong to type: integer exclusiveMinimum: true maximum: 9007199254740991 - name: - description: Updated name of the brand agent - type: string - minLength: 1 - maxLength: 255 - example: Example Name - description: - description: Updated description - type: string - maxLength: 1000 - example: string - manifestUrl: - description: Updated URL to the brand manifest - example: https://example.com/brand-manifest - type: string - format: uri - countryCodes: - description: Updated country codes + example: 100 + seats: + description: Array of seats belonging to the customer type: array items: - type: string - minLength: 2 - maxLength: 2 + type: object + properties: + id: + description: Unique identifier for the seat + type: string + name: + description: Seat display name + type: string + customerId: + description: Customer ID that owns this seat + type: number + active: + description: Whether the seat is currently active + type: boolean + type: + description: Seat type (BUYER or ACTIVATION) + type: string + enum: + - BUYER + - ACTIVATION + required: + - id + - name + - customerId + - active + - type + additionalProperties: false example: [] - required: - - brandAgentId - DeleteBrandAgentInput: - description: Parameters for deleting a brand agent - type: object - properties: - brandAgentId: - description: The unique identifier for the brand agent to delete - example: 123 + count: + description: Total number of seats returned type: integer - exclusiveMinimum: true + minimum: 0 maximum: 9007199254740991 + example: 100 required: - - brandAgentId - CreateBrandStandardInput: + - customerId + - seats + - count + additionalProperties: false + AssignCreativeOutput: type: object properties: - brandAgentId: - description: Brand agent ID - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - name: - description: Standard name - type: string - minLength: 1 - maxLength: 255 - example: Example Name - description: - description: Standard description + success: + type: boolean + example: true + creative_id: type: string - example: string - prompt: - description: Brand standards prompt + example: example_id_123 + campaign_id: type: string - minLength: 1 - example: string - isPrimary: - description: Whether this is the primary standard + example: example_id_123 + required: + - success + - creative_id + - campaign_id + additionalProperties: false + DeleteCreativeOutput: + type: object + properties: + success: type: boolean example: true - countries: - description: Country codes - type: array - items: - type: string - example: [] - channels: - description: Channel types - type: array - items: - type: string - enum: - - ctv - - video - - display - - app - - social - example: [] - brands: - description: Brand names + id: + type: string + example: example_id_123 + required: + - success + - id + additionalProperties: false + ListCreativesOutput: + type: object + properties: + items: type: array items: - type: string + $ref: '#/components/schemas/CreativeGetOutput' example: [] + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 required: - - brandAgentId - - prompt - DeleteBrandStandardInput: + - items + - total + additionalProperties: false + SyncSalesAgentsOutput: type: object properties: - brandStandardId: - description: Brand standard ID + success: + type: boolean + example: true + creative_id: type: string example: example_id_123 + campaign_id: + type: string + example: example_id_123 + debug_info: + type: object + properties: + request: {} + response: {} + debugLogs: + type: array + items: + type: object + properties: + type: + type: string + timestamp: + type: string + message: + type: string + request: + type: object + properties: + method: + type: string + url: + type: string + headers: + type: object + additionalProperties: + type: string + body: {} + additionalProperties: false + response: + type: object + properties: + status: + type: number + statusText: + type: string + headers: + type: object + additionalProperties: + type: string + body: {} + additionalProperties: false + required: + - type + additionalProperties: false + error: {} + agentResults: + type: array + items: + type: object + properties: + agentId: + type: string + agentName: + type: string + request: {} + response: {} + debugLogs: + type: array + items: + type: object + properties: + type: + type: string + timestamp: + type: string + message: + type: string + request: + type: object + properties: + method: + type: string + url: + type: string + headers: + type: object + additionalProperties: + type: string + body: {} + additionalProperties: false + response: + type: object + properties: + status: + type: number + statusText: + type: string + headers: + type: object + additionalProperties: + type: string + body: {} + additionalProperties: false + required: + - type + additionalProperties: false + error: {} + required: + - agentId + - agentName + additionalProperties: false + additionalProperties: false required: - - brandStandardId - ListBrandStandardsInput: + - success + - creative_id + additionalProperties: false + CountryList: type: object properties: - brandAgentId: - description: Optional brand agent ID to filter brand standards by - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - where: - description: Prisma-style where clause for filtering standards - type: object - additionalProperties: {} - orderBy: - description: Prisma-style orderBy clause - type: object - additionalProperties: {} - take: - description: Number of records to return + total: type: integer - exclusiveMinimum: true + minimum: 0 maximum: 9007199254740991 example: 100 - skip: - description: Number of records to skip + items: + type: array + items: + type: object + properties: + key: + type: string + displayName: + type: string + required: + - key + - displayName + additionalProperties: false + example: [] + required: + - total + - items + additionalProperties: false + LanguageList: + type: object + properties: + total: type: integer minimum: 0 maximum: 9007199254740991 example: 100 - distinct: - description: Fields to use for distinct selection - type: array - items: - type: string - example: [] - CreateBrandStoryInput: - type: object - properties: - brandAgentId: - description: Brand agent ID (bigint or string) - anyOf: - - type: integer - format: int64 - - type: string - name: - description: Story name - type: string - minLength: 1 - maxLength: 255 - example: Example Name - prompt: - description: Brand story prompt - type: string - example: string - brands: - description: Brand names - type: array - items: - type: string - example: [] - languages: - description: Language codes (use language_list tool to see available options) + items: type: array items: - type: string + type: object + properties: + key: + type: string + displayName: + type: string + required: + - key + - displayName + additionalProperties: false example: [] required: - - brandAgentId - - name - - languages - UpdateBrandStoryInput: - type: object - properties: - brandStoryId: - description: Brand story ID - type: string - example: example_id_123 - name: - description: Story name - type: string - example: Example Name - prompt: - description: Updated brand story prompt - type: string - minLength: 1 - example: string - required: - - brandStoryId - - prompt - DeleteBrandStoryInput: + - total + - items + additionalProperties: false + UpdateMediaBuyOutput: type: object properties: - brandStoryId: - description: Brand story ID + media_buy_id: + description: ADCP media buy identifier type: string example: example_id_123 - required: - - brandStoryId - ListBrandStoriesInput: - type: object - properties: - brandAgentId: - description: Optional brand agent ID to filter brand stories by + tactic_id: + description: Internal tactic ID type: integer exclusiveMinimum: true maximum: 9007199254740991 example: 100 - where: - description: Filtering criteria - type: object - additionalProperties: {} - orderBy: - description: Ordering criteria - type: object - additionalProperties: {} - take: - description: Number of records to return + customer_id: + description: Internal customer ID type: integer exclusiveMinimum: true maximum: 9007199254740991 example: 100 - skip: - description: Number of records to skip - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - distinct: - description: Fields to use for distinct selection + name: + description: Media buy name + type: string + example: Example Name + description: + description: Media buy description + type: string + example: string + status: + description: Internal status (DRAFT, ACTIVE, PAUSED, etc.) + type: string + example: string + products: + description: Pre-execution product configuration + type: array + items: + type: object + properties: + product_id: + description: ADCP product identifier + type: string + sales_agent_id: + type: string + sales_agent_name: + type: string + budget: + description: ADCP budget field + type: number + pacing: + description: ADCP pacing field + type: string + enum: + - asap + - even + - front_loaded + pricing_option_id: + type: string + bid_price: + type: number + display_order: + type: number + creative_formats: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + required: + - product_id + - sales_agent_id + additionalProperties: false + example: [] + packages: + description: Post-execution ADCP packages (enriched) + type: array + items: + type: object + properties: + package_id: + type: string + buyer_ref: + nullable: true + type: string + product_id: + nullable: true + type: string + budget: + nullable: true + type: number + pacing: + nullable: true + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + pricing_option_id: + nullable: true + type: string + bid_price: + nullable: true + type: number + impressions: + nullable: true + type: number + targeting_overlay: + nullable: true + type: object + properties: + geo_country_any_of: + nullable: true + type: array + items: + type: string + geo_region_any_of: + nullable: true + type: array + items: + type: string + geo_metro_any_of: + nullable: true + type: array + items: + type: string + geo_postal_code_any_of: + nullable: true + type: array + items: + type: string + axe_include_segment: + nullable: true + type: string + axe_exclude_segment: + nullable: true + type: string + frequency_cap: + nullable: true + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + additionalProperties: false + additionalProperties: false + creative_assignments: + nullable: true + type: array + items: + type: object + properties: + creative_id: + type: string + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - creative_id + additionalProperties: false + format_ids_to_provide: + nullable: true + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + paused: + nullable: true + type: boolean + ext: + nullable: true + type: object + additionalProperties: {} + product_ids: + description: Array of product IDs (enriched from joins) + type: array + items: + type: string + creatives: + description: Full creative objects (enriched from joins) + type: array + items: + type: object + properties: + creative_id: + type: string + name: + type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + status: + description: Internal creative status (not in ADCP protocol) + type: string + required: + - creative_id + - name + - format_id + - assets + - status + additionalProperties: false + created_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + updated_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + sales_agent_id: + type: string + sales_agent_name: + type: string + creative_formats: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + required: + - package_id + - creatives + - created_at + - updated_at + additionalProperties: false + example: [] + creatives: + description: Full creative objects (enriched from joins) type: array items: - type: string + type: object + properties: + creative_id: + type: string + name: + type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + status: + description: Internal creative status (not in ADCP protocol) + type: string + required: + - creative_id + - name + - format_id + - assets + - status + additionalProperties: false example: [] - ListCampaignsInput: - description: Parameters for listing campaigns - type: object - properties: - brandAgentId: - description: Filter by brand agent ID - example: 123 - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - status: - description: Filter by campaign status - type: string - enum: - - ACTIVE - - PAUSED - - ARCHIVED - - DRAFT - example: ACTIVE - limit: - description: Number of results to return - example: 50 - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - offset: - description: Number of results to skip for pagination - example: 0 - type: integer - minimum: 0 - maximum: 9007199254740991 - CreateCampaignInput: - description: Parameters for creating a new campaign - type: object - properties: - brandAgentId: - description: Brand agent ID that will own this campaign - example: 123 - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - name: - description: Optional name for the campaign (auto-generated if not provided) - example: Summer 2025 Tech Campaign - type: string - minLength: 1 - maxLength: 255 - prompt: - description: >- - Natural language description of campaign requirements. The backend will parse this to extract targeting, - budget, and creative requirements. - example: Create a video campaign targeting tech enthusiasts aged 25-45 with $50k budget - type: string - minLength: 10 - budget: - description: Budget configuration for the campaign + adcp: + description: ADCP-specific metadata (from execute response) type: object properties: - total: - type: number - minimum: 0 - exclusiveMinimum: true - currency: - default: USD + media_buy_id: type: string - minLength: 3 - maxLength: 3 - dailyCap: + status: + type: string + webhook_url: + type: string + additionalProperties: false + performance: + description: Performance metrics (from reporting) + type: object + properties: + impressions: type: number - minimum: 0 - exclusiveMinimum: true - pacing: + spend: + type: number + clicks: + type: number + last_updated: type: string - enum: - - EVEN - - ASAP - - FRONTLOADED + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|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: - - total - startDate: - description: Campaign start date (ISO 8601 format) - example: '2025-01-15T00:00:00Z' + - 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))$ - endDate: - description: Campaign end date (ISO 8601 format) - example: '2025-03-31T23:59:59Z' + 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))$ - scoringWeights: - description: Scoring weights for campaign optimization + 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 + debug_info: type: object properties: - affinity: - type: number - minimum: 0 - maximum: 1 - outcome: - type: number - minimum: 0 - maximum: 1 - quality: - type: number - minimum: 0 - maximum: 1 - outcomeScoreWindowDays: - description: Number of days for outcome measurement window - example: 30 - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - status: - description: Initial campaign status - type: string - enum: - - ACTIVE - - PAUSED - - ARCHIVED - - DRAFT - example: ACTIVE + request: {} + response: {} + debugLogs: + type: array + items: + type: object + properties: + type: + type: string + timestamp: + type: string + message: + type: string + request: + type: object + properties: + method: + type: string + url: + type: string + headers: + type: object + additionalProperties: + type: string + body: {} + additionalProperties: false + response: + type: object + properties: + status: + type: number + statusText: + type: string + headers: + type: object + additionalProperties: + type: string + body: {} + additionalProperties: false + required: + - type + additionalProperties: false + error: {} + additionalProperties: false required: - - brandAgentId - - prompt - GetCampaignInput: - description: Parameters for retrieving a specific campaign + - media_buy_id + - tactic_id + - customer_id + - name + - status + - created_at + - updated_at + additionalProperties: false + DeleteMediaBuyOutput: type: object properties: - campaignId: - description: The unique identifier for the campaign - example: cmp_987654321 + success: + type: boolean + example: true + media_buy_id: type: string - minLength: 1 + example: example_id_123 required: - - campaignId - UpdateCampaignInput: - description: Parameters for updating a campaign + - success + - media_buy_id + additionalProperties: false + ExecuteMediaBuyOutput: type: object properties: - campaignId: - description: The unique identifier for the campaign - example: cmp_987654321 - type: string - minLength: 1 - name: - description: Updated campaign name + success: + type: boolean + example: true + media_buy_id: type: string - minLength: 1 - maxLength: 255 - example: Example Name - prompt: - description: Updated campaign prompt + example: example_id_123 + status: type: string - minLength: 10 example: string - budget: - description: Updated budget configuration - type: object - properties: - total: - type: number - minimum: 0 - exclusiveMinimum: true - currency: - default: USD - type: string - minLength: 3 - maxLength: 3 - dailyCap: - type: number - minimum: 0 - exclusiveMinimum: true - pacing: - type: string - enum: - - EVEN - - ASAP - - FRONTLOADED - startDate: - description: Updated start date + adcp_media_buy_id: type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - endDate: - description: Updated end date + example: example_id_123 + adcp_status: 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 - scoringWeights: - description: Updated scoring weights + debug_info: type: object properties: - affinity: - type: number - minimum: 0 - maximum: 1 - outcome: - type: number - minimum: 0 - maximum: 1 - quality: - type: number - minimum: 0 - maximum: 1 - outcomeScoreWindowDays: - description: Updated outcome score window days + request: {} + response: {} + debugLogs: + type: array + items: + type: object + properties: + type: + type: string + timestamp: + type: string + message: + type: string + request: + type: object + properties: + method: + type: string + url: + type: string + headers: + type: object + additionalProperties: + type: string + body: {} + additionalProperties: false + response: + type: object + properties: + status: + type: number + statusText: + type: string + headers: + type: object + additionalProperties: + type: string + body: {} + additionalProperties: false + required: + - type + additionalProperties: false + error: {} + additionalProperties: false + required: + - success + - media_buy_id + - status + additionalProperties: false + ListMediaBuysOutput: + type: object + properties: + total: type: integer - exclusiveMinimum: true + minimum: 0 maximum: 9007199254740991 example: 100 - status: - description: Updated campaign status - type: string - enum: - - ACTIVE - - PAUSED - - ARCHIVED - - DRAFT - example: ACTIVE + items: + type: array + items: + $ref: '#/components/schemas/MediaBuyGetOutput' + example: [] required: - - campaignId - DeleteCampaignInput: - description: Parameters for deleting a campaign + - total + - items + additionalProperties: false + OutcomesAgentGetProposals: type: object properties: - campaignId: - description: The unique identifier for the campaign to delete - example: cmp_987654321 + total: + description: Total number of proposals returned + type: number + example: 100 + proposals: + description: List of proposals from outcome agents + type: array + items: + type: object + properties: + id: + description: Database ID of the proposal + type: string + proposalId: + description: Outcome agent generated proposal ID + type: string + outcomeAgentId: + description: ID of the outcome agent that created this proposal + type: string + outcomeAgentName: + description: Name of the outcome agent + type: string + execution: + description: How the proposal would be executed + type: string + budgetCapacity: + description: Maximum budget the agent can manage + type: number + pricing: + description: Pricing model for the proposal + type: object + properties: + method: + type: string + enum: + - revshare + - cost_per_unit + rate: + type: number + pricing_model: + type: string + enum: + - cpm + - cpc + - cpa + - cpv + - cpcv + currency: + type: string + required: + - method + - rate + - currency + additionalProperties: false + sku: + description: Tactic type identifier + type: string + status: + description: Current status of the proposal + type: string + enum: + - pending + - accepted + - rejected + - expired + proposalCard: + description: Visual card data for rendering in UI + allOf: + - $ref: '#/components/schemas/ProposalCardOutput' + createdAt: + description: When the proposal 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))$ + required: + - id + - proposalId + - outcomeAgentId + - outcomeAgentName + - execution + - budgetCapacity + - pricing + - status + - createdAt + additionalProperties: false + example: [] + required: + - total + - proposals + additionalProperties: false + OutcomesAgentAcceptProposal: + type: object + properties: + tacticId: + description: ID of the created tactic/strategy + type: string + example: example_id_123 + tacticName: + description: Name of the created tactic (user-provided or auto-generated) + type: string + example: Example Name + proposalId: + description: ID of the accepted proposal + type: string + example: example_id_123 + outcomeAgentId: + description: ID of the outcome agent managing this tactic type: string - minLength: 1 - hardDelete: - description: 'If true, permanently delete the campaign. Default: false (soft delete/archive)' + example: example_id_123 + acknowledged: + description: Whether the outcome agent acknowledged the assignment type: boolean example: true - required: - - campaignId - GetCampaignSummaryInput: - type: object - properties: - campaignId: - description: Campaign ID + message: + description: Optional message from the outcome agent type: string - example: example_id_123 + example: string required: - - campaignId - ListCampaignTacticsInput: + - tacticId + - tacticName + - proposalId + - outcomeAgentId + - acknowledged + additionalProperties: false + OutcomesAgentListTactics: type: object properties: - campaignId: - description: Campaign ID + outcomeAgentId: + description: ID of the outcome agent type: string example: example_id_123 - required: - - campaignId - ValidateBriefInput: - type: object - properties: - brief: - description: Campaign brief text + outcomeAgentName: + description: Name of the outcome agent type: string - minLength: 10 - example: string + example: Example Name + total: + description: Total number of tactics managed by this agent + type: number + example: 100 + tactics: + description: List of tactics managed by this outcome agent + type: array + items: + type: object + properties: + tacticId: + description: ID of the tactic (strategy) + type: string + tacticName: + description: Name of the tactic + type: string + proposalId: + description: ID of the original proposal + type: string + acceptedAt: + description: When the proposal was accepted (ISO 8601) + type: string + campaignId: + description: Campaign ID if linked to a campaign + nullable: true + type: string + required: + - tacticId + - tacticName + - proposalId + - acceptedAt + - campaignId + additionalProperties: false + example: [] required: - - brief - ListChannelsInput: - type: object - properties: {} - GetCustomerInput: + - outcomeAgentId + - outcomeAgentName + - total + - tactics + additionalProperties: false + MediaProductDiscover: type: object properties: - customerId: - description: >- - The unique identifier of the customer to retrieve. If not provided, uses the authenticated users customer - ID. + success: + type: boolean + example: true + products_found: type: integer - exclusiveMinimum: true + minimum: 0 maximum: 9007199254740991 example: 100 - GetCustomerSeatsInput: - type: object - properties: - customerId: - description: >- - The unique identifier of the customer whose seats to retrieve. If not provided, uses the authenticated users - customer ID. + products_saved: type: integer - exclusiveMinimum: true + minimum: 0 maximum: 9007199254740991 example: 100 - AssignCreativeInput: - type: object - properties: - creativeId: - type: string - example: example_id_123 - campaignId: - type: string - example: example_id_123 - required: - - creativeId - - campaignId - CreateCreativeInput: - type: object - properties: - brandAgentId: + successful_agents: type: integer - exclusiveMinimum: true + minimum: 0 maximum: 9007199254740991 example: 100 - organizationId: - 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 - assets: - description: >- - Optional: Upload assets inline with the creative. Each asset requires: name, contentType, data (base64), and - assetType. + failed_agents: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + products: type: array items: type: object properties: + product_id: + type: string name: - description: Filename (e.g., banner.png) type: string - contentType: - description: MIME type (e.g., image/png, image/jpeg) + description: + type: string + publisher_properties: + description: Publisher property selectors + type: array + items: + type: object + properties: + property_id: + type: string + property_type: + type: string + name: + type: string + identifiers: + type: array + items: + type: object + properties: + type: + type: string + value: + type: string + include_subdomains: + type: boolean + required: + - type + - value + additionalProperties: false + tags: + type: array + items: + type: string + publisher_domain: + type: string + additionalProperties: false + format_ids: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + placements: + description: Specific placements within product + type: array + items: + type: object + properties: + placement_id: + type: string + name: + type: string + description: + type: string + format_ids: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + required: + - placement_id + - name + additionalProperties: false + delivery_type: + anyOf: + - type: string + enum: + - guaranteed + - type: string + enum: + - non_guaranteed + pricing_options: + type: array + items: + anyOf: + - anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + additionalProperties: false + required: + - view_threshold + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + additionalProperties: false + required: + - view_threshold + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + minItems: 2 + estimated_exposures: + description: Estimated impressions for guaranteed products + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + measurement: + description: Measurement details + type: object + properties: + type: + type: string + attribution: + type: string + window: + type: string + reporting: + type: string + required: + - type + - attribution + - reporting + additionalProperties: false + delivery_measurement: + description: Delivery measurement provider and methodology + type: object + properties: + provider: + type: string + notes: + type: string + required: + - provider + additionalProperties: false + reporting_capabilities: + description: Available reporting options + type: object + properties: + supported_metrics: + type: array + items: + type: string + reporting_frequency: + type: array + items: + type: string + custom_dimensions: + type: array + items: + type: string + additionalProperties: false + creative_policy: + description: Creative requirements and restrictions + type: object + properties: + max_file_size: + type: number + allowed_formats: + type: array + items: + type: string + restricted_categories: + type: array + items: + type: string + approval_required: + type: boolean + guidelines_url: + type: string + additionalProperties: false + is_custom: + description: Whether this is a custom product + type: boolean + brief_relevance: + description: AI-generated relevance explanation included when discovering products + type: string + expires_at: + description: Expiration for custom products + 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))$ + product_card: + description: Standard visual card + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + additionalProperties: false + product_card_detailed: + description: Detailed carousel card + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + additionalProperties: false + ext: + description: Extension data + type: object + additionalProperties: {} + id: + description: Internal database ID + type: string + customer_id: + description: Customer who owns this product (null = generic product) + nullable: true + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + adcp_agent_id: + description: Source ADCP agent ID type: string - data: - description: Base64-encoded file data (without data:image/png;base64, prefix) - format: byte + sales_agent_name: + description: Human-readable agent name type: string - assetType: - description: Type of asset + inventory_type: + description: Internal classification of inventory type type: string enum: - - image - - video - - audio - - logo - - font - tags: - description: Optional tags + - premium + - run_of_site + - targeted_package + formats: + description: ADCP format_ids array of FormatID objects {agent_url, id} + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + supported_targeting: + description: Supported targeting capabilities type: array items: type: string + created_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + updated_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: + - product_id - name - - contentType - - data - - assetType + - description + - format_ids + - delivery_type + - pricing_options + - id + - customer_id + - created_at + - updated_at + additionalProperties: false 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: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - formatSource: - type: string - enum: - - ADCP - - CREATIVE_AGENT - - PUBLISHER - example: ADCP - status: - type: string - enum: - - ACTIVE - - PAUSED - - ARCHIVED - - DRAFT - example: ACTIVE - take: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - skip: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - ListCountriesInput: - type: object - properties: {} - ListLanguagesInput: - type: object - properties: {} - GetMediaBuyInput: - type: object - properties: - mediaBuyId: - type: string - example: example_id_123 - required: - - mediaBuyId - ListMediaBuysInput: - type: object - properties: - tacticId: - 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 - budgetRange: - allOf: - - $ref: '#/components/schemas/BudgetRange' - startDate: - description: Campaign start date (ISO 8601) - example: '2025-01-01T00:00:00Z' - 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))$ - endDate: - description: Campaign end date (ISO 8601) - example: '2025-01-31T23:59:59Z' - 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))$ - channels: - description: Advertising channels - example: - - display - - video - type: array - items: - type: string - enum: - - ctv - - video - - display - - app - - social - countries: - description: ISO 3166-1 alpha-2 country codes - example: - - US - - CA + agent_results: type: array items: - type: string - brief: - description: Campaign brief text - type: string - example: string - required: - - campaignId - OutcomesAgentAcceptProposalInput: - type: object - properties: - proposalId: - description: Database ID of the proposal to accept - example: '123' - type: string - tacticName: - description: >- - Optional: Name for the tactic/strategy that will be created. If not provided, a unique identifier will be - generated. - example: Premium Display Campaign - type: string - customFields: - description: Optional custom fields required by the outcome agent - type: object - additionalProperties: {} - required: - - proposalId - OutcomesAgentListTacticsInput: - type: object - properties: - outcomeAgentId: - description: ID of the outcome agent to list tactics for - example: '123' - type: string + type: object + properties: + agentId: + type: string + agentName: + type: string + success: + type: boolean + productCount: + type: integer + minimum: 0 + maximum: 9007199254740991 + error: + type: string + debugLogs: + type: array + items: + type: object + properties: + type: + type: string + timestamp: + type: string + message: + type: string + request: + type: object + properties: + method: + type: string + url: + type: string + headers: + type: object + additionalProperties: + type: string + body: {} + additionalProperties: false + response: + type: object + properties: + status: + type: number + statusText: + type: string + headers: + type: object + additionalProperties: + type: string + body: {} + additionalProperties: false + required: + - type + additionalProperties: false + rawResponseData: {} + required: + - agentId + - agentName + - success + - productCount + additionalProperties: false + example: [] required: - - outcomeAgentId - ListProductsInput: + - success + - products_found + - products_saved + - successful_agents + - failed_agents + - products + additionalProperties: false + MediaProductList: type: object properties: - take: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - skip: + total: type: integer minimum: 0 maximum: 9007199254740991 example: 100 - 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 - GetTacticInput: - type: object - properties: - tacticId: - type: number - example: 100 + items: + type: array + items: + type: object + properties: + product_id: + type: string + name: + type: string + description: + type: string + publisher_properties: + description: Publisher property selectors + type: array + items: + type: object + properties: + property_id: + type: string + property_type: + type: string + name: + type: string + identifiers: + type: array + items: + type: object + properties: + type: + type: string + value: + type: string + include_subdomains: + type: boolean + required: + - type + - value + additionalProperties: false + tags: + type: array + items: + type: string + publisher_domain: + type: string + additionalProperties: false + format_ids: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + placements: + description: Specific placements within product + type: array + items: + type: object + properties: + placement_id: + type: string + name: + type: string + description: + type: string + format_ids: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + required: + - placement_id + - name + additionalProperties: false + delivery_type: + anyOf: + - type: string + enum: + - guaranteed + - type: string + enum: + - non_guaranteed + pricing_options: + type: array + items: + anyOf: + - anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + additionalProperties: false + required: + - view_threshold + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + additionalProperties: false + required: + - view_threshold + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + minItems: 2 + estimated_exposures: + description: Estimated impressions for guaranteed products + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + measurement: + description: Measurement details + type: object + properties: + type: + type: string + attribution: + type: string + window: + type: string + reporting: + type: string + required: + - type + - attribution + - reporting + additionalProperties: false + delivery_measurement: + description: Delivery measurement provider and methodology + type: object + properties: + provider: + type: string + notes: + type: string + required: + - provider + additionalProperties: false + reporting_capabilities: + description: Available reporting options + type: object + properties: + supported_metrics: + type: array + items: + type: string + reporting_frequency: + type: array + items: + type: string + custom_dimensions: + type: array + items: + type: string + additionalProperties: false + creative_policy: + description: Creative requirements and restrictions + type: object + properties: + max_file_size: + type: number + allowed_formats: + type: array + items: + type: string + restricted_categories: + type: array + items: + type: string + approval_required: + type: boolean + guidelines_url: + type: string + additionalProperties: false + is_custom: + description: Whether this is a custom product + type: boolean + brief_relevance: + description: AI-generated relevance explanation included when discovering products + type: string + expires_at: + description: Expiration for custom products + 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))$ + product_card: + description: Standard visual card + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + additionalProperties: false + product_card_detailed: + description: Detailed carousel card + type: object + properties: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + manifest: + type: object + additionalProperties: {} + required: + - format_id + - manifest + additionalProperties: false + ext: + description: Extension data + type: object + additionalProperties: {} + id: + description: Internal database ID + type: string + customer_id: + description: Customer who owns this product (null = generic product) + nullable: true + type: integer + minimum: -9007199254740991 + 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 + formats: + description: ADCP format_ids array of FormatID objects {agent_url, id} + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + supported_targeting: + description: Supported targeting capabilities + type: array + items: + type: string + created_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + updated_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + required: + - product_id + - name + - description + - format_ids + - delivery_type + - pricing_options + - id + - customer_id + - created_at + - updated_at + additionalProperties: false + example: [] required: - - tacticId - ListTacticsInput: + - total + - items + additionalProperties: false + AgentGet: + anyOf: + - type: object + properties: + agentId: + type: string + name: + type: string + type: + type: string + enum: + - SALES + - OUTCOME + - SIGNAL + status: + type: string + relationship: + type: string + endpointUrl: + type: string + protocol: + type: string + authenticationType: + type: string + description: + type: string + organizationId: + type: string + registeredBy: + type: string + createdAt: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + updatedAt: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + required: + - agentId + - name + - type + - status + - relationship + - endpointUrl + - protocol + - authenticationType + - createdAt + - updatedAt + additionalProperties: false + - type: object + properties: + agentId: + type: string + name: + type: string + type: + type: string + enum: + - SALES + - OUTCOME + - SIGNAL + status: + type: string + relationship: + type: string + endpointUrl: + type: string + protocol: + type: string + authenticationType: + type: string + description: + type: string + organizationId: + type: string + registeredBy: + type: string + createdAt: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|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 + reportingType: + nullable: true + type: string + enum: + - WEBHOOK + - BUCKET + - POLLING + reportingPollingCadence: + nullable: true + type: string + enum: + - DAILY + - MONTHLY + required: + - agentId + - name + - type + - status + - relationship + - endpointUrl + - protocol + - authenticationType + - createdAt + - updatedAt + - customerAccountCount + additionalProperties: false + AgentList: type: object properties: - campaignId: - type: string - example: example_id_123 - take: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - skip: + total: type: integer minimum: 0 maximum: 9007199254740991 example: 100 - 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 - BrandAgentUpdate: + 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: + - total + - items + additionalProperties: false + AgentAccountList: type: object properties: - id: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - name: - type: string - example: Example Name - description: - type: string - example: string - manifestUrl: - type: string - format: uri - example: https://example.com - customerId: + total: type: integer - exclusiveMinimum: true + minimum: 0 maximum: 9007199254740991 example: 100 - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - required: - - id - - name - - customerId - - createdAt - - updatedAt - BrandStandardsCreate: - type: object - properties: - id: - type: string - example: example_id_123 - name: - type: string - example: Example Name - description: - type: string - example: string - countryCodes: - type: array - items: - type: string - example: [] - channelCodes: - type: array - items: - type: string - example: [] - brands: - type: array - items: - type: string - example: [] - models: + items: type: array items: type: object properties: id: type: string - name: - type: string - prompt: + accountIdentifier: type: string status: - nullable: true + type: string + registeredBy: type: string createdAt: type: string @@ -4978,309 +19580,271 @@ components: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|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 - - name - - prompt + - accountIdentifier - status - createdAt - updatedAt + additionalProperties: false example: [] - createdAt: + required: + - total + - items + additionalProperties: false + AgentAccountRegister: + type: object + properties: + accountId: 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: + example: example_id_123 + adcpAgentId: + type: string + example: example_id_123 + status: 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 - - name - - countryCodes - - channelCodes - - brands - - models - - createdAt - - updatedAt - CampaignUpdate: + - accountId + - adcpAgentId + - status + additionalProperties: false + AgentAccountUnregister: type: object properties: - campaignId: + success: + type: boolean + example: true + agentId: type: string example: example_id_123 - name: + required: + - success + - agentId + additionalProperties: false + AgentAccountUpdate: + type: object + properties: + id: type: string - example: Example Name + example: example_id_123 status: type: string example: string - createdAt: + required: + - id + - status + additionalProperties: false + TacticCreate: + type: object + properties: + id: + type: number + example: 100 + 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: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|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: - - campaignId + - id - name - - status + - campaignId + - channelCodes + - countryCodes - createdAt - - updatedAt - CreativeGet: + additionalProperties: false + TacticDelete: + type: object + properties: + success: + type: boolean + example: true + tacticId: + type: number + example: 100 + required: + - success + - tacticId + additionalProperties: false + TacticList: + type: object + properties: + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + items: + type: array + items: + $ref: '#/components/schemas/TacticGetOutput' + example: [] + required: + - total + - items + additionalProperties: false + TacticLinkCampaign: + type: object + properties: + success: + type: boolean + example: true + tacticId: + type: number + example: 100 + campaignId: + type: string + example: example_id_123 + required: + - success + - tacticId + - campaignId + additionalProperties: false + TacticUnlinkCampaign: + type: object + properties: + success: + type: boolean + example: true + tacticId: + type: number + example: 100 + campaignId: + type: string + example: example_id_123 + required: + - success + - tacticId + - campaignId + additionalProperties: false + CreateServiceTokenOutput: type: object properties: - creativeId: + 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 - status: + description: + description: Description of the token purpose type: string example: string - campaignId: + accessClientId: + description: The public client ID portion of the token credentials (safe to log) type: string example: example_id_123 - createdAt: + 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 - updatedAt: + 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: - - creativeId + - id + - customerId - name - - status + - accessClientId + - accessClientSecret - createdAt - - updatedAt - MediaBuyGet: + additionalProperties: false + UpdateServiceTokenOutput: type: object properties: id: - type: string - example: example_id_123 - tacticId: - type: number - example: 100 - customerId: - 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 description: + description: Updated description of the token purpose 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: - type: object - properties: - cpm: - type: number - signalCost: - type: number - totalCpm: - type: number - required: - - cpm - - totalCpm - status: - type: string - example: string - adcp: - type: object - properties: - mediaBuyId: - type: string - status: - type: string - webhookUrl: - type: string - performance: - type: object - properties: - impressions: - type: number - spend: - type: number - clicks: - type: number - lastUpdated: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - required: - - impressions - - spend - - clicks - archivedAt: + expiresAt: + description: ISO 8601 timestamp when the token expires, if 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 - createdAt: + 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 - updatedAt: + required: + - 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: >- @@ -5288,58 +19852,73 @@ components: example: string required: - id - - tacticId - - customerId - - name - - pricing - - status - - createdAt - - updatedAt - TacticGet: + - 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 - prompt: + description: + description: Description of the token purpose type: string example: string - campaignIds: - type: array - items: - type: string - example: [] - channelCodes: - type: array - items: - type: string - example: [] - countryCodes: - type: array - items: - type: string - example: [] - mediaBuyCount: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 + 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: >- @@ -5347,216 +19926,192 @@ components: example: string required: - id + - customerId - name - - channelCodes - - countryCodes + - accessClientId - createdAt - updatedAt - MCPContent: - type: object - properties: - type: - type: string - enum: - - text - example: text - text: - type: string - example: string - required: - - type - - text - additionalProperties: false - BadRequest: - description: Bad request error response - type: object - properties: - error: - type: string - example: string - message: - type: string - example: string - required: - - error - additionalProperties: false - Unauthorized: - description: Unauthorized error response - type: object - properties: - error: - type: string - example: string - message: - type: string - example: string - required: - - error - additionalProperties: false - InternalError: - description: Internal server error response - type: object - properties: - error: - type: string - example: string - message: - type: string - example: string - required: - - error additionalProperties: false - AssetList: + ListServiceTokensOutput: type: object properties: - total: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - items: + tokens: + description: 'Array of service tokens. Note: accessClientSecret is never included in list responses' type: array items: type: object properties: - assetId: + 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 - originalFilename: + userId: + description: User ID if token is scoped to a specific user + type: integer + format: int64 + userEmail: + description: Email of the user who owns this token type: string - assetType: + organizationId: + description: Optional organization identifier for scoping the token type: string - size: - type: number - brandAgentId: + name: + description: Human-readable name of the token type: string - customerId: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - signedUrl: + description: + description: Description of the token purpose type: string - tags: - type: array - items: - 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: - - assetId - - originalFilename - - assetType - - size - - brandAgentId + - id - customerId - - signedUrl + - name + - accessClientId + - createdAt + - updatedAt additionalProperties: false example: [] - required: - - total - - items - additionalProperties: false - BrandAgentList: - type: object - properties: - brandAgents: - type: array - items: - $ref: '#/components/schemas/BrandAgentUpdateOutput' - example: [] - total: + count: + description: Total number of tokens returned type: integer minimum: 0 maximum: 9007199254740991 example: 100 - required: - - brandAgents - - total - additionalProperties: false - BrandAgentDelete: - type: object - properties: - success: - type: boolean - example: true - deletedId: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - required: - - success - - deletedId - additionalProperties: false - BrandStandardsDelete: - type: object - properties: - success: + isAdmin: + description: Whether the requesting user has admin privileges (can see all tokens) type: boolean example: true - id: - type: string - example: example_id_123 - required: - - success - - id - additionalProperties: false - BrandStandardsList: - type: object - properties: - total: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - items: - type: array - items: - $ref: '#/components/schemas/BrandStandardsCreateOutput' - example: [] required: - - total - - items + - tokens + - count + - isAdmin additionalProperties: false - BrandStoryCreate: + SignalGet: type: object properties: - id: - type: string - example: example_id_123 - name: - type: string - example: Example Name - brandAgentId: - type: string - example: example_id_123 - countryCodes: - type: array - items: - type: string - example: [] - channelCodes: - type: array - items: - type: string - example: [] - languages: - type: array - items: - type: string - example: [] - brands: - type: array - items: - type: string - example: [] - currentModel: + signal: type: object properties: id: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + signalId: type: string + adcpAgentId: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 name: type: string - prompt: + description: + nullable: true + type: string + keyType: + nullable: true + type: array + items: + type: string + enum: + - hour + - half_hour + - day + - property + - publisher + - seller + - content_channel + - content_network + - content_show + - content_series + - content_language + - content_genre + - content_rating + - content_livestream + - content_length_min + - content_length_max + - dma + - city + - country + - region + - postal_code + - provider_category + - provider_segment + - device_type + - device_model + - device_make + - operating_system + - co2e_decile + - viewability_decile + - attention_potential_decile + - completion_rate_decile + - maid + - liveramp + - lat_lng_radius + - id5 + - coreid + - yahoo_connect + regions: + nullable: true + type: array + items: + type: string + enum: + - NORAM + - LATAM + - EMEA + - APAC + - ANZ + - GLOBAL + metadata: + nullable: true + type: object + additionalProperties: {} + archivedAt: + 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))$ + createdBy: + nullable: true type: string - status: + updatedBy: nullable: true type: string createdAt: @@ -5571,133 +20126,521 @@ components: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|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 + - signalId + - adcpAgentId - name - - prompt - - status + - description + - keyType + - regions + - metadata + - archivedAt + - createdBy + - updatedBy - createdAt - updatedAt 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))$ - example: string - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - required: - - id - - name - - createdAt - - updatedAt - additionalProperties: false - BrandStoryUpdate: - type: object - properties: - id: - type: string - example: example_id_123 - name: - type: string - example: Example Name - prompt: - type: string - example: string - status: - type: string - example: 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))$ - example: string - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - required: - - id - - name - - createdAt - - updatedAt - additionalProperties: false - BrandStoryDelete: - type: object - properties: - success: - type: boolean - example: true - id: - type: string - example: example_id_123 + access: + type: array + items: + type: object + properties: + id: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + signalId: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + account: + type: string + scope: + type: string + enum: + - PUBLIC + - PROPRIETARY + pricingOptions: + type: array + items: + anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + additionalProperties: false + required: + - view_threshold + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + type: + type: string + enum: + - agent + agentUrl: + type: string + isLive: + type: boolean + deployedAt: + 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))$ + estimatedActivationDurationMinutes: + nullable: true + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + decisioningPlatformSegmentId: + nullable: true + type: string + archivedAt: + 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))$ + 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: + - id + - signalId + - account + - scope + - pricingOptions + - type + - agentUrl + - isLive + - deployedAt + - estimatedActivationDurationMinutes + - decisioningPlatformSegmentId + - archivedAt + - createdAt + - updatedAt + additionalProperties: false + example: [] required: - - success - - id + - signal + - access additionalProperties: false - BrandStoryList: + SignalList: type: object properties: - total: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - items: + signals: type: array items: type: object properties: id: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + signalId: type: string + adcpAgentId: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 name: type: string description: + nullable: true type: string - status: - type: string - type: - type: string - languages: + keyType: + nullable: true type: array items: type: string - currentModel: + enum: + - hour + - half_hour + - day + - property + - publisher + - seller + - content_channel + - content_network + - content_show + - content_series + - content_language + - content_genre + - content_rating + - content_livestream + - content_length_min + - content_length_max + - dma + - city + - country + - region + - postal_code + - provider_category + - provider_segment + - device_type + - device_model + - device_make + - operating_system + - co2e_decile + - viewability_decile + - attention_potential_decile + - completion_rate_decile + - maid + - liveramp + - lat_lng_radius + - id5 + - coreid + - yahoo_connect + regions: + nullable: true + type: array + items: + type: string + enum: + - NORAM + - LATAM + - EMEA + - APAC + - ANZ + - GLOBAL + metadata: + nullable: true type: object - properties: - id: - type: string - name: - type: string - prompt: - type: string - status: - nullable: true - 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: - - id - - name - - prompt - - status - - createdAt - - updatedAt - additionalProperties: false + additionalProperties: {} + archivedAt: + 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))$ + createdBy: + nullable: true + type: string + updatedBy: + nullable: true + type: string createdAt: type: string format: date-time @@ -5708,69 +20651,907 @@ components: format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + access: + type: array + items: + type: object + properties: + id: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + signalId: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + account: + type: string + scope: + type: string + enum: + - PUBLIC + - PROPRIETARY + pricingOptions: + type: array + items: + anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + additionalProperties: false + required: + - view_threshold + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + type: + type: string + enum: + - agent + agentUrl: + type: string + isLive: + type: boolean + deployedAt: + 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))$ + estimatedActivationDurationMinutes: + nullable: true + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + decisioningPlatformSegmentId: + nullable: true + type: string + archivedAt: + 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))$ + 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: + - id + - signalId + - account + - scope + - pricingOptions + - type + - agentUrl + - isLive + - deployedAt + - estimatedActivationDurationMinutes + - decisioningPlatformSegmentId + - archivedAt + - createdAt + - updatedAt + additionalProperties: false required: - id + - signalId + - adcpAgentId - name - - status - - type - - languages + - description + - keyType + - regions + - metadata + - archivedAt + - createdBy + - updatedBy - createdAt - updatedAt + - access additionalProperties: false example: [] - required: - - total - - items - additionalProperties: false - CampaignList: - type: object - properties: - campaigns: - type: array - items: - $ref: '#/components/schemas/CampaignUpdateOutput' - example: [] total: type: integer minimum: 0 maximum: 9007199254740991 example: 100 + limit: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + example: 100 + offset: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + example: 100 required: - - campaigns + - signals - total + - limit + - offset additionalProperties: false - CampaignDelete: - type: object - properties: - success: - type: boolean - example: true - deletedId: - type: string - example: example_id_123 - required: - - success - - deletedId - additionalProperties: false - CampaignGetSummary: - type: object - properties: - campaignId: - type: string - example: example_id_123 - summary: - type: object - additionalProperties: {} - required: - - campaignId - - summary - additionalProperties: false - CampaignListTactics: + SignalDiscover: type: object properties: - tactics: + agentResults: type: array - items: {} + items: + type: object + properties: + agentId: + type: string + agentName: + type: string + success: + type: boolean + signalCount: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + error: + type: string + required: + - agentId + - agentName + - success + - signalCount + additionalProperties: false + example: [] + signals: + type: array + items: + type: object + properties: + signalId: + type: string + name: + type: string + description: + type: string + dataProvider: + type: string + coveragePercentage: + nullable: true + type: number + access: + type: array + items: + type: object + properties: + account: + nullable: true + type: string + scope: + type: string + pricingOptions: + type: array + items: + anyOf: + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - vcpm + currency: + type: string + is_fixed: + type: boolean + enum: + - false + price_guidance: + type: object + properties: + floor: + type: number + p25: + nullable: true + type: number + p50: + nullable: true + type: number + p75: + nullable: true + type: number + p90: + nullable: true + type: number + required: + - floor + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - currency + - is_fixed + - price_guidance + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpc + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpcv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpv + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + view_threshold: + anyOf: + - type: number + - type: object + properties: + duration_seconds: + type: number + required: + - duration_seconds + additionalProperties: false + required: + - view_threshold + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - cpp + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + type: object + properties: + demographic: + type: string + min_points: + nullable: true + type: number + required: + - demographic + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + - parameters + additionalProperties: false + - type: object + properties: + pricing_option_id: + type: string + pricing_model: + type: string + enum: + - flat_rate + rate: + type: number + currency: + type: string + is_fixed: + type: boolean + enum: + - true + parameters: + nullable: true + type: object + properties: + duration_hours: + nullable: true + type: number + sov_percentage: + nullable: true + type: number + loop_duration_seconds: + nullable: true + type: number + min_plays_per_hour: + nullable: true + type: number + venue_package: + nullable: true + type: string + estimated_impressions: + nullable: true + type: number + daypart: + nullable: true + type: string + additionalProperties: false + min_spend_per_package: + nullable: true + type: number + required: + - pricing_option_id + - pricing_model + - rate + - currency + - is_fixed + additionalProperties: false + isLive: + type: boolean + required: + - account + - scope + - pricingOptions + - isLive + additionalProperties: false + regions: + nullable: true + type: array + items: + type: string + enum: + - NORAM + - LATAM + - EMEA + - APAC + - ANZ + - GLOBAL + keyType: + nullable: true + type: array + items: + type: string + enum: + - hour + - half_hour + - day + - property + - publisher + - seller + - content_channel + - content_network + - content_show + - content_series + - content_language + - content_genre + - content_rating + - content_livestream + - content_length_min + - content_length_max + - dma + - city + - country + - region + - postal_code + - provider_category + - provider_segment + - device_type + - device_model + - device_make + - operating_system + - co2e_decile + - viewability_decile + - attention_potential_decile + - completion_rate_decile + - maid + - liveramp + - lat_lng_radius + - id5 + - coreid + - yahoo_connect + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - signalId + - name + - description + - dataProvider + - coveragePercentage + - access + - regions + - keyType + - metadata + additionalProperties: false example: [] total: type: integer @@ -5778,789 +21559,3425 @@ components: maximum: 9007199254740991 example: 100 required: - - tactics + - agentResults + - signals - total additionalProperties: false - CampaignValidateBrief: + BitmapTargetingProfileResponseOutput: type: object properties: - valid: - type: boolean - example: true - feedback: + dimensionName: + description: Targeting dimension name (e.g., country, region, city, device_type) type: string - example: string + example: Example Name + anyOf: + description: Included targeting item keys (e.g., "US", "MX") + type: array + items: + type: string + example: [] + noneOf: + description: Excluded targeting item keys + type: array + items: + type: string + example: [] required: - - valid + - dimensionName + - anyOf + - noneOf additionalProperties: false - ChannelList: + BrandStoryAgentSummaryOutput: type: object properties: - total: - type: integer - minimum: 0 - maximum: 9007199254740991 + id: + type: number example: 100 - items: - type: array - items: - type: object - properties: - channel: - type: string - displayName: - type: string - required: - - channel - - displayName - additionalProperties: false - example: [] + name: + type: string + example: Example Name required: - - total - - items + - id + - name additionalProperties: false - GetCustomerOutput: + BrandStandardsAgentSummaryOutput: type: object properties: id: - description: Unique identifier for the customer type: number example: 100 - company: - description: Company name - type: string - example: string name: - description: Customer display name type: string example: Example Name - active: - description: Whether the customer is currently active - type: boolean - example: true - createdAt: - description: ISO 8601 timestamp when the customer 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: - id - - company - name - - active - - createdAt additionalProperties: false - GetCustomerSeatsOutput: + ProposalCardOutput: + description: Visual card data for rendering proposals in marketplace UI, following ADCP product card pattern type: object properties: - customerId: - description: The customer ID these seats belong to - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - seats: - description: Array of seats belonging to the customer + title: + description: Proposal name/title + example: Premium Display Campaign + type: string + description: + description: What the proposal offers + example: Target premium inventory at $2.50 vCPM with 85% viewability guarantee + type: string + image_carousel: + description: Optional array of image URLs showcasing the approach + example: + - https://example.com/chart1.png + - https://example.com/viz2.png type: array items: - type: object - properties: - id: - description: Unique identifier for the seat - type: string - name: - description: Seat display name - type: string - customerId: - description: Customer ID that owns this seat - type: number - active: - description: Whether the seat is currently active - type: boolean - required: - - id - - name - - customerId - - active - additionalProperties: false - example: [] - count: - description: Total number of seats returned - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - required: - - customerId - - seats - - count + type: string + format: uri + details: + description: Markdown-formatted detailed execution plan and specifications + example: |- + ## Execution Strategy + + We will target... + type: string + pricing_summary: + description: Pricing information for comparison + type: object + properties: + method: + description: Human-readable pricing method + example: 15% revenue share + type: string + budget_capacity: + description: Human-readable budget capacity + example: $50,000 maximum + type: string + estimated_cost: + description: Optional estimated cost calculation + example: $7,500 estimated fee + type: string + required: + - method + - budget_capacity + additionalProperties: false + required: + - title + - description + - pricing_summary additionalProperties: false - CreativeAssign: + BudgetRangeOutput: + description: Budget range for campaign planning type: object properties: - success: - type: boolean - example: true - creativeId: - type: string - example: example_id_123 - campaignId: + min: + description: Minimum budget available + example: 50000 + type: number + minimum: 0 + exclusiveMinimum: true + max: + description: Maximum budget available + example: 150000 + type: number + minimum: 0 + exclusiveMinimum: true + currency: + description: Currency for budget (ISO 4217 code) + example: USD + default: USD type: string - example: example_id_123 + minLength: 3 + maxLength: 3 required: - - success - - creativeId - - campaignId + - min + - max + - currency additionalProperties: false - CreativeDelete: + AvailableBrandAgentOutput: type: object properties: - success: - type: boolean - example: true id: + type: number + example: 100 + name: type: string - example: example_id_123 + example: Example Name required: - - success - id + - name additionalProperties: false - CreativeList: + BitmapTargetingProfileOutput: type: object properties: - items: + dimensionName: + description: >- + Targeting dimension name (e.g., country, region, city, device_type, browser, operating_system, language, + day_part) + type: string + example: Example Name + anyOf: + description: Include targeting item IDs + default: [] type: array items: - $ref: '#/components/schemas/CreativeGetOutput' - example: [] - total: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 + anyOf: + - type: integer + format: int64 + - type: string + - type: number + noneOf: + description: Exclude targeting item IDs + default: [] + type: array + items: + anyOf: + - type: integer + format: int64 + - type: string + - type: number required: - - items - - total + - dimensionName + - anyOf + - noneOf additionalProperties: false - CountryList: + BrandAgentUpdateOutput: type: object properties: - total: + id: type: integer - minimum: 0 + exclusiveMinimum: true maximum: 9007199254740991 example: 100 - items: - type: array - items: - type: object - properties: - key: - type: string - displayName: - type: string - required: - - key - - displayName - additionalProperties: false - example: [] - required: - - total - - items - additionalProperties: false - LanguageList: - type: object - properties: - total: + name: + type: string + example: Example Name + description: + type: string + example: string + manifestUrl: + type: string + format: uri + example: https://example.com + customerId: type: integer - minimum: 0 + exclusiveMinimum: true maximum: 9007199254740991 example: 100 - items: + seatId: + nullable: true + type: integer + format: int64 + example: 100 + countryCodes: type: array items: - type: object - properties: - key: - type: string - displayName: - type: string - required: - - key - - displayName - additionalProperties: false + type: string example: [] + 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: - - total - - items + - id + - name + - customerId + - createdAt + - updatedAt additionalProperties: false - MediaBuyList: + BrandStandardsCreateOutput: type: object properties: - total: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - items: + id: + type: string + example: example_id_123 + name: + type: string + example: Example Name + description: + type: string + example: string + countryCodes: type: array items: - $ref: '#/components/schemas/MediaBuyGetOutput' + type: string example: [] - required: - - total - - items - additionalProperties: false - OutcomesAgentGetProposals: - type: object - properties: - total: - description: Total number of proposals returned - type: number - example: 100 - proposals: - description: List of proposals from outcome agents + channelCodes: + type: array + items: + type: string + example: [] + brands: + type: array + items: + type: string + example: [] + models: type: array items: type: object properties: id: - description: Database ID of the proposal - type: string - proposalId: - description: Outcome agent generated proposal ID - type: string - outcomeAgentId: - description: ID of the outcome agent that created this proposal - type: string - outcomeAgentName: - description: Name of the outcome agent type: string - execution: - description: How the proposal would be executed + name: type: string - budgetCapacity: - description: Maximum budget the agent can manage - type: number - pricing: - description: Pricing model for the proposal - type: object - properties: - method: - type: string - enum: - - revshare - - cost_per_unit - rate: - type: number - pricing_model: - type: string - enum: - - cpm - - cpc - - cpa - - cpv - - cpcv - currency: - type: string - required: - - method - - rate - - currency - additionalProperties: false - sku: - description: Tactic type identifier + prompt: type: string status: - description: Current status of the proposal + nullable: true type: string - enum: - - pending - - accepted - - rejected - - expired - proposalCard: - description: Visual card data for rendering in UI - allOf: - - $ref: '#/components/schemas/ProposalCardOutput' createdAt: - description: When the proposal 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))$ - required: - - id - - proposalId - - outcomeAgentId - - outcomeAgentName - - execution - - budgetCapacity - - pricing + 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: + - id + - name + - prompt - status - createdAt + - updatedAt additionalProperties: false example: [] + 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: - - total - - proposals + - id + - name + - countryCodes + - channelCodes + - brands + - models + - createdAt + - updatedAt additionalProperties: false - OutcomesAgentAcceptProposal: + CampaignUpdateOutput: type: object properties: - tacticId: - description: ID of the created tactic/strategy + campaignId: type: string example: example_id_123 - tacticName: - description: Name of the created tactic (user-provided or auto-generated) + name: type: string example: Example Name - proposalId: - description: ID of the accepted proposal + status: type: string - example: example_id_123 - outcomeAgentId: - description: ID of the outcome agent managing this tactic + example: string + createdAt: type: string - example: example_id_123 - acknowledged: - description: Whether the outcome agent acknowledged the assignment - type: boolean - example: true - message: - description: Optional message from the outcome agent + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|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: - - tacticId - - tacticName - - proposalId - - outcomeAgentId - - acknowledged + - campaignId + - name + - status + - createdAt + - updatedAt additionalProperties: false - OutcomesAgentListTactics: + CreativeGetOutput: type: object properties: - outcomeAgentId: - description: ID of the outcome agent + creative_id: type: string example: example_id_123 - outcomeAgentName: - description: Name of the outcome agent + name: type: string example: Example Name - total: - description: Total number of tactics managed by this agent - type: number - example: 100 - tactics: - description: List of tactics managed by this outcome agent + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true type: array items: type: object properties: - tacticId: - description: ID of the tactic (strategy) - type: string - tacticName: - description: Name of the tactic - type: string - proposalId: - description: ID of the original proposal - type: string - acceptedAt: - description: When the proposal was accepted (ISO 8601) + name: type: string - campaignId: - description: Campaign ID if linked to a campaign + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: nullable: true type: string required: - - tacticId - - tacticName - - proposalId - - acceptedAt - - campaignId + - name additionalProperties: false example: [] + tags: + nullable: true + type: array + items: + type: string + example: [] + approved: + nullable: true + type: boolean + example: true + weight: + nullable: true + type: number + example: 100 + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + example: [] + status: + description: Internal creative status + type: string + example: string + campaign_id: + description: Associated campaign ID + type: string + example: example_id_123 + created_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + updated_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string required: - - outcomeAgentId - - outcomeAgentName - - total - - tactics + - creative_id + - name + - format_id + - assets + - status + - created_at + - updated_at additionalProperties: false - MediaProductList: + MediaBuyGetOutput: type: object properties: - total: + media_buy_id: + description: ADCP media buy identifier + type: string + example: example_id_123 + tactic_id: + description: Internal tactic ID type: integer - minimum: 0 + exclusiveMinimum: true maximum: 9007199254740991 example: 100 - items: + 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: - id: + product_id: + description: ADCP product identifier type: string - productId: + sales_agent_id: type: string - name: + sales_agent_name: type: string - salesAgent: + budget: + description: ADCP budget field + type: number + pacing: + description: ADCP pacing field type: string - salesAgentId: + enum: + - asap + - even + - front_loaded + pricing_option_id: type: string - salesAgentName: + bid_price: + type: number + display_order: + type: number + creative_formats: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + required: + - product_id + - sales_agent_id + additionalProperties: false + example: [] + packages: + description: Post-execution ADCP packages (enriched) + type: array + items: + type: object + properties: + package_id: type: string - deliveryType: + buyer_ref: + nullable: true type: string - enum: - - guaranteed - - non_guaranteed - format: + product_id: + nullable: true type: string - creativeFormats: + budget: + nullable: true + type: number + pacing: + nullable: true anyOf: - - type: array + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + pricing_option_id: + nullable: true + type: string + bid_price: + nullable: true + type: number + impressions: + nullable: true + type: number + targeting_overlay: + nullable: true + type: object + properties: + geo_country_any_of: + nullable: true + type: array + items: + type: string + geo_region_any_of: + nullable: true + type: array + items: + type: string + geo_metro_any_of: + nullable: true + type: array items: type: string - - type: array + geo_postal_code_any_of: + nullable: true + type: array items: + type: string + axe_include_segment: + nullable: true + type: string + axe_exclude_segment: + nullable: true + type: string + frequency_cap: + nullable: true + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + additionalProperties: false + additionalProperties: false + creative_assignments: + nullable: true + type: array + items: + type: object + properties: + creative_id: + type: string + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - creative_id + additionalProperties: false + format_ids_to_provide: + nullable: true + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + paused: + nullable: true + type: boolean + ext: + nullable: true + type: object + additionalProperties: {} + product_ids: + description: Array of product IDs (enriched from joins) + type: array + items: + type: string + creatives: + description: Full creative objects (enriched from joins) + type: array + items: + type: object + properties: + creative_id: + type: string + name: + type: string + format_id: type: object properties: agent_url: type: string id: type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number required: - agent_url - id additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + status: + description: Internal creative status (not in ADCP protocol) + type: string + required: + - creative_id + - name + - format_id + - assets + - status + additionalProperties: false + created_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + updated_at: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + sales_agent_id: + type: string + sales_agent_name: + type: string + creative_formats: + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + required: + - package_id + - creatives + - created_at + - updated_at + additionalProperties: false + example: [] + creatives: + description: Full creative objects (enriched from joins) + type: array + items: + type: object + properties: + creative_id: + type: string + name: + type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + status: + description: Internal creative status (not in ADCP protocol) + type: string required: - - id - - productId + - creative_id - name - - deliveryType + - format_id + - assets + - status additionalProperties: false example: [] - required: - - total - - items - additionalProperties: false - AgentGet: - anyOf: - - type: object + adcp: + description: ADCP-specific metadata (from execute response) + type: object properties: - agentId: - type: string - name: - type: string - type: + media_buy_id: 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: + webhook_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))$ - required: - - agentId - - name - - type - - status - - relationship - - endpointUrl - - protocol - - authenticationType - - createdAt - - updatedAt additionalProperties: false - - type: object + performance: + description: Performance metrics (from reporting) + 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: + 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))$ - customerAccountCount: - type: integer - minimum: 0 - maximum: 9007199254740991 required: - - agentId - - name - - type - - status - - relationship - - endpointUrl - - protocol - - authenticationType - - createdAt - - updatedAt - - customerAccountCount + - impressions + - spend + - clicks 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 - 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 - status: - type: string - relationship: - type: string - endpointUrl: - type: string - protocol: - type: string - customerAccountCount: - type: integer - minimum: 0 - maximum: 9007199254740991 - required: - - agentId - - name - - type - - status - - relationship - - endpointUrl - - protocol - - customerAccountCount - additionalProperties: false - example: [] - required: - - total - - items - additionalProperties: false - TacticList: - type: object - properties: - total: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - items: - type: array - items: - $ref: '#/components/schemas/TacticGetOutput' - example: [] - required: - - total - - items - 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! + 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 - expiresAt: - description: ISO 8601 timestamp when the token expires, if set + 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 - createdAt: - description: ISO 8601 timestamp when the token was created + 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 - - customerId + - media_buy_id + - tactic_id + - customer_id - name - - accessClientId - - accessClientSecret - - createdAt + - status + - created_at + - updated_at additionalProperties: false - UpdateServiceTokenOutput: + TacticGetOutput: type: object properties: id: - description: Unique identifier for the service token - type: integer - format: int64 + type: number example: 100 name: - description: Updated human-readable name of the token type: string example: Example Name - description: - description: Updated description of the token purpose + prompt: type: string example: string - expiresAt: - description: ISO 8601 timestamp when the token expires, if updated + campaignIds: + type: array + items: + type: string + example: [] + channelCodes: + type: array + items: + type: string + example: [] + countryCodes: + type: array + items: + type: string + example: [] + mediaBuyCount: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + targetingCount: + description: Count of targeting dimensions (channels, countries, bitmap profiles, brand agents) + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + bitmapTargetingProfiles: + description: Bitmap targeting profiles with targeting item keys for UI display + type: array + items: + $ref: '#/components/schemas/BitmapTargetingProfileResponseOutput' + example: [] + brandStoryAgents: + description: Brand story agents associated with this tactic + type: array + items: + $ref: '#/components/schemas/BrandStoryAgentSummaryOutput' + example: [] + brandStandardsAgents: + description: Brand standards agents associated with this tactic + type: array + items: + $ref: '#/components/schemas/BrandStandardsAgentSummaryOutput' + example: [] + 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: - 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 - required: - - 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: >- @@ -6568,73 +24985,52 @@ components: example: string required: - id - - archivedAt + - name + - channelCodes + - countryCodes + - createdAt + - updatedAt additionalProperties: false - GetServiceTokenOutput: + BrandAgentGet: 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 + exclusiveMinimum: true + maximum: 9007199254740991 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 + manifestUrl: 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 + format: uri + example: https://example.com + customerId: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + seatId: + nullable: true + type: integer + format: int64 + example: 100 + countryCodes: + type: array + items: + type: string + example: [] 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: >- @@ -6642,404 +25038,2000 @@ components: example: string required: - id - - customerId - name - - accessClientId + - customerId - createdAt - updatedAt additionalProperties: false - ListServiceTokensOutput: + BrandAgentCreate: type: object properties: - 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 + id: type: integer - minimum: 0 + exclusiveMinimum: true maximum: 9007199254740991 example: 100 + name: + type: string + example: Example Name + description: + type: string + example: string + manifestUrl: + type: string + format: uri + example: https://example.com + customerId: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + seatId: + nullable: true + type: integer + format: int64 + example: 100 + countryCodes: + type: array + items: + type: string + example: [] + createdAt: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|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: - - tokens - - count + - id + - name + - customerId + - createdAt + - updatedAt additionalProperties: false - ProposalCardOutput: - description: Visual card data for rendering proposals in marketplace UI, following ADCP product card pattern + CampaignCreate: type: object properties: - title: - description: Proposal name/title - example: Premium Display Campaign + campaignId: type: string - description: - description: What the proposal offers - example: Target premium inventory at $2.50 vCPM with 85% viewability guarantee + example: example_id_123 + name: type: string - image_carousel: - description: Optional array of image URLs showcasing the approach - example: - - https://example.com/chart1.png - - https://example.com/viz2.png - type: array - items: - type: string - format: uri - details: - description: Markdown-formatted detailed execution plan and specifications - example: |- - ## Execution Strategy - - We will target... + example: Example Name + status: type: string - pricing_summary: - description: Pricing information for comparison + example: 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))$ + 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: + - campaignId + - name + - status + - createdAt + - updatedAt + additionalProperties: false + CampaignGet: + type: object + properties: + campaignId: + type: string + example: example_id_123 + name: + type: string + example: Example Name + status: + type: string + example: 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))$ + 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: + - campaignId + - name + - status + - createdAt + - updatedAt + additionalProperties: false + CreativeCreate: + type: object + properties: + creative_id: + type: string + example: example_id_123 + name: + type: string + example: Example Name + format_id: type: object properties: - method: - description: Human-readable pricing method - example: 15% revenue share + agent_url: type: string - budget_capacity: - description: Human-readable budget capacity - example: $50,000 maximum - type: string - estimated_cost: - description: Optional estimated cost calculation - example: $7,500 estimated fee + id: type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number required: - - method - - budget_capacity + - agent_url + - id additionalProperties: false - required: - - title - - description - - pricing_summary - additionalProperties: false - BudgetRangeOutput: - description: Budget range for campaign planning - type: object - properties: - min: - description: Minimum budget available - example: 50000 - type: number - minimum: 0 - exclusiveMinimum: true - max: - description: Maximum budget available - example: 150000 + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + example: [] + tags: + nullable: true + type: array + items: + type: string + example: [] + approved: + nullable: true + type: boolean + example: true + weight: + nullable: true type: number - minimum: 0 - exclusiveMinimum: true - currency: - description: Currency for budget (ISO 4217 code) - example: USD - default: USD - type: string - minLength: 3 - maxLength: 3 - required: - - min - - max - - currency - additionalProperties: false - BrandAgentUpdateOutput: - type: object - properties: - id: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 example: 100 - name: - type: string - example: Example Name - description: + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + example: [] + status: + description: Internal creative status type: string example: string - manifestUrl: + campaign_id: + description: Associated campaign ID type: string - format: uri - example: https://example.com - customerId: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - createdAt: + 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 - 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 + - creative_id - name - - customerId - - createdAt - - updatedAt + - format_id + - assets + - status + - created_at + - updated_at additionalProperties: false - BrandStandardsCreateOutput: + CreativeUpdate: type: object properties: - id: + creative_id: type: string example: example_id_123 name: type: string example: Example Name - description: - type: string - example: string - countryCodes: - type: array - items: - type: string - example: [] - channelCodes: - type: array - items: - type: string - example: [] - brands: - type: array - items: - type: string - example: [] - models: + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true type: array items: type: object properties: - id: - type: string name: type: string - prompt: - type: string - status: + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: nullable: true 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: - - id - name - - prompt - - status - - createdAt - - updatedAt additionalProperties: false example: [] - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - required: - - id - - name - - countryCodes - - channelCodes - - brands - - models - - createdAt - - updatedAt - additionalProperties: false - CampaignUpdateOutput: - type: object - properties: - campaignId: - type: string - example: example_id_123 - name: - type: string - example: Example Name - status: - type: string - example: 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))$ - 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: - - campaignId - - name - - status - - createdAt - - updatedAt - additionalProperties: false - CreativeGetOutput: - type: object - properties: - creativeId: - type: string - example: example_id_123 - name: - type: string - example: Example Name + tags: + nullable: true + type: array + items: + type: string + example: [] + approved: + nullable: true + type: boolean + example: true + weight: + nullable: true + type: number + example: 100 + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + example: [] status: + description: Internal creative status type: string example: string - campaignId: + campaign_id: + description: Associated campaign ID type: string example: example_id_123 - createdAt: + created_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string - updatedAt: + updated_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string required: - - creativeId + - creative_id - name + - format_id + - assets - status - - createdAt - - updatedAt + - created_at + - updated_at additionalProperties: false - MediaBuyGetOutput: + 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 @@ -7048,76 +27040,1058 @@ components: type: string id: type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number required: - agent_url - id additionalProperties: false required: - - mediaProductId - - salesAgentId + - product_id + - sales_agent_id additionalProperties: false example: [] packages: + description: Post-execution ADCP packages (enriched) type: array items: type: object properties: - packageId: + package_id: + type: string + buyer_ref: + nullable: true + type: string + product_id: + nullable: true + type: string + budget: + nullable: true + type: number + pacing: + nullable: true + anyOf: + - type: string + enum: + - even + - type: string + enum: + - asap + - type: string + enum: + - front_loaded + pricing_option_id: + nullable: true type: string - productIds: + bid_price: + nullable: true + type: number + impressions: + nullable: true + type: number + targeting_overlay: + nullable: true + type: object + properties: + geo_country_any_of: + nullable: true + type: array + items: + type: string + geo_region_any_of: + nullable: true + type: array + items: + type: string + geo_metro_any_of: + nullable: true + type: array + items: + type: string + geo_postal_code_any_of: + nullable: true + type: array + items: + type: string + axe_include_segment: + nullable: true + type: string + axe_exclude_segment: + nullable: true + type: string + frequency_cap: + nullable: true + type: object + properties: + suppress_minutes: + type: number + required: + - suppress_minutes + additionalProperties: false + additionalProperties: false + creative_assignments: + nullable: true + type: array + items: + type: object + properties: + creative_id: + type: string + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + required: + - creative_id + additionalProperties: false + format_ids_to_provide: + nullable: true + type: array + items: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + paused: + nullable: true + type: boolean + ext: + nullable: true + type: object + additionalProperties: {} + product_ids: + description: Array of product IDs (enriched from joins) type: array items: type: string - impressions: - type: number - budget: - type: number - targetingOverlay: {} creatives: + description: Full creative objects (enriched from joins) type: array items: type: object properties: - creativeId: + creative_id: type: string name: type: string - formatId: - type: string - mediaUrl: - type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 status: + description: Internal creative status (not in ADCP protocol) type: string required: - - creativeId + - creative_id - name - - formatId - - mediaUrl + - format_id + - assets - status additionalProperties: false - createdAt: + created_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - updatedAt: + updated_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - salesAgentId: + 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 @@ -7126,71 +28100,924 @@ components: type: string id: type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number required: - agent_url - id additionalProperties: false required: - - packageId - - productIds - - impressions - - budget - - targetingOverlay + - package_id - creatives - - createdAt - - updatedAt + - created_at + - updated_at additionalProperties: false example: [] creatives: + description: Full creative objects (enriched from joins) type: array items: type: object properties: - creativeId: + creative_id: type: string name: type: string - formatId: - type: string - mediaUrl: - type: string + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + additionalProperties: false + - allOf: + - type: object + properties: + width: + type: number + height: + type: number + required: + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + url: + type: string + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + additionalProperties: false + - type: object + properties: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 status: + description: Internal creative status (not in ADCP protocol) type: string required: - - creativeId + - creative_id - name - - formatId - - mediaUrl + - format_id + - assets - status additionalProperties: false example: [] - pricing: - type: object - properties: - cpm: - type: number - signalCost: - type: number - totalCpm: - type: number - required: - - cpm - - totalCpm - additionalProperties: false - status: - type: string - example: string adcp: + description: ADCP-specific metadata (from execute response) type: object properties: - mediaBuyId: + media_buy_id: type: string status: type: string - webhookUrl: + webhook_url: type: string additionalProperties: false performance: + description: Performance metrics (from reporting) type: object properties: impressions: @@ -7199,7 +29026,7 @@ components: type: number clicks: type: number - lastUpdated: + last_updated: type: string format: date-time pattern: >- @@ -7209,35 +29036,38 @@ 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: + TacticUpdate: type: object properties: id: @@ -7269,55 +29099,30 @@ components: minimum: 0 maximum: 9007199254740991 example: 100 - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - archivedAt: - 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 - - name - - channelCodes - - countryCodes - - createdAt - - updatedAt - additionalProperties: false - BrandAgentGet: - type: object - properties: - id: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - name: - type: string - example: Example Name - description: - type: string - example: string - manifestUrl: - type: string - format: uri - example: https://example.com - customerId: + targetingCount: + description: Count of targeting dimensions (channels, countries, bitmap profiles, brand agents) type: integer - exclusiveMinimum: true + minimum: 0 maximum: 9007199254740991 example: 100 + bitmapTargetingProfiles: + description: Bitmap targeting profiles with targeting item keys for UI display + type: array + items: + $ref: '#/components/schemas/BitmapTargetingProfileResponseOutput' + example: [] + brandStoryAgents: + description: Brand story agents associated with this tactic + type: array + items: + $ref: '#/components/schemas/BrandStoryAgentSummaryOutput' + example: [] + brandStandardsAgents: + description: Brand standards agents associated with this tactic + type: array + items: + $ref: '#/components/schemas/BrandStandardsAgentSummaryOutput' + example: [] createdAt: type: string format: date-time @@ -7330,43 +29135,7 @@ components: pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|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 - - name - - customerId - - createdAt - - updatedAt - additionalProperties: false - BrandAgentCreate: - type: object - properties: - id: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - name: - type: string - example: Example Name - description: - type: string - example: string - manifestUrl: - type: string - format: uri - example: https://example.com - customerId: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - example: string - updatedAt: + archivedAt: type: string format: date-time pattern: >- @@ -7375,137 +29144,8 @@ components: required: - id - name - - customerId - - createdAt - - updatedAt - additionalProperties: false - CampaignCreate: - type: object - properties: - campaignId: - type: string - example: example_id_123 - name: - type: string - example: Example Name - status: - type: string - example: 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))$ - 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: - - campaignId - - name - - status - - createdAt - - updatedAt - additionalProperties: false - CampaignGet: - type: object - properties: - campaignId: - type: string - example: example_id_123 - name: - type: string - example: Example Name - status: - type: string - example: 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))$ - 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: - - campaignId - - name - - status - - createdAt - - updatedAt - additionalProperties: false - CreativeCreate: - 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 - CreativeUpdate: - 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 + - channelCodes + - countryCodes - createdAt - updatedAt additionalProperties: false diff --git a/src/types/partner-api.ts b/src/types/partner-api.ts index 85ffea6..086ff45 100644 --- a/src/types/partner-api.ts +++ b/src/types/partner-api.ts @@ -39,34 +39,6 @@ export interface paths { */ post: operations['creative_sync_sales_agents']; }; - '/media-buy-create': { - /** - * Create media buy - * @description Create a new media buy with budget, targeting, and creative specifications. - */ - post: operations['media_buy_create']; - }; - '/media-buy-update': { - /** - * Update media buy - * @description Update an existing media buy with new budget, targeting, or creative assignments. - */ - post: operations['media_buy_update']; - }; - '/media-buy-delete': { - /** - * Delete media buy - * @description Delete a media buy and cancel any active placements. - */ - post: operations['media_buy_delete']; - }; - '/media-buy-execute': { - /** - * Execute media buy - * @description Execute a media buy, sending it to the configured sales agents for placement. - */ - post: operations['media_buy_execute']; - }; '/media-buy-get': { /** * Get media buy @@ -123,13 +95,6 @@ export interface paths { */ post: operations['media_product_discover']; }; - '/media-product-save': { - /** - * Save media product - * @description Save a discovered media product for future use in media buys. - */ - post: operations['media_product_save']; - }; '/media-product-list': { /** * List media products @@ -179,27 +144,6 @@ export interface paths { */ post: operations['agent_update']; }; - '/tactic-create': { - /** - * Create tactic - * @description Create a new tactic defining how to achieve campaign objectives. - */ - post: operations['tactic_create']; - }; - '/tactic-update': { - /** - * Update tactic - * @description Update an existing tactic with new targeting, budget, or creative requirements. - */ - post: operations['tactic_update']; - }; - '/tactic-delete': { - /** - * Delete tactic - * @description Delete a tactic and all associated media buys. - */ - post: operations['tactic_delete']; - }; '/tactic-get': { /** * Get tactic @@ -214,20 +158,6 @@ export interface paths { */ post: operations['tactic_list']; }; - '/tactic-link-campaign': { - /** - * Link tactic to campaign - * @description Link a tactic to a campaign. - */ - post: operations['tactic_link_campaign']; - }; - '/tactic-unlink-campaign': { - /** - * Unlink tactic from campaign - * @description Unlink a tactic from a campaign. - */ - post: operations['tactic_unlink_campaign']; - }; '/webhook-register': { /** * Register webhook @@ -298,12 +228,83 @@ export interface paths { */ post: operations['customer_get_seats']; }; + '/signal-create': { + /** + * Register a signal + * @description Register a new signal from a signals agent. Signals represent audience segments or data signals that can be used for targeting. + */ + post: operations['signal_create']; + }; + '/signal-get': { + /** + * Get signal details + * @description Get detailed information about a specific signal including its access configurations and regions. + */ + post: operations['signal_get']; + }; + '/signal-update': { + /** + * Update a signal + * @description Update an existing signal with new information, regions, or access configurations. + */ + post: operations['signal_update']; + }; + '/signal-delete': { + /** + * Delete a signal + * @description Delete (archive) a signal. This soft-deletes the signal and all associated access records. + */ + post: operations['signal_delete']; + }; + '/signal-list': { + /** + * List signals + * @description List signals with optional filtering by agent, scope, live status, and account. + */ + post: operations['signal_list']; + }; + '/signal-discover': { + /** + * Discover signals + * @description Discover available signals in the marketplace. Returns signals that are accessible to the buyer based on public availability or proprietary access. + */ + post: operations['signal_discover']; + }; } export type webhooks = Record; export interface components { schemas: { + BitmapTargetingProfileResponse: { + /** + * @description Targeting dimension name (e.g., country, region, city, device_type) + * @example Example Name + */ + dimensionName: string; + /** + * @description Included targeting item keys (e.g., "US", "MX") + * @example [] + */ + anyOf: string[]; + /** + * @description Excluded targeting item keys + * @example [] + */ + noneOf: string[]; + }; + BrandStoryAgentSummary: { + /** @example 100 */ + id: number; + /** @example Example Name */ + name: string; + }; + BrandStandardsAgentSummary: { + /** @example 100 */ + id: number; + /** @example Example Name */ + name: string; + }; ListChannelsInput: Record; GetCustomerInput: { /** @@ -321,110 +322,22 @@ export interface components { }; SyncSalesAgentsInput: { /** @example example_id_123 */ - creativeId: string; - }; - ListCountriesInput: Record; - ListLanguagesInput: Record; - CreateMediaBuyInput: { - /** @example 100 */ - tacticId: number; - /** @example example_id_123 */ - agentId: string; - /** @example Example Name */ - name: string; - /** @example string */ - description?: string; - /** @example [] */ - products: { - mediaProductId: string; - budgetAmount: number; - budgetCurrency?: string; - pricingCpm?: number; - pricingSignalCost?: number; - displayOrder?: number; - creatives?: { - creative_id: string; - name: string; - format_id: - | string - | { - agent_url: string; - id: string; - }; - assets?: { - [key: string]: { - url: string; - width?: number; - height?: number; - }; - }; - click_url?: string; - }[]; - }[]; - /** @example [] */ - creatives?: { - creative_id: string; - name: string; - format_id: - | string - | { - agent_url: string; - id: string; - }; - assets?: { - [key: string]: { - url: string; - width?: number; - height?: number; - }; - }; - click_url?: string; - }[]; - }; - UpdateMediaBuyInput: { - /** @example example_id_123 */ - mediaBuyId: string; - /** @example Example Name */ - name?: string; - /** @example string */ - description?: string; + creative_id: string; /** - * @example DRAFT - * @enum {string} + * @description Enable debug mode to return full ADCP request/response logs for troubleshooting + * @example true */ - status?: - | 'DRAFT' - | 'PENDING_APPROVAL' - | 'ACTIVE' - | 'PAUSED' - | 'COMPLETED' - | 'FAILED' - | 'REJECTED'; - /** @example [] */ - creativeIds?: string[]; - /** @example [] */ - packages?: { - packageId: string; - creativeIds: string[]; - }[]; - }; - DeleteMediaBuyInput: { - /** @example example_id_123 */ - mediaBuyId: string; - /** @example true */ - confirm: boolean; - }; - ExecuteMediaBuyInput: { - /** @example example_id_123 */ - mediaBuyId: string; + debug?: boolean; }; + ListCountriesInput: Record; + 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} @@ -436,7 +349,8 @@ export interface components { | 'PAUSED' | 'COMPLETED' | 'FAILED' - | 'REJECTED'; + | 'REJECTED' + | 'ARCHIVED'; /** @example 100 */ take?: number; /** @example 100 */ @@ -444,9 +358,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 +409,14 @@ export interface components { isFixedPrice?: boolean; /** @description Filter by format types */ formatTypes?: ('video' | 'display' | 'audio')[]; + /** @description Filter by specific structured format IDs (e.g., display_300x250_image). More precise than formatTypes. */ + formatIds?: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; /** @description Only return products accepting IAB standard formats */ standardFormatsOnly?: boolean; /** @description Minimum exposures/impressions needed for measurement validity */ @@ -511,53 +433,6 @@ export interface components { */ saveToDatabase?: boolean; }; - SaveProductInput: { - /** @example example_id_123 */ - productId: 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; - }[]; - /** @example [] */ - supportedTargeting?: string[]; - /** @example example_id_123 */ - adcpAgentId?: string; - }; ListProductsInput: { /** @example 100 */ take?: number; @@ -577,11 +452,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 +486,7 @@ export interface components { * @example SALES * @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; /** * @description Agent name * @example Example Name @@ -674,6 +549,23 @@ export interface components { token: string; } | Record; + /** + * @description Reporting type for SALES agents: WEBHOOK (default), BUCKET, or POLLING. Defaults to WEBHOOK if not specified. + * @example WEBHOOK + * @enum {string} + */ + reportingType?: 'WEBHOOK' | 'BUCKET' | 'POLLING'; + /** + * @description Reporting polling cadence for SALES agents (required only when reportingType is POLLING): DAILY or MONTHLY + * @example DAILY + * @enum {string} + */ + reportingPollingCadence?: 'DAILY' | 'MONTHLY'; + /** + * @description The seat ID to associate the agent with + * @example 100 + */ + seatId: number; }; UnregisterAgentInput: { /** @@ -745,61 +637,18 @@ export interface components { token: string; } | Record; - }; - CreateTacticInput: { - /** @example example_id_123 */ - campaignId: string; - /** @example Example Name */ - name: string; - /** @example string */ - prompt?: string; - /** @example [] */ - channelCodes?: ('ctv' | 'video' | 'display' | 'app' | 'social')[]; - /** @example [] */ - countryCodes?: string[]; /** - * @description Language codes - * @example [] + * @description Reporting type for SALES agents: WEBHOOK (default), BUCKET, or POLLING + * @example WEBHOOK + * @enum {string} */ - languages?: string[]; - /** @example [] */ - availableBrandStandards?: { - id: number; - name: string; - }[]; - /** @example [] */ - availableBrandStory?: { - id: number; - name: string; - }[]; - }; - UpdateTacticInput: { - /** @example 100 */ - tacticId: number; - /** @example Example Name */ - name?: string; - /** @example string */ - prompt?: string; - /** @example [] */ - channelCodes?: ('ctv' | 'video' | 'display' | 'app' | 'social')[]; - /** @example [] */ - countryCodes?: string[]; - /** @example [] */ - availableBrandStandards?: { - id: number; - name: string; - }[]; - /** @example [] */ - availableBrandStory?: { - id: number; - name: string; - }[]; - }; - DeleteTacticInput: { - /** @example 100 */ - tacticId: number; - /** @example true */ - confirm: boolean; + reportingType?: 'WEBHOOK' | 'BUCKET' | 'POLLING'; + /** + * @description Reporting polling cadence for SALES agents (required only when reportingType is POLLING): DAILY or MONTHLY + * @example DAILY + * @enum {string} + */ + reportingPollingCadence?: 'DAILY' | 'MONTHLY'; }; GetTacticInput: { /** @example 100 */ @@ -813,18 +662,6 @@ export interface components { /** @example 100 */ skip?: number; }; - LinkCampaignToTacticInput: { - /** @example 100 */ - tacticId: number; - /** @example example_id_123 */ - campaignId: string; - }; - UnlinkCampaignFromTacticInput: { - /** @example 100 */ - tacticId: number; - /** @example example_id_123 */ - campaignId: string; - }; RegisterWebhookInput: { /** @example 100 */ brandAgentId?: number; @@ -896,6 +733,11 @@ export interface components { * @example Example Name */ seatName?: string; + /** + * @description User ID to associate with the token. Required for SuperAdmins creating tokens for other customers. If not provided, defaults to the authenticated user. + * @example 100 + */ + userId?: number; }; UpdateServiceTokenInput: { /** @@ -960,103 +802,1270 @@ export interface components { */ userId?: number; }; - MediaBuyGet: { - /** @example example_id_123 */ - id: string; - /** @example 100 */ - tacticId: number; + RegisterSignalInput: { /** @example 100 */ - customerId: number; + adcpAgentId: number; + /** @example example_id_123 */ + signalId: string; /** @example Example Name */ name: string; /** @example string */ description?: string; /** @example [] */ - products?: { - mediaProductId: string; - salesAgentId: string; - salesAgentName?: string; - budgetAmount?: number; - budgetCurrency?: string; - pricingCpm?: number; - pricingSignalCost?: number; - displayOrder?: number; - creativeFormats?: { - agent_url: string; - id: string; - }[]; - }[]; - /** @example [] */ - packages?: { - packageId: string; - productIds: string[]; - impressions: number; - budget: number; - targetingOverlay: unknown; - creatives: { - creativeId: string; - name: string; - formatId: string; - mediaUrl: string; - status: string; - }[]; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - updatedAt: string; - salesAgentId?: string; - salesAgentName?: string; - pricingCpm?: number; - pricingSignalCost?: number; - bidPrice?: number; - pricingOptionId?: string; - creativeFormats?: { - agent_url: string; - id: string; - }[]; - }[]; + keyType?: ( + | 'hour' + | 'half_hour' + | 'day' + | 'property' + | 'publisher' + | 'seller' + | 'content_channel' + | 'content_network' + | 'content_show' + | 'content_series' + | 'content_language' + | 'content_genre' + | 'content_rating' + | 'content_livestream' + | 'content_length_min' + | 'content_length_max' + | 'dma' + | 'city' + | 'country' + | 'region' + | 'postal_code' + | 'provider_category' + | 'provider_segment' + | 'device_type' + | 'device_model' + | 'device_make' + | 'operating_system' + | 'co2e_decile' + | 'viewability_decile' + | 'attention_potential_decile' + | 'completion_rate_decile' + | 'maid' + | 'liveramp' + | 'lat_lng_radius' + | 'id5' + | 'coreid' + | 'yahoo_connect' + )[]; /** @example [] */ - creatives?: { - creativeId: string; - name: string; - formatId: string; - mediaUrl: string; - status: string; - }[]; - pricing: { - cpm: number; - signalCost?: number; - totalCpm: number; + regions?: ('NORAM' | 'LATAM' | 'EMEA' | 'APAC' | 'ANZ' | 'GLOBAL')[]; + metadata?: { + [key: string]: unknown; }; - /** @example string */ + /** @example [] */ + access: { + account: string; + /** @enum {string} */ + scope: 'PUBLIC' | 'PROPRIETARY'; + pricingOptions: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + view_threshold: + | number + | { + duration_seconds: number; + }; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number | null; + sov_percentage?: number | null; + loop_duration_seconds?: number | null; + min_plays_per_hour?: number | null; + venue_package?: string | null; + estimated_impressions?: number | null; + daypart?: string | null; + } | null; + min_spend_per_package?: number | null; + } + )[]; + /** @default false */ + isLive?: boolean; + }[]; + }; + GetSignalInput: { + /** @example example_id_123 */ + signalId: string; + /** @example string */ + account?: string; + /** @default false */ + includeArchived?: boolean; + }; + UpdateSignalFromAgentInput: { + /** @example example_id_123 */ + signalId: string; + /** @example Example Name */ + name?: string; + /** @example string */ + description?: string; + /** @example [] */ + addAccess?: { + account: string; + /** @enum {string} */ + scope: 'PUBLIC' | 'PROPRIETARY'; + pricingOptions: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + view_threshold: + | number + | { + duration_seconds: number; + }; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number | null; + sov_percentage?: number | null; + loop_duration_seconds?: number | null; + min_plays_per_hour?: number | null; + venue_package?: string | null; + estimated_impressions?: number | null; + daypart?: string | null; + } | null; + min_spend_per_package?: number | null; + } + )[]; + /** @default false */ + isLive?: boolean; + }[]; + /** @example [] */ + updateAccess?: { + accessId: number; + isLive?: boolean; + pricingOptions?: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + view_threshold: + | number + | { + duration_seconds: number; + }; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number | null; + sov_percentage?: number | null; + loop_duration_seconds?: number | null; + min_plays_per_hour?: number | null; + venue_package?: string | null; + estimated_impressions?: number | null; + daypart?: string | null; + } | null; + min_spend_per_package?: number | null; + } + )[]; + /** @enum {string} */ + scope?: 'PUBLIC' | 'PROPRIETARY'; + }[]; + /** @example [] */ + archiveAccess?: number[]; + }; + DeregisterSignalInput: { + /** @example example_id_123 */ + signalId: string; + }; + ListSignalsInput: { + /** @example 100 */ + signalAgentId?: number; + /** + * @example PUBLIC + * @enum {string} + */ + scope?: 'PUBLIC' | 'PROPRIETARY'; + /** @example true */ + isLive?: boolean; + /** @example string */ + account?: string; + /** @default 20 */ + limit?: number; + /** @default 0 */ + offset?: number; + /** @default false */ + includeArchived?: boolean; + }; + DiscoverSignalsInput: { + /** @example example_id_123 */ + agentId?: string; + /** @example string */ + signalSpec?: string; + /** @example [] */ + signalIds?: string[]; + /** @default 20 */ + limit?: number; + /** @default 0 */ + offset?: number; + }; + MediaBuyGet: { + /** + * @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; + /** + * @description Media buy description + * @example string + */ + description?: string; + /** + * @description Internal status (DRAFT, ACTIVE, PAUSED, etc.) + * @example string + */ status: string; + /** + * @description Pre-execution product configuration + * @example [] + */ + products?: { + /** @description ADCP product identifier */ + product_id: string; + sales_agent_id: string; + sales_agent_name?: string; + /** @description ADCP budget field */ + budget?: number; + /** + * @description ADCP pacing field + * @enum {string} + */ + pacing?: 'asap' | 'even' | 'front_loaded'; + pricing_option_id?: string; + bid_price?: number; + display_order?: number; + creative_formats?: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + }[]; + /** + * @description Post-execution ADCP packages (enriched) + * @example [] + */ + packages?: { + package_id: string; + buyer_ref?: string | null; + product_id?: string | null; + budget?: number | null; + pacing?: ('even' | 'asap' | 'front_loaded') | null; + pricing_option_id?: string | null; + bid_price?: number | null; + impressions?: number | null; + targeting_overlay?: { + geo_country_any_of?: string[] | null; + geo_region_any_of?: string[] | null; + geo_metro_any_of?: string[] | null; + geo_postal_code_any_of?: string[] | null; + axe_include_segment?: string | null; + axe_exclude_segment?: string | null; + frequency_cap?: { + suppress_minutes: number; + } | null; + } | null; + creative_assignments?: + | { + creative_id: string; + weight?: number | null; + placement_ids?: string[] | null; + }[] + | null; + format_ids_to_provide?: + | { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[] + | null; + paused?: boolean | null; + ext?: { + [key: string]: unknown; + } | null; + /** @description Array of product IDs (enriched from joins) */ + product_ids?: string[]; + /** @description Full creative objects (enriched from joins) */ + creatives: { + creative_id: string; + name: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ + status: string; + }[]; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + sales_agent_id?: string; + sales_agent_name?: string; + creative_formats?: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + }[]; + /** + * @description Full creative objects (enriched from joins) + * @example [] + */ + creatives?: { + creative_id: string; + name: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ + status: string; + }[]; + /** @description ADCP-specific metadata (from execute response) */ adcp?: { - mediaBuyId?: string; + media_buy_id?: string; status?: string; - webhookUrl?: string; + webhook_url?: string; }; + /** @description Performance metrics (from reporting) */ performance?: { impressions: number; spend: number; clicks: number; /** Format: date-time */ - lastUpdated?: string; + last_updated?: string; }; /** * Format: date-time + * @description Created timestamp * @example string */ - archivedAt?: string; + created_at: string; /** * Format: date-time + * @description Updated timestamp * @example string */ - createdAt: string; + updated_at: string; /** * Format: date-time + * @description Archived timestamp * @example string */ - updatedAt: string; + archived_at?: string | null; }; TacticGet: { /** @example 100 */ @@ -1073,6 +2082,26 @@ export interface components { countryCodes: string[]; /** @example 100 */ mediaBuyCount?: number; + /** + * @description Count of targeting dimensions (channels, countries, bitmap profiles, brand agents) + * @example 100 + */ + targetingCount?: number; + /** + * @description Bitmap targeting profiles with targeting item keys for UI display + * @example [] + */ + bitmapTargetingProfiles?: components['schemas']['BitmapTargetingProfileResponse'][]; + /** + * @description Brand story agents associated with this tactic + * @example [] + */ + brandStoryAgents?: components['schemas']['BrandStoryAgentSummary'][]; + /** + * @description Brand standards agents associated with this tactic + * @example [] + */ + brandStandardsAgents?: components['schemas']['BrandStandardsAgentSummary'][]; /** * Format: date-time * @example string @@ -1175,6 +2204,11 @@ export interface components { customerId: number; /** @description Whether the seat is currently active */ active: boolean; + /** + * @description Seat type (BUYER or ACTIVATION) + * @enum {string} + */ + type: 'BUYER' | 'ACTIVATION'; }[]; /** * @description Total number of seats returned @@ -1182,13 +2216,67 @@ 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; + debug_info?: { + request?: unknown; + response?: unknown; + debugLogs?: { + type: string; + timestamp?: string; + message?: string; + request?: { + method?: string; + url?: string; + headers?: { + [key: string]: string; + }; + body?: unknown; + }; + response?: { + status?: number; + statusText?: string; + headers?: { + [key: string]: string; + }; + body?: unknown; + }; + }[]; + error?: unknown; + agentResults?: { + agentId: string; + agentName: string; + request?: unknown; + response?: unknown; + debugLogs?: { + type: string; + timestamp?: string; + message?: string; + request?: { + method?: string; + url?: string; + headers?: { + [key: string]: string; + }; + body?: unknown; + }; + response?: { + status?: number; + statusText?: string; + headers?: { + [key: string]: string; + }; + body?: unknown; + }; + }[]; + error?: unknown; + }[]; + }; }; CountryList: { /** @example 100 */ @@ -1208,31 +2296,13 @@ export interface components { displayName: string; }[]; }; - MediaBuyDelete: { - /** @example true */ - success: boolean; - /** @example example_id_123 */ - id: string; - }; - MediaBuyExecute: { - /** @example true */ - success: boolean; - /** @example example_id_123 */ - mediaBuyId: string; - /** @example string */ - status: string; - /** @example example_id_123 */ - adcpMediaBuyId?: string; - /** @example string */ - adcpStatus?: string; - }; - MediaBuyList: { + ListMediaBuysOutput: { /** @example 100 */ total: number; /** @example [] */ items: components['schemas']['MediaBuyGetOutput'][]; }; - MediaBuyValidateBudget: { + ValidateMediaBuyBudgetOutput: { /** @example true */ valid: boolean; /** @example string */ @@ -1278,93 +2348,576 @@ 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; + product_id: 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[] + description: string; + /** @description Publisher property selectors */ + publisher_properties?: { + property_id?: string; + property_type?: string; + name?: string; + identifiers?: { + type: string; + value: string; + include_subdomains?: boolean; + }[]; + tags?: string[]; + publisher_domain?: string; + }[]; + format_ids: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + /** @description Specific placements within product */ + placements?: { + placement_id: string; + name: string; + description?: string; + format_ids?: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + }[]; + delivery_type: 'guaranteed' | 'non_guaranteed'; + pricing_options: ( | { - 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; - }; - 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[] + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } | { - agent_url: string; - id: string; - }[]; - }[]; - }; - MediaProductSync: { - /** @example true */ - success: boolean; - /** @example 100 */ - productsSaved: number; - }; - AgentGet: - | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + view_threshold: + | number + | { + duration_seconds: number; + }; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number | null; + sov_percentage?: number | null; + loop_duration_seconds?: number | null; + min_plays_per_hour?: number | null; + venue_package?: string | null; + estimated_impressions?: number | null; + daypart?: string | null; + } | null; + min_spend_per_package?: number | null; + } + )[]; + /** @description Estimated impressions for guaranteed products */ + estimated_exposures?: number; + /** @description Measurement details */ + measurement?: { + type: string; + attribution: string; + window?: string; + reporting: string; + }; + /** @description Delivery measurement provider and methodology */ + delivery_measurement?: { + provider: string; + notes?: string; + }; + /** @description Available reporting options */ + reporting_capabilities?: { + supported_metrics?: string[]; + reporting_frequency?: string[]; + custom_dimensions?: string[]; + }; + /** @description Creative requirements and restrictions */ + creative_policy?: { + max_file_size?: number; + allowed_formats?: string[]; + restricted_categories?: string[]; + approval_required?: boolean; + guidelines_url?: string; + }; + /** @description Whether this is a custom product */ + is_custom?: boolean; + /** @description AI-generated relevance explanation included when discovering products */ + brief_relevance?: string; + /** + * Format: date-time + * @description Expiration for custom products + */ + expires_at?: string; + /** @description Standard visual card */ + product_card?: { + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + manifest: { + [key: string]: unknown; + }; + }; + /** @description Detailed carousel card */ + product_card_detailed?: { + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + manifest: { + [key: string]: unknown; + }; + }; + /** @description Extension data */ + ext?: { + [key: string]: unknown; + }; + /** @description Internal database ID */ + id: string; + /** @description Customer who owns this product (null = generic product) */ + customer_id: number | null; + /** @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'; + /** @description ADCP format_ids array of FormatID objects {agent_url, id} */ + formats?: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + /** @description Supported targeting capabilities */ + supported_targeting?: string[]; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + }[]; + /** @example [] */ + agent_results?: { + agentId: string; + agentName: string; + success: boolean; + productCount: number; + error?: string; + debugLogs?: { + type: string; + timestamp?: string; + message?: string; + request?: { + method?: string; + url?: string; + headers?: { + [key: string]: string; + }; + body?: unknown; + }; + response?: { + status?: number; + statusText?: string; + headers?: { + [key: string]: string; + }; + body?: unknown; + }; + }[]; + rawResponseData?: unknown; + }[]; + }; + MediaProductList: { + /** @example 100 */ + total: number; + /** @example [] */ + items: { + product_id: string; + name: string; + description: string; + /** @description Publisher property selectors */ + publisher_properties?: { + property_id?: string; + property_type?: string; + name?: string; + identifiers?: { + type: string; + value: string; + include_subdomains?: boolean; + }[]; + tags?: string[]; + publisher_domain?: string; + }[]; + format_ids: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + /** @description Specific placements within product */ + placements?: { + placement_id: string; + name: string; + description?: string; + format_ids?: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + }[]; + delivery_type: 'guaranteed' | 'non_guaranteed'; + pricing_options: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + view_threshold: + | number + | { + duration_seconds: number; + }; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number | null; + sov_percentage?: number | null; + loop_duration_seconds?: number | null; + min_plays_per_hour?: number | null; + venue_package?: string | null; + estimated_impressions?: number | null; + daypart?: string | null; + } | null; + min_spend_per_package?: number | null; + } + )[]; + /** @description Estimated impressions for guaranteed products */ + estimated_exposures?: number; + /** @description Measurement details */ + measurement?: { + type: string; + attribution: string; + window?: string; + reporting: string; + }; + /** @description Delivery measurement provider and methodology */ + delivery_measurement?: { + provider: string; + notes?: string; + }; + /** @description Available reporting options */ + reporting_capabilities?: { + supported_metrics?: string[]; + reporting_frequency?: string[]; + custom_dimensions?: string[]; + }; + /** @description Creative requirements and restrictions */ + creative_policy?: { + max_file_size?: number; + allowed_formats?: string[]; + restricted_categories?: string[]; + approval_required?: boolean; + guidelines_url?: string; + }; + /** @description Whether this is a custom product */ + is_custom?: boolean; + /** @description AI-generated relevance explanation included when discovering products */ + brief_relevance?: string; + /** + * Format: date-time + * @description Expiration for custom products + */ + expires_at?: string; + /** @description Standard visual card */ + product_card?: { + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + manifest: { + [key: string]: unknown; + }; + }; + /** @description Detailed carousel card */ + product_card_detailed?: { + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + manifest: { + [key: string]: unknown; + }; + }; + /** @description Extension data */ + ext?: { + [key: string]: unknown; + }; + /** @description Internal database ID */ + id: string; + /** @description Customer who owns this product (null = generic product) */ + customer_id: number | null; + /** @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'; + /** @description ADCP format_ids array of FormatID objects {agent_url, id} */ + formats?: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + /** @description Supported targeting capabilities */ + supported_targeting?: string[]; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + }[]; + }; + MediaProductSync: { + /** @example true */ + success: boolean; + /** @example 100 */ + 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 +2935,7 @@ export interface components { agentId: string; name: string; /** @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; status: string; relationship: string; endpointUrl: string; @@ -1396,6 +2949,10 @@ export interface components { /** Format: date-time */ updatedAt: string; customerAccountCount: number; + /** @enum {string|null} */ + reportingType?: 'WEBHOOK' | 'BUCKET' | 'POLLING' | null; + /** @enum {string|null} */ + reportingPollingCadence?: 'DAILY' | 'MONTHLY' | null; }; AgentList: { /** @example 100 */ @@ -1406,7 +2963,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 +2973,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 +2991,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 +3006,7 @@ export interface components { * @example SALES * @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; }; AgentUpdate: { /** @example example_id_123 */ @@ -1460,34 +3017,19 @@ export interface components { * @example SALES * @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; /** @example string */ status: string; - }; - TacticCreate: { - /** @example 100 */ - id: number; - /** @example Example Name */ - name: string; - /** @example string */ - prompt?: string; - /** @example example_id_123 */ - campaignId: string; - /** @example [] */ - channelCodes: string[]; - /** @example [] */ - countryCodes: string[]; /** - * Format: date-time - * @example string + * @example WEBHOOK + * @enum {string|null} */ - createdAt: string; - }; - TacticDelete: { - /** @example true */ - success: boolean; - /** @example 100 */ - tacticId: number; + reportingType?: 'WEBHOOK' | 'BUCKET' | 'POLLING' | null; + /** + * @example DAILY + * @enum {string|null} + */ + reportingPollingCadence?: 'DAILY' | 'MONTHLY' | null; }; TacticList: { /** @example 100 */ @@ -1495,22 +3037,6 @@ export interface components { /** @example [] */ items: components['schemas']['TacticGetOutput'][]; }; - TacticLinkCampaign: { - /** @example true */ - success: boolean; - /** @example 100 */ - tacticId: number; - /** @example example_id_123 */ - campaignId: string; - }; - TacticUnlinkCampaign: { - /** @example true */ - success: boolean; - /** @example 100 */ - tacticId: number; - /** @example example_id_123 */ - campaignId: string; - }; WebhookRegister: { /** @example example_id_123 */ id: string; @@ -1778,6 +3304,8 @@ export interface components { * @description User ID if token is scoped to a specific user */ userId?: number; + /** @description Email of the user who owns this token */ + userEmail?: string; /** @description Optional organization identifier for scoping the token */ organizationId?: string; /** @description Human-readable name of the token */ @@ -1812,693 +3340,1990 @@ export interface components { * @example 100 */ count: number; + /** + * @description Whether the requesting user has admin privileges (can see all tokens) + * @example true + */ + isAdmin: boolean; }; - MediaBuyGetOutput: { - /** @example example_id_123 */ - id: string; - /** @example 100 */ - tacticId: number; - /** @example 100 */ - customerId: number; - /** @example Example Name */ - name: string; - /** @example string */ - description?: string; + SignalCreate: { + signal: { + id: number; + signalId: string; + adcpAgentId: number; + name: string; + description: string | null; + keyType: + | ( + | 'hour' + | 'half_hour' + | 'day' + | 'property' + | 'publisher' + | 'seller' + | 'content_channel' + | 'content_network' + | 'content_show' + | 'content_series' + | 'content_language' + | 'content_genre' + | 'content_rating' + | 'content_livestream' + | 'content_length_min' + | 'content_length_max' + | 'dma' + | 'city' + | 'country' + | 'region' + | 'postal_code' + | 'provider_category' + | 'provider_segment' + | 'device_type' + | 'device_model' + | 'device_make' + | 'operating_system' + | 'co2e_decile' + | 'viewability_decile' + | 'attention_potential_decile' + | 'completion_rate_decile' + | 'maid' + | 'liveramp' + | 'lat_lng_radius' + | 'id5' + | 'coreid' + | 'yahoo_connect' + )[] + | null; + regions: ('NORAM' | 'LATAM' | 'EMEA' | 'APAC' | 'ANZ' | 'GLOBAL')[] | null; + metadata: { + [key: string]: unknown; + } | null; + /** Format: date-time */ + archivedAt: string | null; + createdBy: string | null; + updatedBy: string | null; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string; + }; /** @example [] */ - products?: { - mediaProductId: string; - salesAgentId: string; - salesAgentName?: string; - budgetAmount?: number; - budgetCurrency?: string; - pricingCpm?: number; - pricingSignalCost?: number; - displayOrder?: number; - creativeFormats?: { - agent_url: string; - id: string; - }[]; + access: { + id: number; + signalId: number; + account: string; + /** @enum {string} */ + scope: 'PUBLIC' | 'PROPRIETARY'; + pricingOptions: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + view_threshold: + | number + | { + duration_seconds: number; + }; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number | null; + sov_percentage?: number | null; + loop_duration_seconds?: number | null; + min_plays_per_hour?: number | null; + venue_package?: string | null; + estimated_impressions?: number | null; + daypart?: string | null; + } | null; + min_spend_per_package?: number | null; + } + )[]; + /** @enum {string} */ + type: 'agent'; + agentUrl: string; + isLive: boolean; + /** Format: date-time */ + deployedAt: string | null; + estimatedActivationDurationMinutes: number | null; + decisioningPlatformSegmentId: string | null; + /** Format: date-time */ + archivedAt: string | null; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string; }[]; + }; + SignalGet: { + signal: { + id: number; + signalId: string; + adcpAgentId: number; + name: string; + description: string | null; + keyType: + | ( + | 'hour' + | 'half_hour' + | 'day' + | 'property' + | 'publisher' + | 'seller' + | 'content_channel' + | 'content_network' + | 'content_show' + | 'content_series' + | 'content_language' + | 'content_genre' + | 'content_rating' + | 'content_livestream' + | 'content_length_min' + | 'content_length_max' + | 'dma' + | 'city' + | 'country' + | 'region' + | 'postal_code' + | 'provider_category' + | 'provider_segment' + | 'device_type' + | 'device_model' + | 'device_make' + | 'operating_system' + | 'co2e_decile' + | 'viewability_decile' + | 'attention_potential_decile' + | 'completion_rate_decile' + | 'maid' + | 'liveramp' + | 'lat_lng_radius' + | 'id5' + | 'coreid' + | 'yahoo_connect' + )[] + | null; + regions: ('NORAM' | 'LATAM' | 'EMEA' | 'APAC' | 'ANZ' | 'GLOBAL')[] | null; + metadata: { + [key: string]: unknown; + } | null; + /** Format: date-time */ + archivedAt: string | null; + createdBy: string | null; + updatedBy: string | null; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string; + }; /** @example [] */ - packages?: { - packageId: string; - productIds: string[]; - impressions: number; - budget: number; - targetingOverlay: unknown; - creatives: { - creativeId: string; - name: string; - formatId: string; - mediaUrl: string; - status: string; - }[]; + access: { + id: number; + signalId: number; + account: string; + /** @enum {string} */ + scope: 'PUBLIC' | 'PROPRIETARY'; + pricingOptions: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + view_threshold: + | number + | { + duration_seconds: number; + }; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number | null; + sov_percentage?: number | null; + loop_duration_seconds?: number | null; + min_plays_per_hour?: number | null; + venue_package?: string | null; + estimated_impressions?: number | null; + daypart?: string | null; + } | null; + min_spend_per_package?: number | null; + } + )[]; + /** @enum {string} */ + type: 'agent'; + agentUrl: string; + isLive: boolean; + /** Format: date-time */ + deployedAt: string | null; + estimatedActivationDurationMinutes: number | null; + decisioningPlatformSegmentId: string | null; + /** Format: date-time */ + archivedAt: string | null; /** Format: date-time */ createdAt: string; /** Format: date-time */ updatedAt: string; - salesAgentId?: string; - salesAgentName?: string; - pricingCpm?: number; - pricingSignalCost?: number; - bidPrice?: number; - pricingOptionId?: string; - creativeFormats?: { - agent_url: string; - id: string; - }[]; }[]; - /** @example [] */ - creatives?: { - creativeId: string; + }; + SignalUpdate: { + signal: { + id: number; + signalId: string; + adcpAgentId: number; name: string; - formatId: string; - mediaUrl: string; - status: string; - }[]; - pricing: { - cpm: number; - signalCost?: number; - totalCpm: number; - }; - /** @example string */ - status: string; - adcp?: { - mediaBuyId?: string; - status?: string; - webhookUrl?: string; - }; - performance?: { - impressions: number; - spend: number; - clicks: number; + description: string | null; + keyType: + | ( + | 'hour' + | 'half_hour' + | 'day' + | 'property' + | 'publisher' + | 'seller' + | 'content_channel' + | 'content_network' + | 'content_show' + | 'content_series' + | 'content_language' + | 'content_genre' + | 'content_rating' + | 'content_livestream' + | 'content_length_min' + | 'content_length_max' + | 'dma' + | 'city' + | 'country' + | 'region' + | 'postal_code' + | 'provider_category' + | 'provider_segment' + | 'device_type' + | 'device_model' + | 'device_make' + | 'operating_system' + | 'co2e_decile' + | 'viewability_decile' + | 'attention_potential_decile' + | 'completion_rate_decile' + | 'maid' + | 'liveramp' + | 'lat_lng_radius' + | 'id5' + | 'coreid' + | 'yahoo_connect' + )[] + | null; + regions: ('NORAM' | 'LATAM' | 'EMEA' | 'APAC' | 'ANZ' | 'GLOBAL')[] | null; + metadata: { + [key: string]: unknown; + } | null; /** Format: date-time */ - lastUpdated?: string; + archivedAt: string | null; + createdBy: string | null; + updatedBy: string | null; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string; }; - /** - * Format: date-time - * @example string - */ - archivedAt?: string; - /** - * Format: date-time - * @example string - */ - createdAt: string; - /** - * Format: date-time - * @example string - */ - updatedAt: string; - }; - TacticGetOutput: { - /** @example 100 */ - id: number; - /** @example Example Name */ - name: string; - /** @example string */ - prompt?: string; - /** @example [] */ - campaignIds?: string[]; - /** @example [] */ - channelCodes: string[]; /** @example [] */ - countryCodes: string[]; - /** @example 100 */ - mediaBuyCount?: number; - /** - * Format: date-time - * @example string - */ - createdAt: string; - /** - * Format: date-time - * @example string - */ - updatedAt: string; + access: { + id: number; + signalId: number; + account: string; + /** @enum {string} */ + scope: 'PUBLIC' | 'PROPRIETARY'; + pricingOptions: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + view_threshold: + | number + | { + duration_seconds: number; + }; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number | null; + sov_percentage?: number | null; + loop_duration_seconds?: number | null; + min_plays_per_hour?: number | null; + venue_package?: string | null; + estimated_impressions?: number | null; + daypart?: string | null; + } | null; + min_spend_per_package?: number | null; + } + )[]; + /** @enum {string} */ + type: 'agent'; + agentUrl: string; + isLive: boolean; + /** Format: date-time */ + deployedAt: string | null; + estimatedActivationDurationMinutes: number | null; + decisioningPlatformSegmentId: string | null; + /** Format: date-time */ + archivedAt: string | null; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string; + }[]; + }; + SignalDelete: { + /** @example true */ + success: boolean; /** * Format: date-time * @example string */ - archivedAt?: string; + archivedAt: string; }; - MediaBuyCreate: { - /** @example example_id_123 */ - id: string; - /** @example 100 */ - tacticId: number; - /** @example 100 */ - customerId: number; - /** @example Example Name */ - name: string; - /** @example string */ - description?: string; - /** @example [] */ - products?: { - mediaProductId: string; - salesAgentId: string; - salesAgentName?: string; - budgetAmount?: number; - budgetCurrency?: string; - pricingCpm?: number; - pricingSignalCost?: number; - displayOrder?: number; - creativeFormats?: { - agent_url: string; - id: string; - }[]; - }[]; + SignalList: { /** @example [] */ - packages?: { - packageId: string; - productIds: string[]; - impressions: number; - budget: number; - targetingOverlay: unknown; - creatives: { - creativeId: string; - name: string; - formatId: string; - mediaUrl: string; - status: string; - }[]; + signals: { + id: number; + signalId: string; + adcpAgentId: number; + name: string; + description: string | null; + keyType: + | ( + | 'hour' + | 'half_hour' + | 'day' + | 'property' + | 'publisher' + | 'seller' + | 'content_channel' + | 'content_network' + | 'content_show' + | 'content_series' + | 'content_language' + | 'content_genre' + | 'content_rating' + | 'content_livestream' + | 'content_length_min' + | 'content_length_max' + | 'dma' + | 'city' + | 'country' + | 'region' + | 'postal_code' + | 'provider_category' + | 'provider_segment' + | 'device_type' + | 'device_model' + | 'device_make' + | 'operating_system' + | 'co2e_decile' + | 'viewability_decile' + | 'attention_potential_decile' + | 'completion_rate_decile' + | 'maid' + | 'liveramp' + | 'lat_lng_radius' + | 'id5' + | 'coreid' + | 'yahoo_connect' + )[] + | null; + regions: ('NORAM' | 'LATAM' | 'EMEA' | 'APAC' | 'ANZ' | 'GLOBAL')[] | null; + metadata: { + [key: string]: unknown; + } | null; + /** Format: date-time */ + archivedAt: string | null; + createdBy: string | null; + updatedBy: string | null; /** Format: date-time */ createdAt: string; /** Format: date-time */ updatedAt: string; - salesAgentId?: string; - salesAgentName?: string; - pricingCpm?: number; - pricingSignalCost?: number; - bidPrice?: number; - pricingOptionId?: string; - creativeFormats?: { - agent_url: string; - id: string; + access: { + id: number; + signalId: number; + account: string; + /** @enum {string} */ + scope: 'PUBLIC' | 'PROPRIETARY'; + pricingOptions: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + view_threshold: + | number + | { + duration_seconds: number; + }; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number | null; + sov_percentage?: number | null; + loop_duration_seconds?: number | null; + min_plays_per_hour?: number | null; + venue_package?: string | null; + estimated_impressions?: number | null; + daypart?: string | null; + } | null; + min_spend_per_package?: number | null; + } + )[]; + /** @enum {string} */ + type: 'agent'; + agentUrl: string; + isLive: boolean; + /** Format: date-time */ + deployedAt: string | null; + estimatedActivationDurationMinutes: number | null; + decisioningPlatformSegmentId: string | null; + /** Format: date-time */ + archivedAt: string | null; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string; }[]; }[]; + /** @example 100 */ + total: number; + /** @example 100 */ + limit: number; + /** @example 100 */ + offset: number; + }; + SignalDiscover: { /** @example [] */ - creatives?: { - creativeId: string; + agentResults: { + agentId: string; + agentName: string; + success: boolean; + signalCount: number; + error?: string; + }[]; + /** @example [] */ + signals: { + signalId: string; name: string; - formatId: string; - mediaUrl: string; - status: string; + description: string; + dataProvider: string; + coveragePercentage: number | null; + access: { + account: string | null; + scope: string; + pricingOptions: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + view_threshold: + | number + | { + duration_seconds: number; + }; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number | null; + sov_percentage?: number | null; + loop_duration_seconds?: number | null; + min_plays_per_hour?: number | null; + venue_package?: string | null; + estimated_impressions?: number | null; + daypart?: string | null; + } | null; + min_spend_per_package?: number | null; + } + )[]; + isLive: boolean; + }[]; + regions: ('NORAM' | 'LATAM' | 'EMEA' | 'APAC' | 'ANZ' | 'GLOBAL')[] | null; + keyType: + | ( + | 'hour' + | 'half_hour' + | 'day' + | 'property' + | 'publisher' + | 'seller' + | 'content_channel' + | 'content_network' + | 'content_show' + | 'content_series' + | 'content_language' + | 'content_genre' + | 'content_rating' + | 'content_livestream' + | 'content_length_min' + | 'content_length_max' + | 'dma' + | 'city' + | 'country' + | 'region' + | 'postal_code' + | 'provider_category' + | 'provider_segment' + | 'device_type' + | 'device_model' + | 'device_make' + | 'operating_system' + | 'co2e_decile' + | 'viewability_decile' + | 'attention_potential_decile' + | 'completion_rate_decile' + | 'maid' + | 'liveramp' + | 'lat_lng_radius' + | 'id5' + | 'coreid' + | 'yahoo_connect' + )[] + | null; + metadata: { + [key: string]: unknown; + } | null; }[]; - pricing: { - cpm: number; - signalCost?: number; - totalCpm: number; - }; - /** @example string */ - status: string; - adcp?: { - mediaBuyId?: string; - status?: string; - webhookUrl?: string; - }; - performance?: { - impressions: number; - spend: number; - clicks: number; - /** Format: date-time */ - lastUpdated?: string; - }; + /** @example 100 */ + total: number; + }; + BitmapTargetingProfileResponseOutput: { /** - * Format: date-time - * @example string + * @description Targeting dimension name (e.g., country, region, city, device_type) + * @example Example Name */ - archivedAt?: string; + dimensionName: string; /** - * Format: date-time - * @example string + * @description Included targeting item keys (e.g., "US", "MX") + * @example [] */ - createdAt: string; + anyOf: string[]; /** - * Format: date-time - * @example string + * @description Excluded targeting item keys + * @example [] */ - updatedAt: string; + noneOf: string[]; }; - MediaBuyUpdate: { - /** @example example_id_123 */ - id: string; + BrandStoryAgentSummaryOutput: { /** @example 100 */ - tacticId: number; + id: number; + /** @example Example Name */ + name: string; + }; + BrandStandardsAgentSummaryOutput: { /** @example 100 */ - customerId: number; + id: number; /** @example Example Name */ name: string; - /** @example string */ + }; + MediaBuyGetOutput: { + /** + * @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; + /** + * @description Media buy description + * @example string + */ description?: string; - /** @example [] */ + /** + * @description Internal status (DRAFT, ACTIVE, PAUSED, etc.) + * @example string + */ + status: string; + /** + * @description Pre-execution product configuration + * @example [] + */ products?: { - mediaProductId: string; - salesAgentId: string; - salesAgentName?: string; - budgetAmount?: number; - budgetCurrency?: string; - pricingCpm?: number; - pricingSignalCost?: number; - displayOrder?: number; - creativeFormats?: { + /** @description ADCP product identifier */ + product_id: string; + sales_agent_id: string; + sales_agent_name?: string; + /** @description ADCP budget field */ + budget?: number; + /** + * @description ADCP pacing field + * @enum {string} + */ + pacing?: 'asap' | 'even' | 'front_loaded'; + pricing_option_id?: string; + bid_price?: number; + display_order?: number; + creative_formats?: { agent_url: string; id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }[]; }[]; - /** @example [] */ + /** + * @description Post-execution ADCP packages (enriched) + * @example [] + */ packages?: { - packageId: string; - productIds: string[]; - impressions: number; - budget: number; - targetingOverlay: unknown; + package_id: string; + buyer_ref?: string | null; + product_id?: string | null; + budget?: number | null; + pacing?: ('even' | 'asap' | 'front_loaded') | null; + pricing_option_id?: string | null; + bid_price?: number | null; + impressions?: number | null; + targeting_overlay?: { + geo_country_any_of?: string[] | null; + geo_region_any_of?: string[] | null; + geo_metro_any_of?: string[] | null; + geo_postal_code_any_of?: string[] | null; + axe_include_segment?: string | null; + axe_exclude_segment?: string | null; + frequency_cap?: { + suppress_minutes: number; + } | null; + } | null; + creative_assignments?: + | { + creative_id: string; + weight?: number | null; + placement_ids?: string[] | null; + }[] + | null; + format_ids_to_provide?: + | { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[] + | null; + paused?: boolean | null; + ext?: { + [key: string]: unknown; + } | null; + /** @description Array of product IDs (enriched from joins) */ + product_ids?: string[]; + /** @description Full creative objects (enriched from joins) */ creatives: { - creativeId: string; + creative_id: string; name: string; - formatId: string; - mediaUrl: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ status: string; }[]; /** Format: date-time */ - createdAt: string; + created_at: string; /** Format: date-time */ - updatedAt: string; - salesAgentId?: string; - salesAgentName?: string; - pricingCpm?: number; - pricingSignalCost?: number; - bidPrice?: number; - pricingOptionId?: string; - creativeFormats?: { + updated_at: string; + sales_agent_id?: string; + sales_agent_name?: string; + creative_formats?: { agent_url: string; id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }[]; }[]; - /** @example [] */ + /** + * @description Full creative objects (enriched from joins) + * @example [] + */ creatives?: { - creativeId: string; + creative_id: string; name: string; - formatId: string; - mediaUrl: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ status: string; }[]; - pricing: { - cpm: number; - signalCost?: number; - totalCpm: number; - }; - /** @example string */ - status: string; + /** @description ADCP-specific metadata (from execute response) */ adcp?: { - mediaBuyId?: string; + media_buy_id?: string; status?: string; - webhookUrl?: string; + webhook_url?: string; }; + /** @description Performance metrics (from reporting) */ performance?: { impressions: number; spend: number; clicks: number; /** Format: date-time */ - lastUpdated?: string; + last_updated?: string; }; /** * Format: date-time + * @description Created timestamp * @example string */ - archivedAt?: string; + created_at: string; /** * Format: date-time + * @description Updated timestamp * @example string */ - createdAt: string; + updated_at: string; /** * Format: date-time + * @description Archived timestamp * @example string */ - updatedAt: string; + archived_at?: string | null; }; - TacticUpdate: { + TacticGetOutput: { /** @example 100 */ id: number; /** @example Example Name */ name: string; - /** @example string */ - prompt?: string; - /** @example [] */ - campaignIds?: string[]; - /** @example [] */ - channelCodes: string[]; - /** @example [] */ - countryCodes: string[]; - /** @example 100 */ - mediaBuyCount?: number; - /** - * Format: date-time - * @example string - */ - createdAt: string; - /** - * Format: date-time - * @example string - */ - updatedAt: string; - /** - * Format: date-time - * @example string - */ - archivedAt?: string; - }; - }; - responses: never; - parameters: never; - requestBodies: never; - headers: never; - pathItems: never; -} - -export type $defs = Record; - -export type external = Record; - -export interface operations { - /** - * Initialize MCP session - * @description Initialize a new MCP session. This must be called before using any tools. The session ID should be generated as a UUID and included in the mcp-session-id header for all subsequent requests. - */ - mcp_initialize: { - parameters: { - header: { - /** @description MCP session identifier (UUID). Generate a new UUID for session initialization. */ - 'mcp-session-id': string; - }; - }; - requestBody: { - content: { - 'application/json': { - /** @enum {string} */ - jsonrpc: '2.0'; - id: string | number; - /** @enum {string} */ - method: 'initialize'; - params: { - /** @example 2024-11-05 */ - protocolVersion: string; - capabilities: Record; - clientInfo: { - name: string; - version: string; - }; - }; - }; - }; - }; - responses: { - /** @description Session initialized successfully */ - 200: { - content: { - 'application/json': { - /** @enum {string} */ - jsonrpc?: '2.0'; - id?: string | number; - result?: { - protocolVersion?: string; - capabilities?: Record; - serverInfo?: { - name?: string; - version?: string; - }; - }; - }; - }; - }; - /** @description Unauthorized */ - 401: { - content: { - 'application/json': components['schemas']['Unauthorized']; - }; - }; - }; - }; - /** - * List channels - * @description List all available advertising channels and platforms. - */ - channel_list: { - parameters: { - header: { - /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ - 'mcp-session-id': string; - }; - }; - /** @description Request body for channel_list */ - requestBody: { - content: { - /** - * @example { - * "tool": "channel_list", - * "arguments": {} - * } - */ - 'application/json': { - /** @enum {string} */ - tool: 'channel_list'; - arguments: components['schemas']['ListChannelsInput']; - }; - }; - }; - responses: { - /** @description Successful response */ - 200: { - content: { - 'application/json': { - content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['ChannelList']; - }; - }; - }; - /** @description Bad request */ - 400: { - content: { - 'application/json': components['schemas']['BadRequest']; - }; - }; - /** @description Unauthorized */ - 401: { - content: { - 'application/json': components['schemas']['Unauthorized']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['InternalError']; - }; - }; - }; - }; - /** - * List countries - * @description Get all available countries for targeting. Use this to get valid country codes before creating brand agents. - */ - country_list: { - parameters: { - header: { - /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ - 'mcp-session-id': string; - }; - }; - /** @description Request body for country_list */ - requestBody: { - content: { - /** - * @example { - * "tool": "country_list", - * "arguments": {} - * } - */ - 'application/json': { - /** @enum {string} */ - tool: 'country_list'; - arguments: components['schemas']['ListCountriesInput']; - }; - }; - }; - responses: { - /** @description Successful response */ - 200: { - content: { - 'application/json': { - content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CountryList']; - }; - }; - }; - /** @description Bad request */ - 400: { - content: { - 'application/json': components['schemas']['BadRequest']; - }; - }; - /** @description Unauthorized */ - 401: { - content: { - 'application/json': components['schemas']['Unauthorized']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['InternalError']; - }; - }; - }; - }; - /** - * List languages - * @description Get all available languages for targeting. Use this to get valid language codes before creating brand stories. - */ - language_list: { - parameters: { - header: { - /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ - 'mcp-session-id': string; - }; - }; - /** @description Request body for language_list */ - requestBody: { - content: { - /** - * @example { - * "tool": "language_list", - * "arguments": {} - * } - */ - 'application/json': { - /** @enum {string} */ - tool: 'language_list'; - arguments: components['schemas']['ListLanguagesInput']; - }; - }; - }; - responses: { - /** @description Successful response */ - 200: { - content: { - 'application/json': { - content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['LanguageList']; - }; - }; - }; - /** @description Bad request */ - 400: { - content: { - 'application/json': components['schemas']['BadRequest']; - }; - }; - /** @description Unauthorized */ - 401: { - content: { - 'application/json': components['schemas']['Unauthorized']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['InternalError']; - }; - }; + /** @example string */ + prompt?: string; + /** @example [] */ + campaignIds?: string[]; + /** @example [] */ + channelCodes: string[]; + /** @example [] */ + countryCodes: string[]; + /** @example 100 */ + mediaBuyCount?: number; + /** + * @description Count of targeting dimensions (channels, countries, bitmap profiles, brand agents) + * @example 100 + */ + targetingCount?: number; + /** + * @description Bitmap targeting profiles with targeting item keys for UI display + * @example [] + */ + bitmapTargetingProfiles?: components['schemas']['BitmapTargetingProfileResponseOutput'][]; + /** + * @description Brand story agents associated with this tactic + * @example [] + */ + brandStoryAgents?: components['schemas']['BrandStoryAgentSummaryOutput'][]; + /** + * @description Brand standards agents associated with this tactic + * @example [] + */ + brandStandardsAgents?: components['schemas']['BrandStandardsAgentSummaryOutput'][]; + /** + * Format: date-time + * @example string + */ + createdAt: string; + /** + * Format: date-time + * @example string + */ + updatedAt: string; + /** + * Format: date-time + * @example string + */ + archivedAt?: string; }; }; + responses: never; + parameters: never; + requestBodies: never; + headers: never; + pathItems: never; +} + +export type $defs = Record; + +export type external = Record; + +export interface operations { /** - * Sync creatives to sales agents - * @description Synchronize creatives to connected sales agents (DSPs, publisher platforms). + * Initialize MCP session + * @description Initialize a new MCP session. This must be called before using any tools. The session ID should be generated as a UUID and included in the mcp-session-id header for all subsequent requests. */ - creative_sync_sales_agents: { + mcp_initialize: { parameters: { header: { - /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ + /** @description MCP session identifier (UUID). Generate a new UUID for session initialization. */ 'mcp-session-id': string; }; }; - /** @description Request body for creative_sync_sales_agents */ requestBody: { content: { - /** - * @example { - * "tool": "creative_sync_sales_agents", - * "arguments": { - * "creativeId": "example_id_123" - * } - * } - */ 'application/json': { /** @enum {string} */ - tool: 'creative_sync_sales_agents'; - arguments: components['schemas']['SyncSalesAgentsInput']; + jsonrpc: '2.0'; + id: string | number; + /** @enum {string} */ + method: 'initialize'; + params: { + /** @example 2024-11-05 */ + protocolVersion: string; + capabilities: Record; + clientInfo: { + name: string; + version: string; + }; + }; }; }; }; responses: { - /** @description Successful response */ + /** @description Session initialized successfully */ 200: { content: { 'application/json': { - content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeSyncSalesAgents']; + /** @enum {string} */ + jsonrpc?: '2.0'; + id?: string | number; + result?: { + protocolVersion?: string; + capabilities?: Record; + serverInfo?: { + name?: string; + version?: string; + }; + }; }; }; }; - /** @description Bad request */ - 400: { - content: { - 'application/json': components['schemas']['BadRequest']; - }; - }; /** @description Unauthorized */ 401: { content: { 'application/json': components['schemas']['Unauthorized']; }; }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['InternalError']; - }; - }; }; }; /** - * Create media buy - * @description Create a new media buy with budget, targeting, and creative specifications. + * List channels + * @description List all available advertising channels and platforms. */ - media_buy_create: { + channel_list: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for media_buy_create */ + /** @description Request body for channel_list */ requestBody: { content: { /** * @example { - * "tool": "media_buy_create", - * "arguments": { - * "tacticId": 100, - * "agentId": "example_id_123", - * "name": "Example Name", - * "products": [] - * } + * "tool": "channel_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'media_buy_create'; - arguments: components['schemas']['CreateMediaBuyInput']; + tool: 'channel_list'; + arguments: components['schemas']['ListChannelsInput']; }; }; }; @@ -2508,7 +5333,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyGetOutput']; + structuredContent: components['schemas']['ChannelList']; }; }; }; @@ -2533,31 +5358,29 @@ export interface operations { }; }; /** - * Update media buy - * @description Update an existing media buy with new budget, targeting, or creative assignments. + * List countries + * @description Get all available countries for targeting. Use this to get valid country codes before creating brand agents. */ - media_buy_update: { + country_list: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for media_buy_update */ + /** @description Request body for country_list */ requestBody: { content: { /** * @example { - * "tool": "media_buy_update", - * "arguments": { - * "mediaBuyId": "example_id_123" - * } + * "tool": "country_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'media_buy_update'; - arguments: components['schemas']['UpdateMediaBuyInput']; + tool: 'country_list'; + arguments: components['schemas']['ListCountriesInput']; }; }; }; @@ -2567,7 +5390,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyGetOutput']; + structuredContent: components['schemas']['CountryList']; }; }; }; @@ -2592,32 +5415,29 @@ export interface operations { }; }; /** - * Delete media buy - * @description Delete a media buy and cancel any active placements. + * List languages + * @description Get all available languages for targeting. Use this to get valid language codes before creating brand stories. */ - media_buy_delete: { + language_list: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for media_buy_delete */ + /** @description Request body for language_list */ requestBody: { content: { /** * @example { - * "tool": "media_buy_delete", - * "arguments": { - * "mediaBuyId": "example_id_123", - * "confirm": true - * } + * "tool": "language_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'media_buy_delete'; - arguments: components['schemas']['DeleteMediaBuyInput']; + tool: 'language_list'; + arguments: components['schemas']['ListLanguagesInput']; }; }; }; @@ -2627,7 +5447,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyDelete']; + structuredContent: components['schemas']['LanguageList']; }; }; }; @@ -2652,31 +5472,31 @@ export interface operations { }; }; /** - * Execute media buy - * @description Execute a media buy, sending it to the configured sales agents for placement. + * Sync creatives to sales agents + * @description Synchronize creatives to connected sales agents (DSPs, publisher platforms). */ - media_buy_execute: { + creative_sync_sales_agents: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for media_buy_execute */ + /** @description Request body for creative_sync_sales_agents */ requestBody: { content: { /** * @example { - * "tool": "media_buy_execute", + * "tool": "creative_sync_sales_agents", * "arguments": { - * "mediaBuyId": "example_id_123" + * "creative_id": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'media_buy_execute'; - arguments: components['schemas']['ExecuteMediaBuyInput']; + tool: 'creative_sync_sales_agents'; + arguments: components['schemas']['SyncSalesAgentsInput']; }; }; }; @@ -2686,7 +5506,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyExecute']; + structuredContent: components['schemas']['SyncSalesAgentsOutput']; }; }; }; @@ -2728,7 +5548,7 @@ export interface operations { * @example { * "tool": "media_buy_get", * "arguments": { - * "mediaBuyId": "example_id_123" + * "media_buy_id": "example_id_123" * } * } */ @@ -2802,7 +5622,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyList']; + structuredContent: components['schemas']['ListMediaBuysOutput']; }; }; }; @@ -2844,8 +5664,8 @@ export interface operations { * @example { * "tool": "media_buy_validate_budget", * "arguments": { - * "tacticId": 100, - * "newBudgetAmount": 100 + * "tactic_id": 100, + * "new_budget_amount": 100 * } * } */ @@ -2862,7 +5682,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyValidateBudget']; + structuredContent: components['schemas']['ValidateMediaBuyBudgetOutput']; }; }; }; @@ -3178,72 +5998,6 @@ export interface operations { }; }; }; - /** - * Save media product - * @description Save a discovered media product for future use in media buys. - */ - media_product_save: { - parameters: { - header: { - /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ - 'mcp-session-id': string; - }; - }; - /** @description Request body for media_product_save */ - requestBody: { - content: { - /** - * @example { - * "tool": "media_product_save", - * "arguments": { - * "productId": "example_id_123", - * "name": "Example Name", - * "description": "string", - * "publisherId": "example_id_123", - * "publisherName": "Example Name", - * "deliveryType": "guaranteed", - * "inventoryType": "premium", - * "pricingModel": "auction" - * } - * } - */ - 'application/json': { - /** @enum {string} */ - tool: 'media_product_save'; - arguments: components['schemas']['SaveProductInput']; - }; - }; - }; - responses: { - /** @description Successful response */ - 200: { - content: { - 'application/json': { - content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaProductSave']; - }; - }; - }; - /** @description Bad request */ - 400: { - content: { - 'application/json': components['schemas']['BadRequest']; - }; - }; - /** @description Unauthorized */ - 401: { - content: { - 'application/json': components['schemas']['Unauthorized']; - }; - }; - /** @description Internal server error */ - 500: { - content: { - 'application/json': components['schemas']['InternalError']; - }; - }; - }; - }; /** * List media products * @description List saved media products with optional filtering. @@ -3497,7 +6251,8 @@ export interface operations { * "type": "SALES", * "name": "Example Name", * "endpointUrl": "https://example.com", - * "protocol": "MCP" + * "protocol": "MCP", + * "seatId": 100 * } * } */ @@ -3573,7 +6328,66 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['AgentUnregister']; + structuredContent: components['schemas']['AgentUnregister']; + }; + }; + }; + /** @description Bad request */ + 400: { + content: { + 'application/json': components['schemas']['BadRequest']; + }; + }; + /** @description Unauthorized */ + 401: { + content: { + 'application/json': components['schemas']['Unauthorized']; + }; + }; + /** @description Internal server error */ + 500: { + content: { + 'application/json': components['schemas']['InternalError']; + }; + }; + }; + }; + /** + * Update agent + * @description Update agent configuration and credentials. Type is automatically inferred from the agent ID. + */ + agent_update: { + parameters: { + header: { + /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ + 'mcp-session-id': string; + }; + }; + /** @description Request body for agent_update */ + requestBody: { + content: { + /** + * @example { + * "tool": "agent_update", + * "arguments": { + * "agentId": "example_id_123" + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'agent_update'; + arguments: components['schemas']['UpdateAgentInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['AgentUpdate']; }; }; }; @@ -3598,31 +6412,31 @@ export interface operations { }; }; /** - * Update agent - * @description Update agent configuration and credentials. Type is automatically inferred from the agent ID. + * Get tactic + * @description Get detailed information about a specific tactic. */ - agent_update: { + tactic_get: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for agent_update */ + /** @description Request body for tactic_get */ requestBody: { content: { /** * @example { - * "tool": "agent_update", + * "tool": "tactic_get", * "arguments": { - * "agentId": "example_id_123" + * "tacticId": 100 * } * } */ 'application/json': { /** @enum {string} */ - tool: 'agent_update'; - arguments: components['schemas']['UpdateAgentInput']; + tool: 'tactic_get'; + arguments: components['schemas']['GetTacticInput']; }; }; }; @@ -3632,7 +6446,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['AgentUpdate']; + structuredContent: components['schemas']['TacticGetOutput']; }; }; }; @@ -3657,32 +6471,29 @@ export interface operations { }; }; /** - * Create tactic - * @description Create a new tactic defining how to achieve campaign objectives. + * List tactics + * @description List all tactics with optional filtering by brand agent or campaign. */ - tactic_create: { + tactic_list: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for tactic_create */ + /** @description Request body for tactic_list */ requestBody: { content: { /** * @example { - * "tool": "tactic_create", - * "arguments": { - * "campaignId": "example_id_123", - * "name": "Example Name" - * } + * "tool": "tactic_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'tactic_create'; - arguments: components['schemas']['CreateTacticInput']; + tool: 'tactic_list'; + arguments: components['schemas']['ListTacticsInput']; }; }; }; @@ -3692,7 +6503,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['TacticCreate']; + structuredContent: components['schemas']['TacticList']; }; }; }; @@ -3717,31 +6528,35 @@ export interface operations { }; }; /** - * Update tactic - * @description Update an existing tactic with new targeting, budget, or creative requirements. + * Register webhook + * @description Register a webhook to receive real-time notifications about events. */ - tactic_update: { + webhook_register: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for tactic_update */ + /** @description Request body for webhook_register */ requestBody: { content: { /** * @example { - * "tool": "tactic_update", + * "tool": "webhook_register", * "arguments": { - * "tacticId": 100 + * "endpoint": { + * "url": "https://example.com", + * "method": "POST" + * }, + * "eventTypes": [] * } * } */ 'application/json': { /** @enum {string} */ - tool: 'tactic_update'; - arguments: components['schemas']['UpdateTacticInput']; + tool: 'webhook_register'; + arguments: components['schemas']['RegisterWebhookInput']; }; }; }; @@ -3751,7 +6566,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['TacticGetOutput']; + structuredContent: components['schemas']['WebhookRegister']; }; }; }; @@ -3776,32 +6591,29 @@ export interface operations { }; }; /** - * Delete tactic - * @description Delete a tactic and all associated media buys. + * List webhooks + * @description List all registered webhooks. */ - tactic_delete: { + webhook_list: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for tactic_delete */ + /** @description Request body for webhook_list */ requestBody: { content: { /** * @example { - * "tool": "tactic_delete", - * "arguments": { - * "tacticId": 100, - * "confirm": true - * } + * "tool": "webhook_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'tactic_delete'; - arguments: components['schemas']['DeleteTacticInput']; + tool: 'webhook_list'; + arguments: components['schemas']['ListWebhooksInput']; }; }; }; @@ -3811,7 +6623,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['TacticDelete']; + structuredContent: components['schemas']['WebhookList']; }; }; }; @@ -3836,31 +6648,31 @@ export interface operations { }; }; /** - * Get tactic - * @description Get detailed information about a specific tactic. + * Delete webhook + * @description Delete a registered webhook. */ - tactic_get: { + webhook_delete: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for tactic_get */ + /** @description Request body for webhook_delete */ requestBody: { content: { /** * @example { - * "tool": "tactic_get", + * "tool": "webhook_delete", * "arguments": { - * "tacticId": 100 + * "webhookId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'tactic_get'; - arguments: components['schemas']['GetTacticInput']; + tool: 'webhook_delete'; + arguments: components['schemas']['DeleteWebhookInput']; }; }; }; @@ -3870,7 +6682,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['TacticGetOutput']; + structuredContent: components['schemas']['WebhookDelete']; }; }; }; @@ -3895,29 +6707,31 @@ export interface operations { }; }; /** - * List tactics - * @description List all tactics with optional filtering by brand agent or campaign. + * Create service token + * @description Create a new service token for API authentication. Returns the full token which should be stored securely as it cannot be retrieved later. */ - tactic_list: { + service_token_create: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for tactic_list */ + /** @description Request body for service_token_create */ requestBody: { content: { /** * @example { - * "tool": "tactic_list", - * "arguments": {} + * "tool": "service_token_create", + * "arguments": { + * "name": "Example Name" + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'tactic_list'; - arguments: components['schemas']['ListTacticsInput']; + tool: 'service_token_create'; + arguments: components['schemas']['CreateServiceTokenInput']; }; }; }; @@ -3927,7 +6741,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['TacticList']; + structuredContent: components['schemas']['CreateServiceTokenOutput']; }; }; }; @@ -3952,32 +6766,29 @@ export interface operations { }; }; /** - * Link tactic to campaign - * @description Link a tactic to a campaign. + * List service tokens + * @description List all service tokens for the authenticated customer. Secrets are never returned, only metadata. */ - tactic_link_campaign: { + service_token_list: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for tactic_link_campaign */ + /** @description Request body for service_token_list */ requestBody: { content: { /** * @example { - * "tool": "tactic_link_campaign", - * "arguments": { - * "tacticId": 100, - * "campaignId": "example_id_123" - * } + * "tool": "service_token_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'tactic_link_campaign'; - arguments: components['schemas']['LinkCampaignToTacticInput']; + tool: 'service_token_list'; + arguments: components['schemas']['ListServiceTokensInput']; }; }; }; @@ -3987,7 +6798,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['TacticLinkCampaign']; + structuredContent: components['schemas']['ListServiceTokensOutput']; }; }; }; @@ -4012,32 +6823,31 @@ export interface operations { }; }; /** - * Unlink tactic from campaign - * @description Unlink a tactic from a campaign. + * Get service token + * @description Get detailed information about a specific service token. The secret is never returned. */ - tactic_unlink_campaign: { + service_token_get: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for tactic_unlink_campaign */ + /** @description Request body for service_token_get */ requestBody: { content: { /** * @example { - * "tool": "tactic_unlink_campaign", + * "tool": "service_token_get", * "arguments": { - * "tacticId": 100, - * "campaignId": "example_id_123" + * "id": "1234567890" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'tactic_unlink_campaign'; - arguments: components['schemas']['UnlinkCampaignFromTacticInput']; + tool: 'service_token_get'; + arguments: components['schemas']['GetServiceTokenInput']; }; }; }; @@ -4047,7 +6857,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['TacticUnlinkCampaign']; + structuredContent: components['schemas']['GetServiceTokenOutput']; }; }; }; @@ -4072,35 +6882,31 @@ export interface operations { }; }; /** - * Register webhook - * @description Register a webhook to receive real-time notifications about events. + * Update service token + * @description Update a service token. Only name, description, and expiration can be modified. */ - webhook_register: { + service_token_update: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for webhook_register */ + /** @description Request body for service_token_update */ requestBody: { content: { /** * @example { - * "tool": "webhook_register", + * "tool": "service_token_update", * "arguments": { - * "endpoint": { - * "url": "https://example.com", - * "method": "POST" - * }, - * "eventTypes": [] + * "id": "1234567890" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'webhook_register'; - arguments: components['schemas']['RegisterWebhookInput']; + tool: 'service_token_update'; + arguments: components['schemas']['UpdateServiceTokenInput']; }; }; }; @@ -4110,7 +6916,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['WebhookRegister']; + structuredContent: components['schemas']['UpdateServiceTokenOutput']; }; }; }; @@ -4135,29 +6941,31 @@ export interface operations { }; }; /** - * List webhooks - * @description List all registered webhooks. + * Archive service token + * @description Archive (soft delete) a service token. This immediately invalidates the token for authentication. */ - webhook_list: { + service_token_archive: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for webhook_list */ + /** @description Request body for service_token_archive */ requestBody: { content: { /** * @example { - * "tool": "webhook_list", - * "arguments": {} + * "tool": "service_token_archive", + * "arguments": { + * "id": "1234567890" + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'webhook_list'; - arguments: components['schemas']['ListWebhooksInput']; + tool: 'service_token_archive'; + arguments: components['schemas']['ArchiveServiceTokenInput']; }; }; }; @@ -4167,7 +6975,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['WebhookList']; + structuredContent: components['schemas']['ArchiveServiceTokenOutput']; }; }; }; @@ -4192,31 +7000,29 @@ export interface operations { }; }; /** - * Delete webhook - * @description Delete a registered webhook. + * Get customer info + * @description Get detailed information about a customer from the core database. */ - webhook_delete: { + customer_get: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for webhook_delete */ + /** @description Request body for customer_get */ requestBody: { content: { /** * @example { - * "tool": "webhook_delete", - * "arguments": { - * "webhookId": "example_id_123" - * } + * "tool": "customer_get", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'webhook_delete'; - arguments: components['schemas']['DeleteWebhookInput']; + tool: 'customer_get'; + arguments: components['schemas']['GetCustomerInput']; }; }; }; @@ -4226,7 +7032,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['WebhookDelete']; + structuredContent: components['schemas']['GetCustomerOutput']; }; }; }; @@ -4251,31 +7057,29 @@ export interface operations { }; }; /** - * Create service token - * @description Create a new service token for API authentication. Returns the full token which should be stored securely as it cannot be retrieved later. + * Get customer seats + * @description Get all seats associated with a customer from the core database. */ - service_token_create: { + customer_get_seats: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for service_token_create */ + /** @description Request body for customer_get_seats */ requestBody: { content: { /** * @example { - * "tool": "service_token_create", - * "arguments": { - * "name": "Example Name" - * } + * "tool": "customer_get_seats", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'service_token_create'; - arguments: components['schemas']['CreateServiceTokenInput']; + tool: 'customer_get_seats'; + arguments: components['schemas']['GetCustomerSeatsInput']; }; }; }; @@ -4285,7 +7089,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreateServiceTokenOutput']; + structuredContent: components['schemas']['GetCustomerSeatsOutput']; }; }; }; @@ -4310,29 +7114,34 @@ export interface operations { }; }; /** - * List service tokens - * @description List all service tokens for the authenticated customer. Secrets are never returned, only metadata. + * Register a signal + * @description Register a new signal from a signals agent. Signals represent audience segments or data signals that can be used for targeting. */ - service_token_list: { + signal_create: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for service_token_list */ + /** @description Request body for signal_create */ requestBody: { content: { /** * @example { - * "tool": "service_token_list", - * "arguments": {} + * "tool": "signal_create", + * "arguments": { + * "adcpAgentId": 100, + * "signalId": "example_id_123", + * "name": "Example Name", + * "access": [] + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'service_token_list'; - arguments: components['schemas']['ListServiceTokensInput']; + tool: 'signal_create'; + arguments: components['schemas']['RegisterSignalInput']; }; }; }; @@ -4342,7 +7151,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['ListServiceTokensOutput']; + structuredContent: components['schemas']['SignalCreate']; }; }; }; @@ -4367,31 +7176,31 @@ export interface operations { }; }; /** - * Get service token - * @description Get detailed information about a specific service token. The secret is never returned. + * Get signal details + * @description Get detailed information about a specific signal including its access configurations and regions. */ - service_token_get: { + signal_get: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for service_token_get */ + /** @description Request body for signal_get */ requestBody: { content: { /** * @example { - * "tool": "service_token_get", + * "tool": "signal_get", * "arguments": { - * "id": "1234567890" + * "signalId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'service_token_get'; - arguments: components['schemas']['GetServiceTokenInput']; + tool: 'signal_get'; + arguments: components['schemas']['GetSignalInput']; }; }; }; @@ -4401,7 +7210,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['GetServiceTokenOutput']; + structuredContent: components['schemas']['SignalGet']; }; }; }; @@ -4426,31 +7235,31 @@ export interface operations { }; }; /** - * Update service token - * @description Update a service token. Only name, description, and expiration can be modified. + * Update a signal + * @description Update an existing signal with new information, regions, or access configurations. */ - service_token_update: { + signal_update: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for service_token_update */ + /** @description Request body for signal_update */ requestBody: { content: { /** * @example { - * "tool": "service_token_update", + * "tool": "signal_update", * "arguments": { - * "id": "1234567890" + * "signalId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'service_token_update'; - arguments: components['schemas']['UpdateServiceTokenInput']; + tool: 'signal_update'; + arguments: components['schemas']['UpdateSignalFromAgentInput']; }; }; }; @@ -4460,7 +7269,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['UpdateServiceTokenOutput']; + structuredContent: components['schemas']['SignalUpdate']; }; }; }; @@ -4485,31 +7294,31 @@ export interface operations { }; }; /** - * Archive service token - * @description Archive (soft delete) a service token. This immediately invalidates the token for authentication. + * Delete a signal + * @description Delete (archive) a signal. This soft-deletes the signal and all associated access records. */ - service_token_archive: { + signal_delete: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for service_token_archive */ + /** @description Request body for signal_delete */ requestBody: { content: { /** * @example { - * "tool": "service_token_archive", + * "tool": "signal_delete", * "arguments": { - * "id": "1234567890" + * "signalId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'service_token_archive'; - arguments: components['schemas']['ArchiveServiceTokenInput']; + tool: 'signal_delete'; + arguments: components['schemas']['DeregisterSignalInput']; }; }; }; @@ -4519,7 +7328,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['ArchiveServiceTokenOutput']; + structuredContent: components['schemas']['SignalDelete']; }; }; }; @@ -4544,29 +7353,29 @@ export interface operations { }; }; /** - * Get customer info - * @description Get detailed information about a customer from the core database. + * List signals + * @description List signals with optional filtering by agent, scope, live status, and account. */ - customer_get: { + signal_list: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for customer_get */ + /** @description Request body for signal_list */ requestBody: { content: { /** * @example { - * "tool": "customer_get", + * "tool": "signal_list", * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'customer_get'; - arguments: components['schemas']['GetCustomerInput']; + tool: 'signal_list'; + arguments: components['schemas']['ListSignalsInput']; }; }; }; @@ -4576,7 +7385,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['GetCustomerOutput']; + structuredContent: components['schemas']['SignalList']; }; }; }; @@ -4601,29 +7410,29 @@ export interface operations { }; }; /** - * Get customer seats - * @description Get all seats associated with a customer from the core database. + * Discover signals + * @description Discover available signals in the marketplace. Returns signals that are accessible to the buyer based on public availability or proprietary access. */ - customer_get_seats: { + signal_discover: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for customer_get_seats */ + /** @description Request body for signal_discover */ requestBody: { content: { /** * @example { - * "tool": "customer_get_seats", + * "tool": "signal_discover", * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'customer_get_seats'; - arguments: components['schemas']['GetCustomerSeatsInput']; + tool: 'signal_discover'; + arguments: components['schemas']['DiscoverSignalsInput']; }; }; }; @@ -4633,7 +7442,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['GetCustomerSeatsOutput']; + structuredContent: components['schemas']['SignalDiscover']; }; }; }; diff --git a/src/types/platform-api.ts b/src/types/platform-api.ts index 2449ff6..f19f6e5 100644 --- a/src/types/platform-api.ts +++ b/src/types/platform-api.ts @@ -221,6 +221,41 @@ export interface paths { */ post: operations['creative_list']; }; + '/creative-sync-sales-agents': { + /** + * Sync creatives to sales agents + * @description Synchronize creatives to connected sales agents (DSPs, publisher platforms). + */ + post: operations['creative_sync_sales_agents']; + }; + '/media-buy-create': { + /** + * Create media buy + * @description Create a new media buy with budget, targeting, and creative specifications. + */ + post: operations['media_buy_create']; + }; + '/media-buy-update': { + /** + * Update media buy + * @description Update an existing media buy with new budget, targeting, or creative assignments. + */ + post: operations['media_buy_update']; + }; + '/media-buy-delete': { + /** + * Delete media buy + * @description Delete a media buy and cancel any active placements. + */ + post: operations['media_buy_delete']; + }; + '/media-buy-execute': { + /** + * Execute media buy + * @description Execute a media buy, sending it to the configured sales agents for placement. + */ + post: operations['media_buy_execute']; + }; '/media-buy-get': { /** * Get media buy @@ -235,6 +270,13 @@ export interface paths { */ post: operations['media_buy_list']; }; + '/media-product-discover': { + /** + * Discover media products + * @description Discover available media products from connected sales agents based on targeting criteria. + */ + post: operations['media_product_discover']; + }; '/media-product-list': { /** * List media products @@ -256,6 +298,55 @@ export interface paths { */ post: operations['agent_list']; }; + '/agent-account-list': { + /** + * List agent accounts + * @description List all your accounts registered with a specific agent. Only SALES agents support accounts. + */ + post: operations['agent_account_list']; + }; + '/agent-account-register': { + /** + * Register agent account + * @description Register your account with a SALES agent to access their products. Provide account credentials for authentication with the agent. + */ + post: operations['agent_account_register']; + }; + '/agent-account-unregister': { + /** + * Unregister agent account + * @description Unregister your account from a SALES agent. This deactivates your access to the agent but does not affect other customers. + */ + post: operations['agent_account_unregister']; + }; + '/agent-account-update': { + /** + * Update agent account + * @description Update authentication credentials for your account with a SALES agent. + */ + post: operations['agent_account_update']; + }; + '/tactic-create': { + /** + * Create tactic + * @description Create a new tactic defining how to achieve campaign objectives. + */ + post: operations['tactic_create']; + }; + '/tactic-update': { + /** + * Update tactic + * @description Update an existing tactic with new targeting, budget, or creative requirements. + */ + post: operations['tactic_update']; + }; + '/tactic-delete': { + /** + * Delete tactic + * @description Delete a tactic and all associated media buys. + */ + post: operations['tactic_delete']; + }; '/tactic-get': { /** * Get tactic @@ -270,6 +361,20 @@ export interface paths { */ post: operations['tactic_list']; }; + '/tactic-link-campaign': { + /** + * Link tactic to campaign + * @description Link a tactic to a campaign. + */ + post: operations['tactic_link_campaign']; + }; + '/tactic-unlink-campaign': { + /** + * Unlink tactic from campaign + * @description Unlink a tactic from a campaign. + */ + post: operations['tactic_unlink_campaign']; + }; '/outcomes-agent-get-proposals': { /** * Get proposals from outcome agents @@ -340,12 +445,56 @@ export interface paths { */ post: operations['customer_get_seats']; }; + '/signal-get': { + /** + * Get signal details + * @description Get detailed information about a specific signal including its access configurations and regions. + */ + post: operations['signal_get']; + }; + '/signal-list': { + /** + * List signals + * @description List signals with optional filtering by agent, scope, live status, and account. + */ + post: operations['signal_list']; + }; + '/signal-discover': { + /** + * Discover signals + * @description Discover available signals in the marketplace. Returns signals that are accessible to the buyer based on public availability or proprietary access. + */ + post: operations['signal_discover']; + }; } export type webhooks = Record; export interface components { schemas: { + AvailableBrandAgent: { + /** @example 100 */ + id: number; + /** @example Example Name */ + name: string; + }; + BitmapTargetingProfile: { + /** + * @description Targeting dimension name (e.g., country, region, city, device_type, browser, operating_system, language, day_part) + * @example Example Name + */ + dimensionName: string; + /** + * @description Include targeting item IDs + * @default [] + */ + anyOf?: (number | string)[]; + /** + * @description Exclude targeting item IDs + * @default [] + */ + noneOf?: (number | string)[]; + }; /** @description Budget range for campaign planning */ BudgetRange: { /** @@ -411,6 +560,35 @@ export interface components { estimated_cost?: string; }; }; + BitmapTargetingProfileResponse: { + /** + * @description Targeting dimension name (e.g., country, region, city, device_type) + * @example Example Name + */ + dimensionName: string; + /** + * @description Included targeting item keys (e.g., "US", "MX") + * @example [] + */ + anyOf: string[]; + /** + * @description Excluded targeting item keys + * @example [] + */ + noneOf: string[]; + }; + BrandStoryAgentSummary: { + /** @example 100 */ + id: number; + /** @example Example Name */ + name: string; + }; + BrandStandardsAgentSummary: { + /** @example 100 */ + id: number; + /** @example Example Name */ + name: string; + }; ListAssetsInput: { /** * @description Optional brand agent ID to filter assets @@ -622,10 +800,10 @@ export interface components { }; UpdateBrandStoryInput: { /** - * @description Brand story ID + * @description ID of the model to update * @example example_id_123 */ - brandStoryId: string; + previousModelId: string; /** * @description Story name * @example Example Name @@ -636,6 +814,16 @@ export interface components { * @example string */ prompt: string; + /** + * @description Language codes - if provided, replaces existing languages (use language_list tool to see available options) + * @example [] + */ + languages?: string[]; + /** + * @description If true, marks the new model as primary, otherwise inherits from previous model + * @example true + */ + isPrimary?: boolean; }; DeleteBrandStoryInput: { /** @@ -869,93 +1057,650 @@ export interface components { }; AssignCreativeInput: { /** @example example_id_123 */ - creativeId: string; + creative_id: string; /** @example example_id_123 */ - campaignId: string; + campaign_id: string; }; - CreateCreativeInput: { - /** @example 100 */ - brandAgentId: number; + CreativeCreateInput: { /** @example example_id_123 */ - organizationId?: string; + creative_id: string; /** @example Example Name */ name: string; - /** @example string */ - description?: string; - /** - * @example ADCP - * @enum {string} - */ - formatSource?: 'ADCP' | 'CREATIVE_AGENT' | 'PUBLISHER'; - /** - * @description Format identifier. For ADCP sources, this should be a format ID string recognized by the target sales agent (e.g., display_300x250, video_1920x1080). Valid formats are agent-specific. - * @example example_id_123 - */ - formatId?: string; - /** @example https://example.com */ - mediaUrl?: string; - /** - * @description Optional: Upload assets inline with the creative. Each asset requires: name, contentType, data (base64), and assetType. - * @example [] - */ - assets?: { - /** @description Filename (e.g., banner.png) */ - name: string; - /** @description MIME type (e.g., image/png, image/jpeg) */ - contentType: string; - /** - * Format: byte - * @description Base64-encoded file data (without data:image/png;base64, prefix) - */ - data: string; - /** - * @description Type of asset - * @enum {string} - */ - assetType: 'image' | 'video' | 'audio' | 'logo' | 'font'; - /** @description Optional tags */ - tags?: string[]; - }[]; - content?: { - [key: string]: unknown; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; }; - /** - * @example CREATIVE_AGENT - * @enum {string} - */ - assemblyMethod?: 'CREATIVE_AGENT' | 'ACTIVATION' | 'PUBLISHER'; - /** - * @description Optional campaign ID (object ID) to assign creative to - * @example example_id_123 - */ - campaignId?: string; + /** @example [] */ + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + /** @example [] */ + tags?: string[] | null; + /** @example true */ + approved?: boolean | null; + /** @example 100 */ + weight?: number | null; + /** @example [] */ + placement_ids?: string[] | null; + /** @example 100 */ + brand_agent_id: number; + /** @example example_id_123 */ + organization_id?: string; + /** @example example_id_123 */ + campaign_id?: string; }; - UpdateCreativeInput: { + CreativeUpdateInput: { /** @example example_id_123 */ - creativeId: string; + creative_id: string; /** @example Example Name */ name?: string; - /** @example string */ - status?: string; + format_id?: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets?: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + /** @example [] */ + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + /** @example [] */ + tags?: string[] | null; + /** @example true */ + approved?: boolean | null; + /** @example 100 */ + weight?: number | null; + /** @example [] */ + placement_ids?: string[] | null; + /** + * @example PENDING + * @enum {string} + */ + status?: 'PENDING' | 'APPROVED' | 'AUTO_APPROVED' | 'CHANGES_REQUESTED' | 'REJECTED'; }; DeleteCreativeInput: { /** @example example_id_123 */ - creativeId: string; + creative_id: string; }; GetCreativeInput: { /** @example example_id_123 */ - creativeId: string; + creative_id: string; }; ListCreativesInput: { /** @example 100 */ - campaignId?: number; + campaign_id?: number; /** @example 100 */ - brandAgentId?: number; - /** - * @example ADCP - * @enum {string} - */ - formatSource?: 'ADCP' | 'CREATIVE_AGENT' | 'PUBLISHER'; + brand_agent_id?: number; /** * @example ACTIVE * @enum {string} @@ -966,76 +1711,934 @@ export interface components { /** @example 100 */ skip?: number; }; - ListCountriesInput: Record; - ListLanguagesInput: Record; - GetMediaBuyInput: { + SyncSalesAgentsInput: { /** @example example_id_123 */ - mediaBuyId: string; - }; - ListMediaBuysInput: { - /** @example 100 */ - tacticId?: number; + creative_id: string; /** - * @example DRAFT - * @enum {string} + * @description Enable debug mode to return full ADCP request/response logs for troubleshooting + * @example true */ - status?: - | 'DRAFT' - | 'PENDING_APPROVAL' - | 'ACTIVE' - | 'PAUSED' - | 'COMPLETED' - | 'FAILED' - | 'REJECTED'; - /** @example 100 */ - take?: number; - /** @example 100 */ - skip?: number; + debug?: boolean; }; - OutcomesAgentGetProposalsInput: { + ListCountriesInput: Record; + ListLanguagesInput: Record; + MediaBuyCreateInput: { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: ('google_merchant_center' | 'facebook_catalog' | 'custom') | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + /** @example string */ + po_number?: string | null; + start_time: 'asap' | string; + /** @example string */ + end_time: string; + reporting_webhook?: + | ({ + url: string; + token?: string | null; + authentication: { + schemes: ('Bearer' | 'HMAC-SHA256')[]; + credentials: string; + }; + } & { + reporting_frequency: 'hourly' | 'daily' | 'monthly'; + requested_metrics?: + | ( + | 'impressions' + | 'spend' + | 'clicks' + | 'ctr' + | 'video_completions' + | 'completion_rate' + | 'conversions' + | 'viewability' + | 'engagement_rate' + )[] + | null; + }) + | null; + context?: { + [key: string]: unknown; + } | null; + ext?: { + [key: string]: unknown; + } | null; /** - * @description Campaign ID to get proposals for - * @example camp_123 + * @description Internal tactic ID + * @example 100 */ - campaignId: string; + tactic_id: number; /** - * @description Optional: Specific outcome agent IDs to query. If omitted, queries all outcome agents. - * @example [ - * "agent_123", - * "agent_456" - * ] + * @description Agent creating this media buy + * @example example_id_123 */ - agentIds?: string[]; - budgetRange?: components['schemas']['BudgetRange']; + agent_id: string; /** - * Format: date-time - * @description Campaign start date (ISO 8601) - * @example 2025-01-01T00:00:00Z + * @description Media buy name + * @example Example Name */ - startDate?: string; + name: string; /** - * Format: date-time - * @description Campaign end date (ISO 8601) - * @example 2025-01-31T23:59:59Z + * @description Media buy description + * @example string */ - endDate?: string; + description?: string; /** - * @description Advertising channels - * @example [ - * "display", - * "video" - * ] + * @description Products to include (converted to packages on execution) + * @example [] */ - channels?: ('ctv' | 'video' | 'display' | 'app' | 'social')[]; + products: { + product_id: string; + format_ids?: + | { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[] + | null; + budget: number; + pacing?: ('even' | 'asap' | 'front_loaded') | null; + pricing_option_id: string; + bid_price?: number | null; + targeting_overlay?: { + geo_country_any_of?: string[] | null; + geo_region_any_of?: string[] | null; + geo_metro_any_of?: string[] | null; + geo_postal_code_any_of?: string[] | null; + axe_include_segment?: string | null; + axe_exclude_segment?: string | null; + frequency_cap?: { + suppress_minutes: number; + } | null; + } | null; + creative_ids?: string[] | null; + creatives?: + | { + creative_id: string; + name: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: + | ('realtime' | 'hourly' | 'daily' | 'weekly') + | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + }[] + | null; + ext?: { + [key: string]: unknown; + } | null; + /** @description Display order in UI (internal only) */ + display_order?: number; + }[]; /** - * @description ISO 3166-1 alpha-2 country codes - * @example [ - * "US", - * "CA" - * ] + * @description Optional inline creatives + * @example [] */ - countries?: string[]; - /** + creatives?: { + creative_id: string; + name: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + }[]; + }; + UpdateMediaBuyInput: { + /** @example example_id_123 */ + media_buy_id: string; + /** @example Example Name */ + name?: string; + /** @example string */ + description?: string; + /** + * @example DRAFT + * @enum {string} + */ + status?: + | 'DRAFT' + | 'PENDING_APPROVAL' + | 'ACTIVE' + | 'PAUSED' + | 'COMPLETED' + | 'FAILED' + | 'REJECTED' + | 'ARCHIVED'; + /** @example [] */ + creative_ids?: string[]; + /** @example [] */ + products?: { + product_id: string; + budget?: number; + pacing?: ('even' | 'asap' | 'front_loaded') | null; + bid_price?: number | null; + pricing_option_id?: string; + }[]; + /** @example [] */ + packages?: { + package_id: string; + budget?: number | null; + pacing?: ('even' | 'asap' | 'front_loaded') | null; + bid_price?: number | null; + creative_ids?: string[]; + }[]; + /** + * @description Enable debug mode to return full ADCP request/response logs for troubleshooting + * @example true + */ + debug?: boolean; + }; + DeleteMediaBuyInput: { + /** @example example_id_123 */ + media_buy_id: string; + /** @example true */ + confirm: boolean; + }; + ExecuteMediaBuyInput: { + /** @example example_id_123 */ + media_buy_id: string; + /** + * @description Enable debug mode to return full ADCP request/response logs for troubleshooting + * @example true + */ + debug?: boolean; + }; + GetMediaBuyInput: { + /** @example example_id_123 */ + media_buy_id: string; + }; + ListMediaBuysInput: { + /** @example 100 */ + tactic_id?: number; + /** + * @example DRAFT + * @enum {string} + */ + status?: + | 'DRAFT' + | 'PENDING_APPROVAL' + | 'ACTIVE' + | 'PAUSED' + | 'COMPLETED' + | 'FAILED' + | 'REJECTED' + | 'ARCHIVED'; + /** @example 100 */ + take?: number; + /** @example 100 */ + skip?: number; + }; + OutcomesAgentGetProposalsInput: { + /** + * @description Campaign ID to get proposals for + * @example camp_123 + */ + campaignId: string; + /** + * @description Optional: Specific outcome agent IDs to query. If omitted, queries all outcome agents. + * @example [ + * "agent_123", + * "agent_456" + * ] + */ + agentIds?: string[]; + budgetRange?: components['schemas']['BudgetRange']; + /** + * Format: date-time + * @description Campaign start date (ISO 8601) + * @example 2025-01-01T00:00:00Z + */ + startDate?: string; + /** + * Format: date-time + * @description Campaign end date (ISO 8601) + * @example 2025-01-31T23:59:59Z + */ + endDate?: string; + /** + * @description Advertising channels + * @example [ + * "display", + * "video" + * ] + */ + channels?: ('ctv' | 'video' | 'display' | 'app' | 'social')[]; + /** + * @description ISO 3166-1 alpha-2 country codes + * @example [ + * "US", + * "CA" + * ] + */ + countries?: string[]; + /** * @description Campaign brief text * @example string */ @@ -1064,6 +2667,50 @@ export interface components { */ outcomeAgentId: string; }; + DiscoverProductsInput: { + /** + * @description Natural language description of campaign requirements (e.g., "Launch $50k luxury electric vehicle awareness campaign targeting 10M affluent buyers, 60 days, max CPM $15") + * @example string + */ + brief: string; + /** + * Format: uri + * @description Valid URL for the brand (e.g., company website https://example.com or hosted brand manifest JSON) + * @example https://example.com + */ + brandManifestUrl: string; + /** @description Structured filters for product discovery */ + filters?: { + /** @enum {string} */ + deliveryType?: 'guaranteed' | 'non_guaranteed'; + /** @description Filter for fixed price vs auction products */ + isFixedPrice?: boolean; + /** @description Filter by format types */ + formatTypes?: ('video' | 'display' | 'audio')[]; + /** @description Filter by specific structured format IDs (e.g., display_300x250_image). More precise than formatTypes. */ + formatIds?: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + /** @description Only return products accepting IAB standard formats */ + standardFormatsOnly?: boolean; + /** @description Minimum exposures/impressions needed for measurement validity */ + minExposures?: number; + }; + /** + * @description Optional: Query a specific sales agent by ID. If not provided, queries all active sales agents. + * @example example_id_123 + */ + agentId?: string; + /** + * @description Whether to save discovered products for future use (default: true) + * @example true + */ + saveToDatabase?: boolean; + }; ListProductsInput: { /** @example 100 */ take?: number; @@ -1079,11 +2726,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 @@ -1107,110 +2754,380 @@ export interface components { */ name?: string; }; - GetTacticInput: { - /** @example 100 */ - tacticId: number; - }; - ListTacticsInput: { - /** @example example_id_123 */ - campaignId?: string; - /** @example 100 */ - take?: number; - /** @example 100 */ - skip?: number; - }; - CreateServiceTokenInput: { + ListAgentAccountsInput: { /** - * @description Human-readable name for the service token - * @example Example Name + * @description The agent ID to list accounts for + * @example example_id_123 */ - name: string; + agentId: string; /** - * @description Optional description of the token purpose and usage - * @example string + * @description Agent types that support accounts. Defaults to ["SALES"]. Currently only SALES agents support accounts. + * @default [ + * "SALES" + * ] */ - description?: string; + supportedAgentTypes?: ('SALES' | 'OUTCOME' | 'SIGNAL')[]; + }; + RegisterAgentAccountInput: { /** - * @description Number of days until token expiration (max 365). If not provided, token does not expire - * @example 100 + * @description The agent ID to register an account with + * @example example_id_123 */ - expiresInDays?: number; + agentId: string; /** - * @description Token scope: CUSTOMER (full customer access) or SEAT (scoped to specific seat) - * @default CUSTOMER - * @enum {string} + * @description Account identifier + * @example example_id_123 */ - scope?: 'CUSTOMER' | 'SEAT'; + accountIdentifier: string; + /** @description Authentication configuration (optional). Use ADCP format: { type: "bearer" | "oauth" | "none", token: "..." } */ + auth?: + | { + /** @enum {string} */ + type: 'jwt'; + privateKey: string; + issuer: string; + subject: string; + keyId: string; + scope: string; + /** Format: uri */ + tokenEndpointUrl: string; + /** Format: uri */ + audienceUrl: string; + /** @enum {string} */ + algorithm?: 'ES256' | 'RS256'; + environment?: string; + } + | { + /** @enum {string} */ + type: 'bearer' | 'apikey' | 'api_key'; + token: string; + } + | { + /** @enum {string} */ + type: 'oauth' | 'oauth2'; + token: string; + } + | Record; /** - * @description Seat name (required when scope is SEAT). The seat will be looked up for the customer. - * @example Example Name + * @description Agent types that support accounts. Defaults to ["SALES"]. Currently only SALES agents support accounts. + * @default [ + * "SALES" + * ] */ - seatName?: string; + supportedAgentTypes?: ('SALES' | 'OUTCOME' | 'SIGNAL')[]; }; - UpdateServiceTokenInput: { + UnregisterAgentAccountInput: { /** - * Format: int64 - * @description The unique identifier of the service token to update - * @example 100 + * @description The agent ID to unregister your account from + * @example example_id_123 */ - id: number; + agentId: string; /** - * @description Updated human-readable name for the service token - * @example Example Name + * @description Must be true to confirm this destructive operation + * @example true */ - name?: string; + confirm: boolean; /** - * @description Updated description of the token purpose and usage - * @example string + * @description Agent types that support accounts. Defaults to ["SALES"]. Currently only SALES agents support accounts. + * @default [ + * "SALES" + * ] */ - description?: string; + supportedAgentTypes?: ('SALES' | 'OUTCOME' | 'SIGNAL')[]; + }; + UpdateAgentAccountInput: { /** - * @description Number of days to extend expiration from now (max 365). Updates the expiresAt timestamp - * @example 100 + * @description The agent ID + * @example example_id_123 */ - expiresInDays?: number; - }; - ArchiveServiceTokenInput: { + agentId: string; /** - * Format: int64 - * @description The unique identifier of the service token to archive - * @example 100 + * @description Account identifier + * @example example_id_123 */ - id: number; + accountIdentifier: string; + /** @description New authentication configuration */ + auth: + | { + /** @enum {string} */ + type: 'jwt'; + privateKey: string; + issuer: string; + subject: string; + keyId: string; + scope: string; + /** Format: uri */ + tokenEndpointUrl: string; + /** Format: uri */ + audienceUrl: string; + /** @enum {string} */ + algorithm?: 'ES256' | 'RS256'; + environment?: string; + } + | { + /** @enum {string} */ + type: 'bearer' | 'apikey' | 'api_key'; + token: string; + } + | { + /** @enum {string} */ + type: 'oauth' | 'oauth2'; + token: string; + } + | Record; + /** + * @description Agent types that support accounts. Defaults to ["SALES"]. Currently only SALES agents support accounts. + * @default [ + * "SALES" + * ] + */ + supportedAgentTypes?: ('SALES' | 'OUTCOME' | 'SIGNAL')[]; }; - GetServiceTokenInput: { + CreateTacticInput: { + /** @example example_id_123 */ + campaignId: string; + /** @example Example Name */ + name: string; + /** @example string */ + prompt?: string; + /** @example [] */ + channelCodes?: ('ctv' | 'video' | 'display' | 'app' | 'social')[]; + /** @example [] */ + countryCodes?: string[]; /** - * Format: int64 - * @description The unique identifier of the service token to retrieve - * @example 100 + * @description Language codes + * @example [] */ - id: number; + languages?: string[]; /** - * @description Whether to fetch the access_client_secret from Google Secret Manager. Defaults to false for security - * @default false + * @description Available brand standards for AI to select from based on prompt + * @example [] */ - includeSecret?: boolean; - }; - ListServiceTokensInput: { + availableBrandStandards?: components['schemas']['AvailableBrandAgent'][]; /** - * @description Whether to include archived tokens in the response - * @default false + * @description Available brand stories for AI to select from based on prompt + * @example [] */ - includeArchived?: boolean; + availableBrandStory?: components['schemas']['AvailableBrandAgent'][]; /** - * Format: int64 - * @description Filter tokens by seat ID - * @example 100 + * @description Bitmap targeting profiles for detailed targeting (validated against targeting_dimension table) + * @example [] */ - seatId?: number; + bitmapTargetingProfiles?: components['schemas']['BitmapTargetingProfile'][]; /** - * Format: int64 - * @description Filter tokens by user ID - * @example 100 + * @description IDs of brand story agents to associate with this tactic + * @example [] */ - userId?: number; - }; - BrandAgentUpdate: { + brandStoryAgentIds?: number[]; + /** + * @description IDs of brand standards agents to associate with this tactic + * @example [] + */ + brandStandardsAgentIds?: number[]; + }; + UpdateTacticInput: { + /** @example 100 */ + tacticId: number; + /** @example Example Name */ + name?: string; + /** @example string */ + prompt?: string; + /** @example [] */ + channelCodes?: ('ctv' | 'video' | 'display' | 'app' | 'social')[]; + /** @example [] */ + countryCodes?: string[]; + /** + * @description Available brand standards for AI to select from based on prompt + * @example [] + */ + availableBrandStandards?: components['schemas']['AvailableBrandAgent'][]; + /** + * @description Available brand stories for AI to select from based on prompt + * @example [] + */ + availableBrandStory?: components['schemas']['AvailableBrandAgent'][]; + /** + * @description Bitmap targeting profiles for detailed targeting (replaces existing profiles) + * @example [] + */ + bitmapTargetingProfiles?: components['schemas']['BitmapTargetingProfile'][]; + /** + * @description IDs of brand story agents to associate with this tactic + * @example [] + */ + brandStoryAgentIds?: number[]; + /** + * @description IDs of brand standards agents to associate with this tactic + * @example [] + */ + brandStandardsAgentIds?: number[]; + }; + DeleteTacticInput: { + /** @example 100 */ + tacticId: number; + /** @example true */ + confirm: boolean; + }; + GetTacticInput: { + /** @example 100 */ + tacticId: number; + }; + ListTacticsInput: { + /** @example example_id_123 */ + campaignId?: string; + /** @example 100 */ + take?: number; + /** @example 100 */ + skip?: number; + }; + LinkCampaignToTacticInput: { + /** @example 100 */ + tacticId: number; + /** @example example_id_123 */ + campaignId: string; + }; + UnlinkCampaignFromTacticInput: { + /** @example 100 */ + tacticId: number; + /** @example example_id_123 */ + campaignId: string; + }; + CreateServiceTokenInput: { + /** + * @description Human-readable name for the service token + * @example Example Name + */ + name: string; + /** + * @description Optional description of the token purpose and usage + * @example string + */ + description?: string; + /** + * @description Number of days until token expiration (max 365). If not provided, token does not expire + * @example 100 + */ + expiresInDays?: number; + /** + * @description Token scope: CUSTOMER (full customer access) or SEAT (scoped to specific seat) + * @default CUSTOMER + * @enum {string} + */ + scope?: 'CUSTOMER' | 'SEAT'; + /** + * @description Seat name (required when scope is SEAT). The seat will be looked up for the customer. + * @example Example Name + */ + seatName?: string; + /** + * @description User ID to associate with the token. Required for SuperAdmins creating tokens for other customers. If not provided, defaults to the authenticated user. + * @example 100 + */ + userId?: number; + }; + UpdateServiceTokenInput: { + /** + * Format: int64 + * @description The unique identifier of the service token to update + * @example 100 + */ + id: number; + /** + * @description Updated human-readable name for the service token + * @example Example Name + */ + name?: string; + /** + * @description Updated description of the token purpose and usage + * @example string + */ + description?: string; + /** + * @description Number of days to extend expiration from now (max 365). Updates the expiresAt timestamp + * @example 100 + */ + expiresInDays?: number; + }; + ArchiveServiceTokenInput: { + /** + * Format: int64 + * @description The unique identifier of the service token to archive + * @example 100 + */ + id: number; + }; + GetServiceTokenInput: { + /** + * Format: int64 + * @description The unique identifier of the service token to retrieve + * @example 100 + */ + id: number; + /** + * @description Whether to fetch the access_client_secret from Google Secret Manager. Defaults to false for security + * @default false + */ + includeSecret?: boolean; + }; + ListServiceTokensInput: { + /** + * @description Whether to include archived tokens in the response + * @default false + */ + includeArchived?: boolean; + /** + * Format: int64 + * @description Filter tokens by seat ID + * @example 100 + */ + seatId?: number; + /** + * Format: int64 + * @description Filter tokens by user ID + * @example 100 + */ + userId?: number; + }; + GetSignalInput: { + /** @example example_id_123 */ + signalId: string; + /** @example string */ + account?: string; + /** @default false */ + includeArchived?: boolean; + }; + ListSignalsInput: { + /** @example 100 */ + signalAgentId?: number; + /** + * @example PUBLIC + * @enum {string} + */ + scope?: 'PUBLIC' | 'PROPRIETARY'; + /** @example true */ + isLive?: boolean; + /** @example string */ + account?: string; + /** @default 20 */ + limit?: number; + /** @default 0 */ + offset?: number; + /** @default false */ + includeArchived?: boolean; + }; + DiscoverSignalsInput: { + /** @example example_id_123 */ + agentId?: string; + /** @example string */ + signalSpec?: string; + /** @example [] */ + signalIds?: string[]; + /** @default 20 */ + limit?: number; + /** @default 0 */ + offset?: number; + }; + BrandAgentUpdate: { /** @example 100 */ id: number; /** @example Example Name */ @@ -1224,6 +3141,13 @@ export interface components { manifestUrl?: string; /** @example 100 */ customerId: number; + /** + * Format: int64 + * @example 100 + */ + seatId?: number | null; + /** @example [] */ + countryCodes?: string[]; /** * Format: date-time * @example string @@ -1290,121 +3214,1093 @@ export interface components { }; CreativeGet: { /** @example example_id_123 */ - creativeId: string; + creative_id: string; /** @example Example Name */ name: string; - /** @example string */ + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + /** @example [] */ + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + /** @example [] */ + tags?: string[] | null; + /** @example true */ + approved?: boolean | null; + /** @example 100 */ + weight?: number | null; + /** @example [] */ + placement_ids?: string[] | null; + /** + * @description Internal creative status + * @example string + */ status: string; - /** @example example_id_123 */ - campaignId?: string; + /** + * @description Associated campaign ID + * @example example_id_123 + */ + campaign_id?: string; /** * Format: date-time * @example string */ - createdAt: string; + created_at: string; /** * Format: date-time * @example string */ - updatedAt: string; + updated_at: string; }; MediaBuyGet: { - /** @example example_id_123 */ - id: string; - /** @example 100 */ - tacticId: number; - /** @example 100 */ - customerId: number; - /** @example Example Name */ + /** + * @description ADCP media buy identifier + * @example example_id_123 + */ + media_buy_id: string; + /** + * @description Internal tactic ID + * @example 100 + */ + tactic_id: number; + /** + * @description Internal customer ID + * @example 100 + */ + customer_id: number; + /** + * @description Media buy name + * @example Example Name + */ name: string; - /** @example string */ + /** + * @description Media buy description + * @example string + */ description?: string; - /** @example [] */ + /** + * @description Internal status (DRAFT, ACTIVE, PAUSED, etc.) + * @example string + */ + status: string; + /** + * @description Pre-execution product configuration + * @example [] + */ products?: { - mediaProductId: string; - salesAgentId: string; - salesAgentName?: string; - budgetAmount?: number; - budgetCurrency?: string; - pricingCpm?: number; - pricingSignalCost?: number; - displayOrder?: number; - creativeFormats?: { + /** @description ADCP product identifier */ + product_id: string; + sales_agent_id: string; + sales_agent_name?: string; + /** @description ADCP budget field */ + budget?: number; + /** + * @description ADCP pacing field + * @enum {string} + */ + pacing?: 'asap' | 'even' | 'front_loaded'; + pricing_option_id?: string; + bid_price?: number; + display_order?: number; + creative_formats?: { agent_url: string; id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }[]; }[]; - /** @example [] */ + /** + * @description Post-execution ADCP packages (enriched) + * @example [] + */ packages?: { - packageId: string; - productIds: string[]; - impressions: number; - budget: number; - targetingOverlay: unknown; + package_id: string; + buyer_ref?: string | null; + product_id?: string | null; + budget?: number | null; + pacing?: ('even' | 'asap' | 'front_loaded') | null; + pricing_option_id?: string | null; + bid_price?: number | null; + impressions?: number | null; + targeting_overlay?: { + geo_country_any_of?: string[] | null; + geo_region_any_of?: string[] | null; + geo_metro_any_of?: string[] | null; + geo_postal_code_any_of?: string[] | null; + axe_include_segment?: string | null; + axe_exclude_segment?: string | null; + frequency_cap?: { + suppress_minutes: number; + } | null; + } | null; + creative_assignments?: + | { + creative_id: string; + weight?: number | null; + placement_ids?: string[] | null; + }[] + | null; + format_ids_to_provide?: + | { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[] + | null; + paused?: boolean | null; + ext?: { + [key: string]: unknown; + } | null; + /** @description Array of product IDs (enriched from joins) */ + product_ids?: string[]; + /** @description Full creative objects (enriched from joins) */ creatives: { - creativeId: string; + creative_id: string; name: string; - formatId: string; - mediaUrl: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ status: string; }[]; /** Format: date-time */ - createdAt: string; + created_at: string; /** Format: date-time */ - updatedAt: string; - salesAgentId?: string; - salesAgentName?: string; - pricingCpm?: number; - pricingSignalCost?: number; - bidPrice?: number; - pricingOptionId?: string; - creativeFormats?: { + updated_at: string; + sales_agent_id?: string; + sales_agent_name?: string; + creative_formats?: { agent_url: string; id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }[]; }[]; - /** @example [] */ - creatives?: { - creativeId: string; - name: string; - formatId: string; - mediaUrl: string; + /** + * @description Full creative objects (enriched from joins) + * @example [] + */ + creatives?: { + creative_id: string; + name: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ status: string; }[]; - pricing: { - cpm: number; - signalCost?: number; - totalCpm: number; - }; - /** @example string */ - status: string; + /** @description ADCP-specific metadata (from execute response) */ adcp?: { - mediaBuyId?: string; + media_buy_id?: string; status?: string; - webhookUrl?: string; + webhook_url?: string; }; + /** @description Performance metrics (from reporting) */ performance?: { impressions: number; spend: number; clicks: number; /** Format: date-time */ - lastUpdated?: string; + last_updated?: string; }; /** * Format: date-time + * @description Created timestamp * @example string */ - archivedAt?: string; + created_at: string; /** * Format: date-time + * @description Updated timestamp * @example string */ - createdAt: string; + updated_at: string; /** * Format: date-time + * @description Archived timestamp * @example string */ - updatedAt: string; + archived_at?: string | null; }; TacticGet: { /** @example 100 */ @@ -1421,6 +4317,26 @@ export interface components { countryCodes: string[]; /** @example 100 */ mediaBuyCount?: number; + /** + * @description Count of targeting dimensions (channels, countries, bitmap profiles, brand agents) + * @example 100 + */ + targetingCount?: number; + /** + * @description Bitmap targeting profiles with targeting item keys for UI display + * @example [] + */ + bitmapTargetingProfiles?: components['schemas']['BitmapTargetingProfileResponse'][]; + /** + * @description Brand story agents associated with this tactic + * @example [] + */ + brandStoryAgents?: components['schemas']['BrandStoryAgentSummary'][]; + /** + * @description Brand standards agents associated with this tactic + * @example [] + */ + brandStandardsAgents?: components['schemas']['BrandStandardsAgentSummary'][]; /** * Format: date-time * @example string @@ -1682,6 +4598,11 @@ export interface components { customerId: number; /** @description Whether the seat is currently active */ active: boolean; + /** + * @description Seat type (BUYER or ACTIVATION) + * @enum {string} + */ + type: 'BUYER' | 'ACTIVATION'; }[]; /** * @description Total number of seats returned @@ -1689,26 +4610,88 @@ 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 */ total: number; }; + SyncSalesAgentsOutput: { + /** @example true */ + success: boolean; + /** @example example_id_123 */ + creative_id: string; + /** @example example_id_123 */ + campaign_id?: string; + debug_info?: { + request?: unknown; + response?: unknown; + debugLogs?: { + type: string; + timestamp?: string; + message?: string; + request?: { + method?: string; + url?: string; + headers?: { + [key: string]: string; + }; + body?: unknown; + }; + response?: { + status?: number; + statusText?: string; + headers?: { + [key: string]: string; + }; + body?: unknown; + }; + }[]; + error?: unknown; + agentResults?: { + agentId: string; + agentName: string; + request?: unknown; + response?: unknown; + debugLogs?: { + type: string; + timestamp?: string; + message?: string; + request?: { + method?: string; + url?: string; + headers?: { + [key: string]: string; + }; + body?: unknown; + }; + response?: { + status?: number; + statusText?: string; + headers?: { + [key: string]: string; + }; + body?: unknown; + }; + }[]; + error?: unknown; + }[]; + }; + }; CountryList: { /** @example 100 */ total: number; @@ -1727,7 +4710,839 @@ export interface components { displayName: string; }[]; }; - MediaBuyList: { + UpdateMediaBuyOutput: { + /** + * @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; + /** + * @description Media buy description + * @example string + */ + description?: string; + /** + * @description Internal status (DRAFT, ACTIVE, PAUSED, etc.) + * @example string + */ + status: string; + /** + * @description Pre-execution product configuration + * @example [] + */ + products?: { + /** @description ADCP product identifier */ + product_id: string; + sales_agent_id: string; + sales_agent_name?: string; + /** @description ADCP budget field */ + budget?: number; + /** + * @description ADCP pacing field + * @enum {string} + */ + pacing?: 'asap' | 'even' | 'front_loaded'; + pricing_option_id?: string; + bid_price?: number; + display_order?: number; + creative_formats?: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + }[]; + /** + * @description Post-execution ADCP packages (enriched) + * @example [] + */ + packages?: { + package_id: string; + buyer_ref?: string | null; + product_id?: string | null; + budget?: number | null; + pacing?: ('even' | 'asap' | 'front_loaded') | null; + pricing_option_id?: string | null; + bid_price?: number | null; + impressions?: number | null; + targeting_overlay?: { + geo_country_any_of?: string[] | null; + geo_region_any_of?: string[] | null; + geo_metro_any_of?: string[] | null; + geo_postal_code_any_of?: string[] | null; + axe_include_segment?: string | null; + axe_exclude_segment?: string | null; + frequency_cap?: { + suppress_minutes: number; + } | null; + } | null; + creative_assignments?: + | { + creative_id: string; + weight?: number | null; + placement_ids?: string[] | null; + }[] + | null; + format_ids_to_provide?: + | { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[] + | null; + paused?: boolean | null; + ext?: { + [key: string]: unknown; + } | null; + /** @description Array of product IDs (enriched from joins) */ + product_ids?: string[]; + /** @description Full creative objects (enriched from joins) */ + creatives: { + creative_id: string; + name: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ + status: string; + }[]; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + sales_agent_id?: string; + sales_agent_name?: string; + creative_formats?: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + }[]; + /** + * @description Full creative objects (enriched from joins) + * @example [] + */ + creatives?: { + creative_id: string; + name: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ + status: string; + }[]; + /** @description ADCP-specific metadata (from execute response) */ + adcp?: { + 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; + debug_info?: { + request?: unknown; + response?: unknown; + debugLogs?: { + type: string; + timestamp?: string; + message?: string; + request?: { + method?: string; + url?: string; + headers?: { + [key: string]: string; + }; + body?: unknown; + }; + response?: { + status?: number; + statusText?: string; + headers?: { + [key: string]: string; + }; + body?: unknown; + }; + }[]; + error?: unknown; + }; + }; + DeleteMediaBuyOutput: { + /** @example true */ + success: boolean; + /** @example example_id_123 */ + media_buy_id: string; + }; + ExecuteMediaBuyOutput: { + /** @example true */ + success: boolean; + /** @example example_id_123 */ + media_buy_id: string; + /** @example string */ + status: string; + /** @example example_id_123 */ + adcp_media_buy_id?: string; + /** @example string */ + adcp_status?: string; + debug_info?: { + request?: unknown; + response?: unknown; + debugLogs?: { + type: string; + timestamp?: string; + message?: string; + request?: { + method?: string; + url?: string; + headers?: { + [key: string]: string; + }; + body?: unknown; + }; + response?: { + status?: number; + statusText?: string; + headers?: { + [key: string]: string; + }; + body?: unknown; + }; + }[]; + error?: unknown; + }; + }; + ListMediaBuysOutput: { /** @example 100 */ total: number; /** @example [] */ @@ -1846,67 +5661,611 @@ export interface components { campaignId: string | null; }[]; }; - MediaProductList: { + MediaProductDiscover: { + /** @example true */ + success: boolean; /** @example 100 */ - total: number; + products_found: number; + /** @example 100 */ + products_saved: number; + /** @example 100 */ + successful_agents: number; + /** @example 100 */ + failed_agents: number; /** @example [] */ - items: { - id: string; - productId: string; + products: { + product_id: string; name: string; - salesAgent?: string; - salesAgentId?: string; - salesAgentName?: string; - /** @enum {string} */ - deliveryType: 'guaranteed' | 'non_guaranteed'; - format?: string; - creativeFormats?: - | string[] - | { - agent_url: string; - id: string; - }[]; - }[]; - }; - AgentGet: - | { - agentId: string; - name: string; - /** @enum {string} */ - type: 'SALES' | 'OUTCOME'; - status: string; - relationship: string; - endpointUrl: string; - protocol: string; - authenticationType: string; - description?: string; - organizationId?: string; - registeredBy?: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - updatedAt: string; - } - | { - agentId: string; + description: string; + /** @description Publisher property selectors */ + publisher_properties?: { + property_id?: string; + property_type?: string; + name?: string; + identifiers?: { + type: string; + value: string; + include_subdomains?: boolean; + }[]; + tags?: string[]; + publisher_domain?: string; + }[]; + format_ids: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + /** @description Specific placements within product */ + placements?: { + placement_id: string; name: string; - /** @enum {string} */ - type: 'SALES' | 'OUTCOME'; - status: string; - relationship: string; - endpointUrl: string; - protocol: string; - authenticationType: string; description?: string; - organizationId?: string; - registeredBy?: string; - /** Format: date-time */ - createdAt: string; - /** Format: date-time */ - updatedAt: string; - customerAccountCount: number; + format_ids?: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + }[]; + delivery_type: 'guaranteed' | 'non_guaranteed'; + pricing_options: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + view_threshold: + | number + | { + duration_seconds: number; + }; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number | null; + sov_percentage?: number | null; + loop_duration_seconds?: number | null; + min_plays_per_hour?: number | null; + venue_package?: string | null; + estimated_impressions?: number | null; + daypart?: string | null; + } | null; + min_spend_per_package?: number | null; + } + )[]; + /** @description Estimated impressions for guaranteed products */ + estimated_exposures?: number; + /** @description Measurement details */ + measurement?: { + type: string; + attribution: string; + window?: string; + reporting: string; + }; + /** @description Delivery measurement provider and methodology */ + delivery_measurement?: { + provider: string; + notes?: string; + }; + /** @description Available reporting options */ + reporting_capabilities?: { + supported_metrics?: string[]; + reporting_frequency?: string[]; + custom_dimensions?: string[]; + }; + /** @description Creative requirements and restrictions */ + creative_policy?: { + max_file_size?: number; + allowed_formats?: string[]; + restricted_categories?: string[]; + approval_required?: boolean; + guidelines_url?: string; + }; + /** @description Whether this is a custom product */ + is_custom?: boolean; + /** @description AI-generated relevance explanation included when discovering products */ + brief_relevance?: string; + /** + * Format: date-time + * @description Expiration for custom products + */ + expires_at?: string; + /** @description Standard visual card */ + product_card?: { + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + manifest: { + [key: string]: unknown; + }; }; - AgentList: { + /** @description Detailed carousel card */ + product_card_detailed?: { + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + manifest: { + [key: string]: unknown; + }; + }; + /** @description Extension data */ + ext?: { + [key: string]: unknown; + }; + /** @description Internal database ID */ + id: string; + /** @description Customer who owns this product (null = generic product) */ + customer_id: number | null; + /** @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'; + /** @description ADCP format_ids array of FormatID objects {agent_url, id} */ + formats?: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + /** @description Supported targeting capabilities */ + supported_targeting?: string[]; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + }[]; + /** @example [] */ + agent_results?: { + agentId: string; + agentName: string; + success: boolean; + productCount: number; + error?: string; + debugLogs?: { + type: string; + timestamp?: string; + message?: string; + request?: { + method?: string; + url?: string; + headers?: { + [key: string]: string; + }; + body?: unknown; + }; + response?: { + status?: number; + statusText?: string; + headers?: { + [key: string]: string; + }; + body?: unknown; + }; + }[]; + rawResponseData?: unknown; + }[]; + }; + MediaProductList: { + /** @example 100 */ + total: number; + /** @example [] */ + items: { + product_id: string; + name: string; + description: string; + /** @description Publisher property selectors */ + publisher_properties?: { + property_id?: string; + property_type?: string; + name?: string; + identifiers?: { + type: string; + value: string; + include_subdomains?: boolean; + }[]; + tags?: string[]; + publisher_domain?: string; + }[]; + format_ids: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + /** @description Specific placements within product */ + placements?: { + placement_id: string; + name: string; + description?: string; + format_ids?: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + }[]; + delivery_type: 'guaranteed' | 'non_guaranteed'; + pricing_options: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + view_threshold: + | number + | { + duration_seconds: number; + }; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number | null; + sov_percentage?: number | null; + loop_duration_seconds?: number | null; + min_plays_per_hour?: number | null; + venue_package?: string | null; + estimated_impressions?: number | null; + daypart?: string | null; + } | null; + min_spend_per_package?: number | null; + } + )[]; + /** @description Estimated impressions for guaranteed products */ + estimated_exposures?: number; + /** @description Measurement details */ + measurement?: { + type: string; + attribution: string; + window?: string; + reporting: string; + }; + /** @description Delivery measurement provider and methodology */ + delivery_measurement?: { + provider: string; + notes?: string; + }; + /** @description Available reporting options */ + reporting_capabilities?: { + supported_metrics?: string[]; + reporting_frequency?: string[]; + custom_dimensions?: string[]; + }; + /** @description Creative requirements and restrictions */ + creative_policy?: { + max_file_size?: number; + allowed_formats?: string[]; + restricted_categories?: string[]; + approval_required?: boolean; + guidelines_url?: string; + }; + /** @description Whether this is a custom product */ + is_custom?: boolean; + /** @description AI-generated relevance explanation included when discovering products */ + brief_relevance?: string; + /** + * Format: date-time + * @description Expiration for custom products + */ + expires_at?: string; + /** @description Standard visual card */ + product_card?: { + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + manifest: { + [key: string]: unknown; + }; + }; + /** @description Detailed carousel card */ + product_card_detailed?: { + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + manifest: { + [key: string]: unknown; + }; + }; + /** @description Extension data */ + ext?: { + [key: string]: unknown; + }; + /** @description Internal database ID */ + id: string; + /** @description Customer who owns this product (null = generic product) */ + customer_id: number | null; + /** @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'; + /** @description ADCP format_ids array of FormatID objects {agent_url, id} */ + formats?: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + /** @description Supported targeting capabilities */ + supported_targeting?: string[]; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + }[]; + }; + AgentGet: + | { + agentId: string; + name: string; + /** @enum {string} */ + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; + status: string; + relationship: string; + endpointUrl: string; + protocol: string; + authenticationType: string; + description?: string; + organizationId?: string; + registeredBy?: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string; + } + | { + agentId: string; + name: string; + /** @enum {string} */ + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; + status: string; + relationship: string; + endpointUrl: string; + protocol: string; + authenticationType: string; + description?: string; + organizationId?: string; + registeredBy?: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string; + customerAccountCount: number; + /** @enum {string|null} */ + reportingType?: 'WEBHOOK' | 'BUCKET' | 'POLLING' | null; + /** @enum {string|null} */ + reportingPollingCadence?: 'DAILY' | 'MONTHLY' | null; + }; + AgentList: { /** @example 100 */ total: number; /** @example [] */ @@ -1915,7 +6274,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 +6284,7 @@ export interface components { agentId: string; name: string; /** @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; status: string; relationship: string; endpointUrl: string; @@ -1934,12 +6293,88 @@ export interface components { } )[]; }; + AgentAccountList: { + /** @example 100 */ + total: number; + /** @example [] */ + items: { + id: string; + accountIdentifier: string; + status: string; + registeredBy?: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string; + }[]; + }; + AgentAccountRegister: { + /** @example example_id_123 */ + accountId: string; + /** @example example_id_123 */ + adcpAgentId: string; + /** @example string */ + status: string; + }; + AgentAccountUnregister: { + /** @example true */ + success: boolean; + /** @example example_id_123 */ + agentId: string; + }; + AgentAccountUpdate: { + /** @example example_id_123 */ + id: string; + /** @example string */ + status: string; + }; + TacticCreate: { + /** @example 100 */ + id: number; + /** @example Example Name */ + name: string; + /** @example string */ + prompt?: string; + /** @example example_id_123 */ + campaignId: string; + /** @example [] */ + channelCodes: string[]; + /** @example [] */ + countryCodes: string[]; + /** + * Format: date-time + * @example string + */ + createdAt: string; + }; + TacticDelete: { + /** @example true */ + success: boolean; + /** @example 100 */ + tacticId: number; + }; TacticList: { /** @example 100 */ total: number; /** @example [] */ items: components['schemas']['TacticGetOutput'][]; }; + TacticLinkCampaign: { + /** @example true */ + success: boolean; + /** @example 100 */ + tacticId: number; + /** @example example_id_123 */ + campaignId: string; + }; + TacticUnlinkCampaign: { + /** @example true */ + success: boolean; + /** @example 100 */ + tacticId: number; + /** @example example_id_123 */ + campaignId: string; + }; CreateServiceTokenOutput: { /** * Format: int64 @@ -2145,6 +6580,8 @@ export interface components { * @description User ID if token is scoped to a specific user */ userId?: number; + /** @description Email of the user who owns this token */ + userEmail?: string; /** @description Optional organization identifier for scoping the token */ organizationId?: string; /** @description Human-readable name of the token */ @@ -2179,6 +6616,656 @@ export interface components { * @example 100 */ count: number; + /** + * @description Whether the requesting user has admin privileges (can see all tokens) + * @example true + */ + isAdmin: boolean; + }; + SignalGet: { + signal: { + id: number; + signalId: string; + adcpAgentId: number; + name: string; + description: string | null; + keyType: + | ( + | 'hour' + | 'half_hour' + | 'day' + | 'property' + | 'publisher' + | 'seller' + | 'content_channel' + | 'content_network' + | 'content_show' + | 'content_series' + | 'content_language' + | 'content_genre' + | 'content_rating' + | 'content_livestream' + | 'content_length_min' + | 'content_length_max' + | 'dma' + | 'city' + | 'country' + | 'region' + | 'postal_code' + | 'provider_category' + | 'provider_segment' + | 'device_type' + | 'device_model' + | 'device_make' + | 'operating_system' + | 'co2e_decile' + | 'viewability_decile' + | 'attention_potential_decile' + | 'completion_rate_decile' + | 'maid' + | 'liveramp' + | 'lat_lng_radius' + | 'id5' + | 'coreid' + | 'yahoo_connect' + )[] + | null; + regions: ('NORAM' | 'LATAM' | 'EMEA' | 'APAC' | 'ANZ' | 'GLOBAL')[] | null; + metadata: { + [key: string]: unknown; + } | null; + /** Format: date-time */ + archivedAt: string | null; + createdBy: string | null; + updatedBy: string | null; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string; + }; + /** @example [] */ + access: { + id: number; + signalId: number; + account: string; + /** @enum {string} */ + scope: 'PUBLIC' | 'PROPRIETARY'; + pricingOptions: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + view_threshold: + | number + | { + duration_seconds: number; + }; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number | null; + sov_percentage?: number | null; + loop_duration_seconds?: number | null; + min_plays_per_hour?: number | null; + venue_package?: string | null; + estimated_impressions?: number | null; + daypart?: string | null; + } | null; + min_spend_per_package?: number | null; + } + )[]; + /** @enum {string} */ + type: 'agent'; + agentUrl: string; + isLive: boolean; + /** Format: date-time */ + deployedAt: string | null; + estimatedActivationDurationMinutes: number | null; + decisioningPlatformSegmentId: string | null; + /** Format: date-time */ + archivedAt: string | null; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string; + }[]; + }; + SignalList: { + /** @example [] */ + signals: { + id: number; + signalId: string; + adcpAgentId: number; + name: string; + description: string | null; + keyType: + | ( + | 'hour' + | 'half_hour' + | 'day' + | 'property' + | 'publisher' + | 'seller' + | 'content_channel' + | 'content_network' + | 'content_show' + | 'content_series' + | 'content_language' + | 'content_genre' + | 'content_rating' + | 'content_livestream' + | 'content_length_min' + | 'content_length_max' + | 'dma' + | 'city' + | 'country' + | 'region' + | 'postal_code' + | 'provider_category' + | 'provider_segment' + | 'device_type' + | 'device_model' + | 'device_make' + | 'operating_system' + | 'co2e_decile' + | 'viewability_decile' + | 'attention_potential_decile' + | 'completion_rate_decile' + | 'maid' + | 'liveramp' + | 'lat_lng_radius' + | 'id5' + | 'coreid' + | 'yahoo_connect' + )[] + | null; + regions: ('NORAM' | 'LATAM' | 'EMEA' | 'APAC' | 'ANZ' | 'GLOBAL')[] | null; + metadata: { + [key: string]: unknown; + } | null; + /** Format: date-time */ + archivedAt: string | null; + createdBy: string | null; + updatedBy: string | null; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string; + access: { + id: number; + signalId: number; + account: string; + /** @enum {string} */ + scope: 'PUBLIC' | 'PROPRIETARY'; + pricingOptions: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + view_threshold: + | number + | { + duration_seconds: number; + }; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number | null; + sov_percentage?: number | null; + loop_duration_seconds?: number | null; + min_plays_per_hour?: number | null; + venue_package?: string | null; + estimated_impressions?: number | null; + daypart?: string | null; + } | null; + min_spend_per_package?: number | null; + } + )[]; + /** @enum {string} */ + type: 'agent'; + agentUrl: string; + isLive: boolean; + /** Format: date-time */ + deployedAt: string | null; + estimatedActivationDurationMinutes: number | null; + decisioningPlatformSegmentId: string | null; + /** Format: date-time */ + archivedAt: string | null; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string; + }[]; + }[]; + /** @example 100 */ + total: number; + /** @example 100 */ + limit: number; + /** @example 100 */ + offset: number; + }; + SignalDiscover: { + /** @example [] */ + agentResults: { + agentId: string; + agentName: string; + success: boolean; + signalCount: number; + error?: string; + }[]; + /** @example [] */ + signals: { + signalId: string; + name: string; + description: string; + dataProvider: string; + coveragePercentage: number | null; + access: { + account: string | null; + scope: string; + pricingOptions: ( + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'vcpm'; + currency: string; + /** @enum {boolean} */ + is_fixed: false; + price_guidance: { + floor: number; + p25?: number | null; + p50?: number | null; + p75?: number | null; + p90?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpc'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpcv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpv'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + view_threshold: + | number + | { + duration_seconds: number; + }; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'cpp'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters: { + demographic: string; + min_points?: number | null; + }; + min_spend_per_package?: number | null; + } + | { + pricing_option_id: string; + /** @enum {string} */ + pricing_model: 'flat_rate'; + rate: number; + currency: string; + /** @enum {boolean} */ + is_fixed: true; + parameters?: { + duration_hours?: number | null; + sov_percentage?: number | null; + loop_duration_seconds?: number | null; + min_plays_per_hour?: number | null; + venue_package?: string | null; + estimated_impressions?: number | null; + daypart?: string | null; + } | null; + min_spend_per_package?: number | null; + } + )[]; + isLive: boolean; + }[]; + regions: ('NORAM' | 'LATAM' | 'EMEA' | 'APAC' | 'ANZ' | 'GLOBAL')[] | null; + keyType: + | ( + | 'hour' + | 'half_hour' + | 'day' + | 'property' + | 'publisher' + | 'seller' + | 'content_channel' + | 'content_network' + | 'content_show' + | 'content_series' + | 'content_language' + | 'content_genre' + | 'content_rating' + | 'content_livestream' + | 'content_length_min' + | 'content_length_max' + | 'dma' + | 'city' + | 'country' + | 'region' + | 'postal_code' + | 'provider_category' + | 'provider_segment' + | 'device_type' + | 'device_model' + | 'device_make' + | 'operating_system' + | 'co2e_decile' + | 'viewability_decile' + | 'attention_potential_decile' + | 'completion_rate_decile' + | 'maid' + | 'liveramp' + | 'lat_lng_radius' + | 'id5' + | 'coreid' + | 'yahoo_connect' + )[] + | null; + metadata: { + [key: string]: unknown; + } | null; + }[]; + /** @example 100 */ + total: number; + }; + BitmapTargetingProfileResponseOutput: { + /** + * @description Targeting dimension name (e.g., country, region, city, device_type) + * @example Example Name + */ + dimensionName: string; + /** + * @description Included targeting item keys (e.g., "US", "MX") + * @example [] + */ + anyOf: string[]; + /** + * @description Excluded targeting item keys + * @example [] + */ + noneOf: string[]; + }; + BrandStoryAgentSummaryOutput: { + /** @example 100 */ + id: number; + /** @example Example Name */ + name: string; + }; + BrandStandardsAgentSummaryOutput: { + /** @example 100 */ + id: number; + /** @example Example Name */ + name: string; }; /** @description Visual card data for rendering proposals in marketplace UI, following ADCP product card pattern */ ProposalCardOutput: { @@ -2245,6 +7332,29 @@ export interface components { */ currency: string; }; + AvailableBrandAgentOutput: { + /** @example 100 */ + id: number; + /** @example Example Name */ + name: string; + }; + BitmapTargetingProfileOutput: { + /** + * @description Targeting dimension name (e.g., country, region, city, device_type, browser, operating_system, language, day_part) + * @example Example Name + */ + dimensionName: string; + /** + * @description Include targeting item IDs + * @default [] + */ + anyOf: (number | string)[]; + /** + * @description Exclude targeting item IDs + * @default [] + */ + noneOf: (number | string)[]; + }; BrandAgentUpdateOutput: { /** @example 100 */ id: number; @@ -2259,6 +7369,13 @@ export interface components { manifestUrl?: string; /** @example 100 */ customerId: number; + /** + * Format: int64 + * @example 100 + */ + seatId?: number | null; + /** @example [] */ + countryCodes?: string[]; /** * Format: date-time * @example string @@ -2325,121 +7442,1093 @@ export interface components { }; CreativeGetOutput: { /** @example example_id_123 */ - creativeId: string; + creative_id: string; /** @example Example Name */ name: string; - /** @example string */ - status: string; - /** @example example_id_123 */ - campaignId?: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + /** @example [] */ + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + /** @example [] */ + tags?: string[] | null; + /** @example true */ + approved?: boolean | null; + /** @example 100 */ + weight?: number | null; + /** @example [] */ + placement_ids?: string[] | null; + /** + * @description Internal creative status + * @example string + */ + status: string; + /** + * @description Associated campaign ID + * @example example_id_123 + */ + campaign_id?: string; /** * Format: date-time * @example string */ - createdAt: string; + created_at: string; /** * Format: date-time * @example string */ - updatedAt: string; + updated_at: string; }; MediaBuyGetOutput: { - /** @example example_id_123 */ - id: string; - /** @example 100 */ - tacticId: number; - /** @example 100 */ - customerId: number; - /** @example Example Name */ + /** + * @description ADCP media buy identifier + * @example example_id_123 + */ + media_buy_id: string; + /** + * @description Internal tactic ID + * @example 100 + */ + tactic_id: number; + /** + * @description Internal customer ID + * @example 100 + */ + customer_id: number; + /** + * @description Media buy name + * @example Example Name + */ name: string; - /** @example string */ + /** + * @description Media buy description + * @example string + */ description?: string; - /** @example [] */ + /** + * @description Internal status (DRAFT, ACTIVE, PAUSED, etc.) + * @example string + */ + status: string; + /** + * @description Pre-execution product configuration + * @example [] + */ products?: { - mediaProductId: string; - salesAgentId: string; - salesAgentName?: string; - budgetAmount?: number; - budgetCurrency?: string; - pricingCpm?: number; - pricingSignalCost?: number; - displayOrder?: number; - creativeFormats?: { + /** @description ADCP product identifier */ + product_id: string; + sales_agent_id: string; + sales_agent_name?: string; + /** @description ADCP budget field */ + budget?: number; + /** + * @description ADCP pacing field + * @enum {string} + */ + pacing?: 'asap' | 'even' | 'front_loaded'; + pricing_option_id?: string; + bid_price?: number; + display_order?: number; + creative_formats?: { agent_url: string; id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }[]; }[]; - /** @example [] */ + /** + * @description Post-execution ADCP packages (enriched) + * @example [] + */ packages?: { - packageId: string; - productIds: string[]; - impressions: number; - budget: number; - targetingOverlay: unknown; + package_id: string; + buyer_ref?: string | null; + product_id?: string | null; + budget?: number | null; + pacing?: ('even' | 'asap' | 'front_loaded') | null; + pricing_option_id?: string | null; + bid_price?: number | null; + impressions?: number | null; + targeting_overlay?: { + geo_country_any_of?: string[] | null; + geo_region_any_of?: string[] | null; + geo_metro_any_of?: string[] | null; + geo_postal_code_any_of?: string[] | null; + axe_include_segment?: string | null; + axe_exclude_segment?: string | null; + frequency_cap?: { + suppress_minutes: number; + } | null; + } | null; + creative_assignments?: + | { + creative_id: string; + weight?: number | null; + placement_ids?: string[] | null; + }[] + | null; + format_ids_to_provide?: + | { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[] + | null; + paused?: boolean | null; + ext?: { + [key: string]: unknown; + } | null; + /** @description Array of product IDs (enriched from joins) */ + product_ids?: string[]; + /** @description Full creative objects (enriched from joins) */ creatives: { - creativeId: string; + creative_id: string; name: string; - formatId: string; - mediaUrl: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ status: string; }[]; /** Format: date-time */ - createdAt: string; + created_at: string; /** Format: date-time */ - updatedAt: string; - salesAgentId?: string; - salesAgentName?: string; - pricingCpm?: number; - pricingSignalCost?: number; - bidPrice?: number; - pricingOptionId?: string; - creativeFormats?: { + updated_at: string; + sales_agent_id?: string; + sales_agent_name?: string; + creative_formats?: { agent_url: string; id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }[]; }[]; - /** @example [] */ + /** + * @description Full creative objects (enriched from joins) + * @example [] + */ creatives?: { - creativeId: string; + creative_id: string; name: string; - formatId: string; - mediaUrl: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ status: string; }[]; - pricing: { - cpm: number; - signalCost?: number; - totalCpm: number; - }; - /** @example string */ - status: string; + /** @description ADCP-specific metadata (from execute response) */ adcp?: { - mediaBuyId?: string; + media_buy_id?: string; status?: string; - webhookUrl?: string; + webhook_url?: string; }; + /** @description Performance metrics (from reporting) */ performance?: { impressions: number; spend: number; clicks: number; /** Format: date-time */ - lastUpdated?: string; + last_updated?: string; }; /** * Format: date-time + * @description Created timestamp * @example string */ - archivedAt?: string; + created_at: string; /** * Format: date-time + * @description Updated timestamp * @example string */ - createdAt: string; + updated_at: string; /** * Format: date-time + * @description Archived timestamp * @example string */ - updatedAt: string; + archived_at?: string | null; }; TacticGetOutput: { /** @example 100 */ @@ -2456,6 +8545,26 @@ export interface components { countryCodes: string[]; /** @example 100 */ mediaBuyCount?: number; + /** + * @description Count of targeting dimensions (channels, countries, bitmap profiles, brand agents) + * @example 100 + */ + targetingCount?: number; + /** + * @description Bitmap targeting profiles with targeting item keys for UI display + * @example [] + */ + bitmapTargetingProfiles?: components['schemas']['BitmapTargetingProfileResponseOutput'][]; + /** + * @description Brand story agents associated with this tactic + * @example [] + */ + brandStoryAgents?: components['schemas']['BrandStoryAgentSummaryOutput'][]; + /** + * @description Brand standards agents associated with this tactic + * @example [] + */ + brandStandardsAgents?: components['schemas']['BrandStandardsAgentSummaryOutput'][]; /** * Format: date-time * @example string @@ -2486,6 +8595,13 @@ export interface components { manifestUrl?: string; /** @example 100 */ customerId: number; + /** + * Format: int64 + * @example 100 + */ + seatId?: number | null; + /** @example [] */ + countryCodes?: string[]; /** * Format: date-time * @example string @@ -2511,6 +8627,13 @@ export interface components { manifestUrl?: string; /** @example 100 */ customerId: number; + /** + * Format: int64 + * @example 100 + */ + seatId?: number | null; + /** @example [] */ + countryCodes?: string[]; /** * Format: date-time * @example string @@ -2560,139 +8683,2451 @@ export interface components { }; CreativeCreate: { /** @example example_id_123 */ - creativeId: string; + creative_id: string; /** @example Example Name */ name: string; - /** @example string */ + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + /** @example [] */ + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + /** @example [] */ + tags?: string[] | null; + /** @example true */ + approved?: boolean | null; + /** @example 100 */ + weight?: number | null; + /** @example [] */ + placement_ids?: string[] | null; + /** + * @description Internal creative status + * @example string + */ status: string; - /** @example example_id_123 */ - campaignId?: string; + /** + * @description Associated campaign ID + * @example example_id_123 + */ + campaign_id?: string; /** * Format: date-time * @example string */ - createdAt: string; + created_at: string; /** * Format: date-time * @example string */ - updatedAt: string; + updated_at: string; }; CreativeUpdate: { /** @example example_id_123 */ - creativeId: string; + creative_id: string; /** @example Example Name */ name: string; - /** @example string */ + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + /** @example [] */ + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + /** @example [] */ + tags?: string[] | null; + /** @example true */ + approved?: boolean | null; + /** @example 100 */ + weight?: number | null; + /** @example [] */ + placement_ids?: string[] | null; + /** + * @description Internal creative status + * @example string + */ status: string; - /** @example example_id_123 */ - campaignId?: string; + /** + * @description Associated campaign ID + * @example example_id_123 + */ + campaign_id?: string; /** * Format: date-time * @example string */ - createdAt: string; + created_at: string; /** * Format: date-time * @example string */ - updatedAt: string; + updated_at: string; + }; + MediaBuyCreate: { + /** + * @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; + /** + * @description Media buy description + * @example string + */ + description?: string; + /** + * @description Internal status (DRAFT, ACTIVE, PAUSED, etc.) + * @example string + */ + status: string; + /** + * @description Pre-execution product configuration + * @example [] + */ + products?: { + /** @description ADCP product identifier */ + product_id: string; + sales_agent_id: string; + sales_agent_name?: string; + /** @description ADCP budget field */ + budget?: number; + /** + * @description ADCP pacing field + * @enum {string} + */ + pacing?: 'asap' | 'even' | 'front_loaded'; + pricing_option_id?: string; + bid_price?: number; + display_order?: number; + creative_formats?: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + }[]; + /** + * @description Post-execution ADCP packages (enriched) + * @example [] + */ + packages?: { + package_id: string; + buyer_ref?: string | null; + product_id?: string | null; + budget?: number | null; + pacing?: ('even' | 'asap' | 'front_loaded') | null; + pricing_option_id?: string | null; + bid_price?: number | null; + impressions?: number | null; + targeting_overlay?: { + geo_country_any_of?: string[] | null; + geo_region_any_of?: string[] | null; + geo_metro_any_of?: string[] | null; + geo_postal_code_any_of?: string[] | null; + axe_include_segment?: string | null; + axe_exclude_segment?: string | null; + frequency_cap?: { + suppress_minutes: number; + } | null; + } | null; + creative_assignments?: + | { + creative_id: string; + weight?: number | null; + placement_ids?: string[] | null; + }[] + | null; + format_ids_to_provide?: + | { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[] + | null; + paused?: boolean | null; + ext?: { + [key: string]: unknown; + } | null; + /** @description Array of product IDs (enriched from joins) */ + product_ids?: string[]; + /** @description Full creative objects (enriched from joins) */ + creatives: { + creative_id: string; + name: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ + status: string; + }[]; + /** Format: date-time */ + created_at: string; + /** Format: date-time */ + updated_at: string; + sales_agent_id?: string; + sales_agent_name?: string; + creative_formats?: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[]; + }[]; + /** + * @description Full creative objects (enriched from joins) + * @example [] + */ + creatives?: { + creative_id: string; + name: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | ({ + width: number; + height: number; + } & { + url: string; + format?: string | null; + alt_text?: string | null; + }) + | ({ + width: number; + height: number; + } & { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + }) + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + tags?: string[] | null; + approved?: boolean | null; + weight?: number | null; + placement_ids?: string[] | null; + /** @description Internal creative status (not in ADCP protocol) */ + status: string; + }[]; + /** @description ADCP-specific metadata (from execute response) */ + adcp?: { + 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; + }; + TacticUpdate: { + /** @example 100 */ + id: number; + /** @example Example Name */ + name: string; + /** @example string */ + prompt?: string; + /** @example [] */ + campaignIds?: string[]; + /** @example [] */ + channelCodes: string[]; + /** @example [] */ + countryCodes: string[]; + /** @example 100 */ + mediaBuyCount?: number; + /** + * @description Count of targeting dimensions (channels, countries, bitmap profiles, brand agents) + * @example 100 + */ + targetingCount?: number; + /** + * @description Bitmap targeting profiles with targeting item keys for UI display + * @example [] + */ + bitmapTargetingProfiles?: components['schemas']['BitmapTargetingProfileResponseOutput'][]; + /** + * @description Brand story agents associated with this tactic + * @example [] + */ + brandStoryAgents?: components['schemas']['BrandStoryAgentSummaryOutput'][]; + /** + * @description Brand standards agents associated with this tactic + * @example [] + */ + brandStandardsAgents?: components['schemas']['BrandStandardsAgentSummaryOutput'][]; + /** + * Format: date-time + * @example string + */ + createdAt: string; + /** + * Format: date-time + * @example string + */ + updatedAt: string; + /** + * Format: date-time + * @example string + */ + archivedAt?: string; + }; + }; + responses: never; + parameters: never; + requestBodies: never; + headers: never; + pathItems: never; +} + +export type $defs = Record; + +export type external = Record; + +export interface operations { + /** + * Initialize MCP session + * @description Initialize a new MCP session. This must be called before using any tools. The session ID should be generated as a UUID and included in the mcp-session-id header for all subsequent requests. + */ + mcp_initialize: { + parameters: { + header: { + /** @description MCP session identifier (UUID). Generate a new UUID for session initialization. */ + 'mcp-session-id': string; + }; + }; + requestBody: { + content: { + 'application/json': { + /** @enum {string} */ + jsonrpc: '2.0'; + id: string | number; + /** @enum {string} */ + method: 'initialize'; + params: { + /** @example 2024-11-05 */ + protocolVersion: string; + capabilities: Record; + clientInfo: { + name: string; + version: string; + }; + }; + }; + }; + }; + responses: { + /** @description Session initialized successfully */ + 200: { + content: { + 'application/json': { + /** @enum {string} */ + jsonrpc?: '2.0'; + id?: string | number; + result?: { + protocolVersion?: string; + capabilities?: Record; + serverInfo?: { + name?: string; + version?: string; + }; + }; + }; + }; + }; + /** @description Unauthorized */ + 401: { + content: { + 'application/json': components['schemas']['Unauthorized']; + }; + }; + }; + }; + /** + * List brand agents + * @description List all brand agents (advertiser accounts) for the authenticated customer. Authentication is automatic - no parameters required. + */ + brand_agent_list: { + parameters: { + header: { + /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ + 'mcp-session-id': string; + }; + }; + /** @description Request body for brand_agent_list */ + requestBody: { + content: { + /** + * @example { + * "tool": "brand_agent_list", + * "arguments": {} + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'brand_agent_list'; + arguments: components['schemas']['ListBrandAgentsInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['BrandAgentList']; + }; + }; + }; + /** @description Bad request */ + 400: { + content: { + 'application/json': components['schemas']['BadRequest']; + }; + }; + /** @description Unauthorized */ + 401: { + content: { + 'application/json': components['schemas']['Unauthorized']; + }; + }; + /** @description Internal server error */ + 500: { + content: { + 'application/json': components['schemas']['InternalError']; + }; + }; + }; + }; + /** + * Get brand agent + * @description Get detailed information about a specific brand agent (advertiser account) by ID. + */ + brand_agent_get: { + parameters: { + header: { + /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ + 'mcp-session-id': string; + }; + }; + /** @description Request body for brand_agent_get */ + requestBody: { + content: { + /** + * @example { + * "tool": "brand_agent_get", + * "arguments": { + * "brandAgentId": 100 + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'brand_agent_get'; + arguments: components['schemas']['GetBrandAgentInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['BrandAgentUpdateOutput']; + }; + }; + }; + /** @description Bad request */ + 400: { + content: { + 'application/json': components['schemas']['BadRequest']; + }; + }; + /** @description Unauthorized */ + 401: { + content: { + 'application/json': components['schemas']['Unauthorized']; + }; + }; + /** @description Internal server error */ + 500: { + content: { + 'application/json': components['schemas']['InternalError']; + }; + }; + }; + }; + /** + * Create brand agent + * @description Create a new brand agent (advertiser account). This creates the top-level container that will own campaigns, creatives, audiences, standards, and measurement sources. + */ + brand_agent_create: { + parameters: { + header: { + /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ + 'mcp-session-id': string; + }; + }; + /** @description Request body for brand_agent_create */ + requestBody: { + content: { + /** + * @example { + * "tool": "brand_agent_create", + * "arguments": { + * "name": "Example Name" + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'brand_agent_create'; + arguments: components['schemas']['CreateBrandAgentInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['BrandAgentUpdateOutput']; + }; + }; + }; + /** @description Bad request */ + 400: { + content: { + 'application/json': components['schemas']['BadRequest']; + }; + }; + /** @description Unauthorized */ + 401: { + content: { + 'application/json': components['schemas']['Unauthorized']; + }; + }; + /** @description Internal server error */ + 500: { + content: { + 'application/json': components['schemas']['InternalError']; + }; + }; + }; + }; + /** + * Update brand agent + * @description Update an existing brand agent with new information. + */ + brand_agent_update: { + parameters: { + header: { + /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ + 'mcp-session-id': string; + }; + }; + /** @description Request body for brand_agent_update */ + requestBody: { + content: { + /** + * @example { + * "tool": "brand_agent_update", + * "arguments": { + * "brandAgentId": 100 + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'brand_agent_update'; + arguments: components['schemas']['UpdateBrandAgentInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['BrandAgentUpdateOutput']; + }; + }; + }; + /** @description Bad request */ + 400: { + content: { + 'application/json': components['schemas']['BadRequest']; + }; + }; + /** @description Unauthorized */ + 401: { + content: { + 'application/json': components['schemas']['Unauthorized']; + }; + }; + /** @description Internal server error */ + 500: { + content: { + 'application/json': components['schemas']['InternalError']; + }; + }; + }; + }; + /** + * Delete brand agent + * @description Delete a brand agent. This will also delete all associated campaigns, creatives, and other resources. + */ + brand_agent_delete: { + parameters: { + header: { + /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ + 'mcp-session-id': string; + }; + }; + /** @description Request body for brand_agent_delete */ + requestBody: { + content: { + /** + * @example { + * "tool": "brand_agent_delete", + * "arguments": { + * "brandAgentId": 100 + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'brand_agent_delete'; + arguments: components['schemas']['DeleteBrandAgentInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['BrandAgentDelete']; + }; + }; + }; + /** @description Bad request */ + 400: { + content: { + 'application/json': components['schemas']['BadRequest']; + }; + }; + /** @description Unauthorized */ + 401: { + content: { + 'application/json': components['schemas']['Unauthorized']; + }; + }; + /** @description Internal server error */ + 500: { + content: { + 'application/json': components['schemas']['InternalError']; + }; + }; + }; + }; + /** + * List campaigns + * @description List all campaigns with optional filtering by brand agent. + */ + campaign_list: { + parameters: { + header: { + /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ + 'mcp-session-id': string; + }; + }; + /** @description Request body for campaign_list */ + requestBody: { + content: { + /** + * @example { + * "tool": "campaign_list", + * "arguments": {} + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'campaign_list'; + arguments: components['schemas']['ListCampaignsInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['CampaignList']; + }; + }; + }; + /** @description Bad request */ + 400: { + content: { + 'application/json': components['schemas']['BadRequest']; + }; + }; + /** @description Unauthorized */ + 401: { + content: { + 'application/json': components['schemas']['Unauthorized']; + }; + }; + /** @description Internal server error */ + 500: { + content: { + 'application/json': components['schemas']['InternalError']; + }; + }; + }; + }; + /** + * Create campaign + * @description Create a new campaign with natural language prompt. The backend will parse the prompt to extract targeting, budget, and creative requirements. + */ + campaign_create: { + parameters: { + header: { + /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ + 'mcp-session-id': string; + }; + }; + /** @description Request body for campaign_create */ + requestBody: { + content: { + /** + * @example { + * "tool": "campaign_create", + * "arguments": { + * "brandAgentId": 100, + * "prompt": "string" + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'campaign_create'; + arguments: components['schemas']['CreateCampaignInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['CampaignUpdateOutput']; + }; + }; + }; + /** @description Bad request */ + 400: { + content: { + 'application/json': components['schemas']['BadRequest']; + }; + }; + /** @description Unauthorized */ + 401: { + content: { + 'application/json': components['schemas']['Unauthorized']; + }; + }; + /** @description Internal server error */ + 500: { + content: { + 'application/json': components['schemas']['InternalError']; + }; + }; + }; + }; + /** + * Get campaign + * @description Get detailed information about a specific campaign. + */ + campaign_get: { + parameters: { + header: { + /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ + 'mcp-session-id': string; + }; + }; + /** @description Request body for campaign_get */ + requestBody: { + content: { + /** + * @example { + * "tool": "campaign_get", + * "arguments": { + * "campaignId": "example_id_123" + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'campaign_get'; + arguments: components['schemas']['GetCampaignInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['CampaignUpdateOutput']; + }; + }; + }; + /** @description Bad request */ + 400: { + content: { + 'application/json': components['schemas']['BadRequest']; + }; + }; + /** @description Unauthorized */ + 401: { + content: { + 'application/json': components['schemas']['Unauthorized']; + }; + }; + /** @description Internal server error */ + 500: { + content: { + 'application/json': components['schemas']['InternalError']; + }; + }; + }; + }; + /** + * Update campaign + * @description Update an existing campaign with new information. + */ + campaign_update: { + parameters: { + header: { + /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ + 'mcp-session-id': string; + }; + }; + /** @description Request body for campaign_update */ + requestBody: { + content: { + /** + * @example { + * "tool": "campaign_update", + * "arguments": { + * "campaignId": "example_id_123" + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'campaign_update'; + arguments: components['schemas']['UpdateCampaignInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['CampaignUpdateOutput']; + }; + }; + }; + /** @description Bad request */ + 400: { + content: { + 'application/json': components['schemas']['BadRequest']; + }; + }; + /** @description Unauthorized */ + 401: { + content: { + 'application/json': components['schemas']['Unauthorized']; + }; + }; + /** @description Internal server error */ + 500: { + content: { + 'application/json': components['schemas']['InternalError']; + }; + }; + }; + }; + /** + * Delete campaign + * @description Delete a campaign and all associated resources. + */ + campaign_delete: { + parameters: { + header: { + /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ + 'mcp-session-id': string; + }; + }; + /** @description Request body for campaign_delete */ + requestBody: { + content: { + /** + * @example { + * "tool": "campaign_delete", + * "arguments": { + * "campaignId": "example_id_123" + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'campaign_delete'; + arguments: components['schemas']['DeleteCampaignInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['CampaignDelete']; + }; + }; + }; + /** @description Bad request */ + 400: { + content: { + 'application/json': components['schemas']['BadRequest']; + }; + }; + /** @description Unauthorized */ + 401: { + content: { + 'application/json': components['schemas']['Unauthorized']; + }; + }; + /** @description Internal server error */ + 500: { + content: { + 'application/json': components['schemas']['InternalError']; + }; + }; + }; + }; + /** + * Get campaign summary + * @description Get a high-level summary of a campaign including key metrics and status. + */ + campaign_get_summary: { + parameters: { + header: { + /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ + 'mcp-session-id': string; + }; + }; + /** @description Request body for campaign_get_summary */ + requestBody: { + content: { + /** + * @example { + * "tool": "campaign_get_summary", + * "arguments": { + * "campaignId": "example_id_123" + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'campaign_get_summary'; + arguments: components['schemas']['GetCampaignSummaryInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['CampaignGetSummary']; + }; + }; + }; + /** @description Bad request */ + 400: { + content: { + 'application/json': components['schemas']['BadRequest']; + }; + }; + /** @description Unauthorized */ + 401: { + content: { + 'application/json': components['schemas']['Unauthorized']; + }; + }; + /** @description Internal server error */ + 500: { + content: { + 'application/json': components['schemas']['InternalError']; + }; + }; + }; + }; + /** + * List campaign tactics + * @description List all tactics associated with a specific campaign. + */ + campaign_list_tactics: { + parameters: { + header: { + /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ + 'mcp-session-id': string; + }; + }; + /** @description Request body for campaign_list_tactics */ + requestBody: { + content: { + /** + * @example { + * "tool": "campaign_list_tactics", + * "arguments": { + * "campaignId": "example_id_123" + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'campaign_list_tactics'; + arguments: components['schemas']['ListCampaignTacticsInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['CampaignListTactics']; + }; + }; + }; + /** @description Bad request */ + 400: { + content: { + 'application/json': components['schemas']['BadRequest']; + }; + }; + /** @description Unauthorized */ + 401: { + content: { + 'application/json': components['schemas']['Unauthorized']; + }; + }; + /** @description Internal server error */ + 500: { + content: { + 'application/json': components['schemas']['InternalError']; + }; + }; + }; + }; + /** + * Validate campaign brief + * @description Validate a campaign brief to ensure it contains all necessary information for campaign creation. + */ + campaign_validate_brief: { + parameters: { + header: { + /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ + 'mcp-session-id': string; + }; + }; + /** @description Request body for campaign_validate_brief */ + requestBody: { + content: { + /** + * @example { + * "tool": "campaign_validate_brief", + * "arguments": { + * "brief": "string" + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'campaign_validate_brief'; + arguments: components['schemas']['ValidateBriefInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['CampaignValidateBrief']; + }; + }; + }; + /** @description Bad request */ + 400: { + content: { + 'application/json': components['schemas']['BadRequest']; + }; + }; + /** @description Unauthorized */ + 401: { + content: { + 'application/json': components['schemas']['Unauthorized']; + }; + }; + /** @description Internal server error */ + 500: { + content: { + 'application/json': components['schemas']['InternalError']; + }; + }; + }; + }; + /** + * List assets + * @description List all uploaded assets with optional filtering by brand agent. + */ + asset_list: { + parameters: { + header: { + /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ + 'mcp-session-id': string; + }; + }; + /** @description Request body for asset_list */ + requestBody: { + content: { + /** + * @example { + * "tool": "asset_list", + * "arguments": {} + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'asset_list'; + arguments: components['schemas']['ListAssetsInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['AssetList']; + }; + }; + }; + /** @description Bad request */ + 400: { + content: { + 'application/json': components['schemas']['BadRequest']; + }; + }; + /** @description Unauthorized */ + 401: { + content: { + 'application/json': components['schemas']['Unauthorized']; + }; + }; + /** @description Internal server error */ + 500: { + content: { + 'application/json': components['schemas']['InternalError']; + }; + }; }; }; - responses: never; - parameters: never; - requestBodies: never; - headers: never; - pathItems: never; -} - -export type $defs = Record; - -export type external = Record; - -export interface operations { /** - * Initialize MCP session - * @description Initialize a new MCP session. This must be called before using any tools. The session ID should be generated as a UUID and included in the mcp-session-id header for all subsequent requests. + * Create brand standards + * @description Create brand standards including guidelines, tone of voice, visual requirements, and content rules for a brand agent. */ - mcp_initialize: { + brand_standards_create: { parameters: { header: { - /** @description MCP session identifier (UUID). Generate a new UUID for session initialization. */ + /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; + /** @description Request body for brand_standards_create */ requestBody: { content: { + /** + * @example { + * "tool": "brand_standards_create", + * "arguments": { + * "brandAgentId": 100, + * "prompt": "string" + * } + * } + */ 'application/json': { /** @enum {string} */ - jsonrpc: '2.0'; - id: string | number; - /** @enum {string} */ - method: 'initialize'; - params: { - /** @example 2024-11-05 */ - protocolVersion: string; - capabilities: Record; - clientInfo: { - name: string; - version: string; - }; - }; + tool: 'brand_standards_create'; + arguments: components['schemas']['CreateBrandStandardInput']; }; }; }; responses: { - /** @description Session initialized successfully */ + /** @description Successful response */ 200: { content: { 'application/json': { - /** @enum {string} */ - jsonrpc?: '2.0'; - id?: string | number; - result?: { - protocolVersion?: string; - capabilities?: Record; - serverInfo?: { - name?: string; - version?: string; - }; - }; + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['BrandStandardsCreateOutput']; }; }; }; + /** @description Bad request */ + 400: { + content: { + 'application/json': components['schemas']['BadRequest']; + }; + }; /** @description Unauthorized */ 401: { content: { 'application/json': components['schemas']['Unauthorized']; }; }; + /** @description Internal server error */ + 500: { + content: { + 'application/json': components['schemas']['InternalError']; + }; + }; }; }; /** - * List brand agents - * @description List all brand agents (advertiser accounts) for the authenticated customer. Authentication is automatic - no parameters required. + * Delete brand standards + * @description Delete brand standards for a brand agent. */ - brand_agent_list: { + brand_standards_delete: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for brand_agent_list */ + /** @description Request body for brand_standards_delete */ requestBody: { content: { /** * @example { - * "tool": "brand_agent_list", - * "arguments": {} + * "tool": "brand_standards_delete", + * "arguments": { + * "brandStandardId": "example_id_123" + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_agent_list'; - arguments: components['schemas']['ListBrandAgentsInput']; + tool: 'brand_standards_delete'; + arguments: components['schemas']['DeleteBrandStandardInput']; }; }; }; @@ -2702,7 +11137,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandAgentList']; + structuredContent: components['schemas']['BrandStandardsDelete']; }; }; }; @@ -2727,31 +11162,29 @@ export interface operations { }; }; /** - * Get brand agent - * @description Get detailed information about a specific brand agent (advertiser account) by ID. + * List brand standards + * @description List all brand standards with optional filtering by brand agent. */ - brand_agent_get: { + brand_standards_list: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for brand_agent_get */ + /** @description Request body for brand_standards_list */ requestBody: { content: { /** * @example { - * "tool": "brand_agent_get", - * "arguments": { - * "brandAgentId": 100 - * } + * "tool": "brand_standards_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_agent_get'; - arguments: components['schemas']['GetBrandAgentInput']; + tool: 'brand_standards_list'; + arguments: components['schemas']['ListBrandStandardsInput']; }; }; }; @@ -2761,7 +11194,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandAgentUpdateOutput']; + structuredContent: components['schemas']['BrandStandardsList']; }; }; }; @@ -2786,31 +11219,33 @@ export interface operations { }; }; /** - * Create brand agent - * @description Create a new brand agent (advertiser account). This creates the top-level container that will own campaigns, creatives, audiences, standards, and measurement sources. + * Create brand story + * @description Create a brand story containing the narrative, history, values, and key messaging for a brand agent. */ - brand_agent_create: { + brand_story_create: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for brand_agent_create */ + /** @description Request body for brand_story_create */ requestBody: { content: { /** * @example { - * "tool": "brand_agent_create", + * "tool": "brand_story_create", * "arguments": { - * "name": "Example Name" + * "brandAgentId": null, + * "name": "Example Name", + * "languages": [] * } * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_agent_create'; - arguments: components['schemas']['CreateBrandAgentInput']; + tool: 'brand_story_create'; + arguments: components['schemas']['CreateBrandStoryInput']; }; }; }; @@ -2820,7 +11255,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandAgentUpdateOutput']; + structuredContent: components['schemas']['BrandStoryCreate']; }; }; }; @@ -2845,31 +11280,32 @@ export interface operations { }; }; /** - * Update brand agent - * @description Update an existing brand agent with new information. + * Update brand story + * @description Update an existing brand story with new information. */ - brand_agent_update: { + brand_story_update: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for brand_agent_update */ + /** @description Request body for brand_story_update */ requestBody: { content: { /** * @example { - * "tool": "brand_agent_update", + * "tool": "brand_story_update", * "arguments": { - * "brandAgentId": 100 + * "previousModelId": "example_id_123", + * "prompt": "string" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_agent_update'; - arguments: components['schemas']['UpdateBrandAgentInput']; + tool: 'brand_story_update'; + arguments: components['schemas']['UpdateBrandStoryInput']; }; }; }; @@ -2879,7 +11315,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandAgentUpdateOutput']; + structuredContent: components['schemas']['BrandStoryUpdate']; }; }; }; @@ -2904,31 +11340,31 @@ export interface operations { }; }; /** - * Delete brand agent - * @description Delete a brand agent. This will also delete all associated campaigns, creatives, and other resources. + * Delete brand story + * @description Delete a brand story. */ - brand_agent_delete: { + brand_story_delete: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for brand_agent_delete */ + /** @description Request body for brand_story_delete */ requestBody: { content: { /** * @example { - * "tool": "brand_agent_delete", + * "tool": "brand_story_delete", * "arguments": { - * "brandAgentId": 100 + * "brandStoryId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_agent_delete'; - arguments: components['schemas']['DeleteBrandAgentInput']; + tool: 'brand_story_delete'; + arguments: components['schemas']['DeleteBrandStoryInput']; }; }; }; @@ -2938,7 +11374,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandAgentDelete']; + structuredContent: components['schemas']['BrandStoryDelete']; }; }; }; @@ -2963,29 +11399,29 @@ export interface operations { }; }; /** - * List campaigns - * @description List all campaigns with optional filtering by brand agent. + * List brand stories + * @description List all brand stories with optional filtering by brand agent. */ - campaign_list: { + brand_story_list: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for campaign_list */ + /** @description Request body for brand_story_list */ requestBody: { content: { /** * @example { - * "tool": "campaign_list", + * "tool": "brand_story_list", * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'campaign_list'; - arguments: components['schemas']['ListCampaignsInput']; + tool: 'brand_story_list'; + arguments: components['schemas']['ListBrandStoriesInput']; }; }; }; @@ -2995,7 +11431,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CampaignList']; + structuredContent: components['schemas']['BrandStoryList']; }; }; }; @@ -3020,32 +11456,29 @@ export interface operations { }; }; /** - * Create campaign - * @description Create a new campaign with natural language prompt. The backend will parse the prompt to extract targeting, budget, and creative requirements. + * List channels + * @description List all available advertising channels and platforms. */ - campaign_create: { + channel_list: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for campaign_create */ + /** @description Request body for channel_list */ requestBody: { content: { /** * @example { - * "tool": "campaign_create", - * "arguments": { - * "brandAgentId": 100, - * "prompt": "string" - * } + * "tool": "channel_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'campaign_create'; - arguments: components['schemas']['CreateCampaignInput']; + tool: 'channel_list'; + arguments: components['schemas']['ListChannelsInput']; }; }; }; @@ -3055,7 +11488,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CampaignUpdateOutput']; + structuredContent: components['schemas']['ChannelList']; }; }; }; @@ -3080,31 +11513,29 @@ export interface operations { }; }; /** - * Get campaign - * @description Get detailed information about a specific campaign. + * List countries + * @description Get all available countries for targeting. Use this to get valid country codes before creating brand agents. */ - campaign_get: { + country_list: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for campaign_get */ + /** @description Request body for country_list */ requestBody: { content: { /** * @example { - * "tool": "campaign_get", - * "arguments": { - * "campaignId": "example_id_123" - * } + * "tool": "country_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'campaign_get'; - arguments: components['schemas']['GetCampaignInput']; + tool: 'country_list'; + arguments: components['schemas']['ListCountriesInput']; }; }; }; @@ -3114,7 +11545,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CampaignUpdateOutput']; + structuredContent: components['schemas']['CountryList']; }; }; }; @@ -3139,31 +11570,29 @@ export interface operations { }; }; /** - * Update campaign - * @description Update an existing campaign with new information. + * List languages + * @description Get all available languages for targeting. Use this to get valid language codes before creating brand stories. */ - campaign_update: { + language_list: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for campaign_update */ + /** @description Request body for language_list */ requestBody: { content: { /** * @example { - * "tool": "campaign_update", - * "arguments": { - * "campaignId": "example_id_123" - * } + * "tool": "language_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'campaign_update'; - arguments: components['schemas']['UpdateCampaignInput']; + tool: 'language_list'; + arguments: components['schemas']['ListLanguagesInput']; }; }; }; @@ -3173,7 +11602,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CampaignUpdateOutput']; + structuredContent: components['schemas']['LanguageList']; }; }; }; @@ -3198,31 +11627,32 @@ export interface operations { }; }; /** - * Delete campaign - * @description Delete a campaign and all associated resources. + * Assign creative + * @description Assign a creative to a tactic or media buy. */ - campaign_delete: { + creative_assign: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for campaign_delete */ + /** @description Request body for creative_assign */ requestBody: { content: { /** * @example { - * "tool": "campaign_delete", + * "tool": "creative_assign", * "arguments": { - * "campaignId": "example_id_123" + * "creative_id": "example_id_123", + * "campaign_id": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'campaign_delete'; - arguments: components['schemas']['DeleteCampaignInput']; + tool: 'creative_assign'; + arguments: components['schemas']['AssignCreativeInput']; }; }; }; @@ -3232,7 +11662,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CampaignDelete']; + structuredContent: components['schemas']['AssignCreativeOutput']; }; }; }; @@ -3257,31 +11687,38 @@ export interface operations { }; }; /** - * Get campaign summary - * @description Get a high-level summary of a campaign including key metrics and status. + * Create creative + * @description Create a new creative with assets, copy, and targeting specifications. */ - campaign_get_summary: { + creative_create: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for campaign_get_summary */ + /** @description Request body for creative_create */ requestBody: { content: { /** * @example { - * "tool": "campaign_get_summary", + * "tool": "creative_create", * "arguments": { - * "campaignId": "example_id_123" + * "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: 'campaign_get_summary'; - arguments: components['schemas']['GetCampaignSummaryInput']; + tool: 'creative_create'; + arguments: components['schemas']['CreativeCreateInput']; }; }; }; @@ -3291,7 +11728,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CampaignGetSummary']; + structuredContent: components['schemas']['CreativeGetOutput']; }; }; }; @@ -3316,31 +11753,31 @@ export interface operations { }; }; /** - * List campaign tactics - * @description List all tactics associated with a specific campaign. + * Update creative + * @description Update an existing creative with new assets, copy, or specifications. */ - campaign_list_tactics: { + creative_update: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for campaign_list_tactics */ + /** @description Request body for creative_update */ requestBody: { content: { /** * @example { - * "tool": "campaign_list_tactics", + * "tool": "creative_update", * "arguments": { - * "campaignId": "example_id_123" + * "creative_id": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'campaign_list_tactics'; - arguments: components['schemas']['ListCampaignTacticsInput']; + tool: 'creative_update'; + arguments: components['schemas']['CreativeUpdateInput']; }; }; }; @@ -3350,7 +11787,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CampaignListTactics']; + structuredContent: components['schemas']['CreativeGetOutput']; }; }; }; @@ -3375,31 +11812,31 @@ export interface operations { }; }; /** - * Validate campaign brief - * @description Validate a campaign brief to ensure it contains all necessary information for campaign creation. + * Delete creative + * @description Delete a creative and remove it from any associated tactics or media buys. */ - campaign_validate_brief: { + creative_delete: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for campaign_validate_brief */ + /** @description Request body for creative_delete */ requestBody: { content: { /** * @example { - * "tool": "campaign_validate_brief", + * "tool": "creative_delete", * "arguments": { - * "brief": "string" + * "creative_id": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'campaign_validate_brief'; - arguments: components['schemas']['ValidateBriefInput']; + tool: 'creative_delete'; + arguments: components['schemas']['DeleteCreativeInput']; }; }; }; @@ -3409,7 +11846,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CampaignValidateBrief']; + structuredContent: components['schemas']['DeleteCreativeOutput']; }; }; }; @@ -3434,29 +11871,31 @@ export interface operations { }; }; /** - * List assets - * @description List all uploaded assets with optional filtering by brand agent. + * Get creative + * @description Get detailed information about a specific creative. */ - asset_list: { + creative_get: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for asset_list */ + /** @description Request body for creative_get */ requestBody: { content: { /** * @example { - * "tool": "asset_list", - * "arguments": {} + * "tool": "creative_get", + * "arguments": { + * "creative_id": "example_id_123" + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'asset_list'; - arguments: components['schemas']['ListAssetsInput']; + tool: 'creative_get'; + arguments: components['schemas']['GetCreativeInput']; }; }; }; @@ -3466,7 +11905,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['AssetList']; + structuredContent: components['schemas']['CreativeGetOutput']; }; }; }; @@ -3491,32 +11930,29 @@ export interface operations { }; }; /** - * Create brand standards - * @description Create brand standards including guidelines, tone of voice, visual requirements, and content rules for a brand agent. + * List creatives + * @description List all creatives with optional filtering by brand agent or campaign. */ - brand_standards_create: { + creative_list: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for brand_standards_create */ + /** @description Request body for creative_list */ requestBody: { content: { /** * @example { - * "tool": "brand_standards_create", - * "arguments": { - * "brandAgentId": 100, - * "prompt": "string" - * } + * "tool": "creative_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_standards_create'; - arguments: components['schemas']['CreateBrandStandardInput']; + tool: 'creative_list'; + arguments: components['schemas']['ListCreativesInput']; }; }; }; @@ -3526,7 +11962,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandStandardsCreateOutput']; + structuredContent: components['schemas']['ListCreativesOutput']; }; }; }; @@ -3551,31 +11987,31 @@ export interface operations { }; }; /** - * Delete brand standards - * @description Delete brand standards for a brand agent. + * Sync creatives to sales agents + * @description Synchronize creatives to connected sales agents (DSPs, publisher platforms). */ - brand_standards_delete: { + creative_sync_sales_agents: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for brand_standards_delete */ + /** @description Request body for creative_sync_sales_agents */ requestBody: { content: { /** * @example { - * "tool": "brand_standards_delete", + * "tool": "creative_sync_sales_agents", * "arguments": { - * "brandStandardId": "example_id_123" + * "creative_id": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_standards_delete'; - arguments: components['schemas']['DeleteBrandStandardInput']; + tool: 'creative_sync_sales_agents'; + arguments: components['schemas']['SyncSalesAgentsInput']; }; }; }; @@ -3585,7 +12021,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandStandardsDelete']; + structuredContent: components['schemas']['SyncSalesAgentsOutput']; }; }; }; @@ -3610,29 +12046,37 @@ export interface operations { }; }; /** - * List brand standards - * @description List all brand standards with optional filtering by brand agent. + * Create media buy + * @description Create a new media buy with budget, targeting, and creative specifications. */ - brand_standards_list: { + media_buy_create: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for brand_standards_list */ + /** @description Request body for media_buy_create */ requestBody: { content: { /** * @example { - * "tool": "brand_standards_list", - * "arguments": {} + * "tool": "media_buy_create", + * "arguments": { + * "brand_manifest": null, + * "start_time": null, + * "end_time": "string", + * "tactic_id": 100, + * "agent_id": "example_id_123", + * "name": "Example Name", + * "products": [] + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_standards_list'; - arguments: components['schemas']['ListBrandStandardsInput']; + tool: 'media_buy_create'; + arguments: components['schemas']['MediaBuyCreateInput']; }; }; }; @@ -3642,7 +12086,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandStandardsList']; + structuredContent: components['schemas']['MediaBuyGetOutput']; }; }; }; @@ -3667,33 +12111,31 @@ export interface operations { }; }; /** - * Create brand story - * @description Create a brand story containing the narrative, history, values, and key messaging for a brand agent. + * Update media buy + * @description Update an existing media buy with new budget, targeting, or creative assignments. */ - brand_story_create: { + media_buy_update: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for brand_story_create */ + /** @description Request body for media_buy_update */ requestBody: { content: { /** * @example { - * "tool": "brand_story_create", + * "tool": "media_buy_update", * "arguments": { - * "brandAgentId": null, - * "name": "Example Name", - * "languages": [] + * "media_buy_id": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_story_create'; - arguments: components['schemas']['CreateBrandStoryInput']; + tool: 'media_buy_update'; + arguments: components['schemas']['UpdateMediaBuyInput']; }; }; }; @@ -3703,7 +12145,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandStoryCreate']; + structuredContent: components['schemas']['UpdateMediaBuyOutput']; }; }; }; @@ -3728,32 +12170,32 @@ export interface operations { }; }; /** - * Update brand story - * @description Update an existing brand story with new information. + * Delete media buy + * @description Delete a media buy and cancel any active placements. */ - brand_story_update: { + media_buy_delete: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for brand_story_update */ + /** @description Request body for media_buy_delete */ requestBody: { content: { /** * @example { - * "tool": "brand_story_update", + * "tool": "media_buy_delete", * "arguments": { - * "brandStoryId": "example_id_123", - * "prompt": "string" + * "media_buy_id": "example_id_123", + * "confirm": true * } * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_story_update'; - arguments: components['schemas']['UpdateBrandStoryInput']; + tool: 'media_buy_delete'; + arguments: components['schemas']['DeleteMediaBuyInput']; }; }; }; @@ -3763,7 +12205,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandStoryUpdate']; + structuredContent: components['schemas']['DeleteMediaBuyOutput']; }; }; }; @@ -3788,31 +12230,31 @@ export interface operations { }; }; /** - * Delete brand story - * @description Delete a brand story. + * Execute media buy + * @description Execute a media buy, sending it to the configured sales agents for placement. */ - brand_story_delete: { + media_buy_execute: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for brand_story_delete */ + /** @description Request body for media_buy_execute */ requestBody: { content: { /** * @example { - * "tool": "brand_story_delete", + * "tool": "media_buy_execute", * "arguments": { - * "brandStoryId": "example_id_123" + * "media_buy_id": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_story_delete'; - arguments: components['schemas']['DeleteBrandStoryInput']; + tool: 'media_buy_execute'; + arguments: components['schemas']['ExecuteMediaBuyInput']; }; }; }; @@ -3822,7 +12264,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandStoryDelete']; + structuredContent: components['schemas']['ExecuteMediaBuyOutput']; }; }; }; @@ -3847,29 +12289,31 @@ export interface operations { }; }; /** - * List brand stories - * @description List all brand stories with optional filtering by brand agent. + * Get media buy + * @description Get detailed information about a specific media buy. */ - brand_story_list: { + media_buy_get: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for brand_story_list */ + /** @description Request body for media_buy_get */ requestBody: { content: { /** * @example { - * "tool": "brand_story_list", - * "arguments": {} + * "tool": "media_buy_get", + * "arguments": { + * "media_buy_id": "example_id_123" + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_story_list'; - arguments: components['schemas']['ListBrandStoriesInput']; + tool: 'media_buy_get'; + arguments: components['schemas']['GetMediaBuyInput']; }; }; }; @@ -3879,7 +12323,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandStoryList']; + structuredContent: components['schemas']['MediaBuyGetOutput']; }; }; }; @@ -3904,29 +12348,29 @@ export interface operations { }; }; /** - * List channels - * @description List all available advertising channels and platforms. + * List media buys + * @description List all media buys with optional filtering by brand agent, campaign, or status. */ - channel_list: { + media_buy_list: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for channel_list */ + /** @description Request body for media_buy_list */ requestBody: { content: { /** * @example { - * "tool": "channel_list", + * "tool": "media_buy_list", * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'channel_list'; - arguments: components['schemas']['ListChannelsInput']; + tool: 'media_buy_list'; + arguments: components['schemas']['ListMediaBuysInput']; }; }; }; @@ -3936,7 +12380,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['ChannelList']; + structuredContent: components['schemas']['ListMediaBuysOutput']; }; }; }; @@ -3961,29 +12405,32 @@ export interface operations { }; }; /** - * List countries - * @description Get all available countries for targeting. Use this to get valid country codes before creating brand agents. + * Discover media products + * @description Discover available media products from connected sales agents based on targeting criteria. */ - country_list: { + media_product_discover: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for country_list */ + /** @description Request body for media_product_discover */ requestBody: { content: { /** * @example { - * "tool": "country_list", - * "arguments": {} + * "tool": "media_product_discover", + * "arguments": { + * "brief": "string", + * "brandManifestUrl": "https://example.com" + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'country_list'; - arguments: components['schemas']['ListCountriesInput']; + tool: 'media_product_discover'; + arguments: components['schemas']['DiscoverProductsInput']; }; }; }; @@ -3993,7 +12440,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CountryList']; + structuredContent: components['schemas']['MediaProductDiscover']; }; }; }; @@ -4018,29 +12465,29 @@ export interface operations { }; }; /** - * List languages - * @description Get all available languages for targeting. Use this to get valid language codes before creating brand stories. + * List media products + * @description List saved media products with optional filtering. */ - language_list: { + media_product_list: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for language_list */ + /** @description Request body for media_product_list */ requestBody: { content: { /** * @example { - * "tool": "language_list", + * "tool": "media_product_list", * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'language_list'; - arguments: components['schemas']['ListLanguagesInput']; + tool: 'media_product_list'; + arguments: components['schemas']['ListProductsInput']; }; }; }; @@ -4050,7 +12497,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['LanguageList']; + structuredContent: components['schemas']['MediaProductList']; }; }; }; @@ -4075,32 +12522,31 @@ export interface operations { }; }; /** - * Assign creative - * @description Assign a creative to a tactic or media buy. + * Get agent + * @description Get detailed information about a specific agent (SALES or OUTCOME type). Type is automatically inferred from the agent ID. */ - creative_assign: { + agent_get: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for creative_assign */ + /** @description Request body for agent_get */ requestBody: { content: { /** * @example { - * "tool": "creative_assign", + * "tool": "agent_get", * "arguments": { - * "creativeId": "example_id_123", - * "campaignId": "example_id_123" + * "agentId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'creative_assign'; - arguments: components['schemas']['AssignCreativeInput']; + tool: 'agent_get'; + arguments: components['schemas']['GetAgentInput']; }; }; }; @@ -4110,7 +12556,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeAssign']; + structuredContent: components['schemas']['AgentGet']; }; }; }; @@ -4135,32 +12581,29 @@ export interface operations { }; }; /** - * Create creative - * @description Create a new creative with assets, copy, and targeting specifications. + * List agents + * @description List all registered agents with comprehensive filtering. Supports filtering by type (SALES/OUTCOME), status, organization, relationship (SELF/SCOPE3/MARKETPLACE), and name. */ - creative_create: { + agent_list: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for creative_create */ + /** @description Request body for agent_list */ requestBody: { content: { /** * @example { - * "tool": "creative_create", - * "arguments": { - * "brandAgentId": 100, - * "name": "Example Name" - * } + * "tool": "agent_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'creative_create'; - arguments: components['schemas']['CreateCreativeInput']; + tool: 'agent_list'; + arguments: components['schemas']['ListAgentsInput']; }; }; }; @@ -4170,7 +12613,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeGetOutput']; + structuredContent: components['schemas']['AgentList']; }; }; }; @@ -4195,31 +12638,31 @@ export interface operations { }; }; /** - * Update creative - * @description Update an existing creative with new assets, copy, or specifications. + * List agent accounts + * @description List all your accounts registered with a specific agent. Only SALES agents support accounts. */ - creative_update: { + agent_account_list: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for creative_update */ + /** @description Request body for agent_account_list */ requestBody: { content: { /** * @example { - * "tool": "creative_update", + * "tool": "agent_account_list", * "arguments": { - * "creativeId": "example_id_123" + * "agentId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'creative_update'; - arguments: components['schemas']['UpdateCreativeInput']; + tool: 'agent_account_list'; + arguments: components['schemas']['ListAgentAccountsInput']; }; }; }; @@ -4229,7 +12672,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeGetOutput']; + structuredContent: components['schemas']['AgentAccountList']; }; }; }; @@ -4254,31 +12697,32 @@ export interface operations { }; }; /** - * Delete creative - * @description Delete a creative and remove it from any associated tactics or media buys. + * Register agent account + * @description Register your account with a SALES agent to access their products. Provide account credentials for authentication with the agent. */ - creative_delete: { + agent_account_register: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for creative_delete */ + /** @description Request body for agent_account_register */ requestBody: { content: { /** * @example { - * "tool": "creative_delete", + * "tool": "agent_account_register", * "arguments": { - * "creativeId": "example_id_123" + * "agentId": "example_id_123", + * "accountIdentifier": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'creative_delete'; - arguments: components['schemas']['DeleteCreativeInput']; + tool: 'agent_account_register'; + arguments: components['schemas']['RegisterAgentAccountInput']; }; }; }; @@ -4288,7 +12732,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeDelete']; + structuredContent: components['schemas']['AgentAccountRegister']; }; }; }; @@ -4313,31 +12757,32 @@ export interface operations { }; }; /** - * Get creative - * @description Get detailed information about a specific creative. + * Unregister agent account + * @description Unregister your account from a SALES agent. This deactivates your access to the agent but does not affect other customers. */ - creative_get: { + agent_account_unregister: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for creative_get */ + /** @description Request body for agent_account_unregister */ requestBody: { content: { /** * @example { - * "tool": "creative_get", + * "tool": "agent_account_unregister", * "arguments": { - * "creativeId": "example_id_123" + * "agentId": "example_id_123", + * "confirm": true * } * } */ 'application/json': { /** @enum {string} */ - tool: 'creative_get'; - arguments: components['schemas']['GetCreativeInput']; + tool: 'agent_account_unregister'; + arguments: components['schemas']['UnregisterAgentAccountInput']; }; }; }; @@ -4347,7 +12792,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeGetOutput']; + structuredContent: components['schemas']['AgentAccountUnregister']; }; }; }; @@ -4372,29 +12817,33 @@ export interface operations { }; }; /** - * List creatives - * @description List all creatives with optional filtering by brand agent or campaign. + * Update agent account + * @description Update authentication credentials for your account with a SALES agent. */ - creative_list: { + agent_account_update: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for creative_list */ + /** @description Request body for agent_account_update */ requestBody: { content: { /** * @example { - * "tool": "creative_list", - * "arguments": {} + * "tool": "agent_account_update", + * "arguments": { + * "agentId": "example_id_123", + * "accountIdentifier": "example_id_123", + * "auth": null + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'creative_list'; - arguments: components['schemas']['ListCreativesInput']; + tool: 'agent_account_update'; + arguments: components['schemas']['UpdateAgentAccountInput']; }; }; }; @@ -4404,7 +12853,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeList']; + structuredContent: components['schemas']['AgentAccountUpdate']; }; }; }; @@ -4429,31 +12878,32 @@ export interface operations { }; }; /** - * Get media buy - * @description Get detailed information about a specific media buy. + * Create tactic + * @description Create a new tactic defining how to achieve campaign objectives. */ - media_buy_get: { + tactic_create: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for media_buy_get */ + /** @description Request body for tactic_create */ requestBody: { content: { /** * @example { - * "tool": "media_buy_get", + * "tool": "tactic_create", * "arguments": { - * "mediaBuyId": "example_id_123" + * "campaignId": "example_id_123", + * "name": "Example Name" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'media_buy_get'; - arguments: components['schemas']['GetMediaBuyInput']; + tool: 'tactic_create'; + arguments: components['schemas']['CreateTacticInput']; }; }; }; @@ -4463,7 +12913,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyGetOutput']; + structuredContent: components['schemas']['TacticCreate']; }; }; }; @@ -4488,29 +12938,31 @@ export interface operations { }; }; /** - * List media buys - * @description List all media buys with optional filtering by brand agent, campaign, or status. + * Update tactic + * @description Update an existing tactic with new targeting, budget, or creative requirements. */ - media_buy_list: { + tactic_update: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for media_buy_list */ + /** @description Request body for tactic_update */ requestBody: { content: { /** * @example { - * "tool": "media_buy_list", - * "arguments": {} + * "tool": "tactic_update", + * "arguments": { + * "tacticId": 100 + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'media_buy_list'; - arguments: components['schemas']['ListMediaBuysInput']; + tool: 'tactic_update'; + arguments: components['schemas']['UpdateTacticInput']; }; }; }; @@ -4520,7 +12972,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyList']; + structuredContent: components['schemas']['TacticGetOutput']; }; }; }; @@ -4545,29 +12997,32 @@ export interface operations { }; }; /** - * List media products - * @description List saved media products with optional filtering. + * Delete tactic + * @description Delete a tactic and all associated media buys. */ - media_product_list: { + tactic_delete: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for media_product_list */ + /** @description Request body for tactic_delete */ requestBody: { content: { /** * @example { - * "tool": "media_product_list", - * "arguments": {} + * "tool": "tactic_delete", + * "arguments": { + * "tacticId": 100, + * "confirm": true + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'media_product_list'; - arguments: components['schemas']['ListProductsInput']; + tool: 'tactic_delete'; + arguments: components['schemas']['DeleteTacticInput']; }; }; }; @@ -4577,7 +13032,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaProductList']; + structuredContent: components['schemas']['TacticDelete']; }; }; }; @@ -4602,31 +13057,31 @@ export interface operations { }; }; /** - * Get agent - * @description Get detailed information about a specific agent (SALES or OUTCOME type). Type is automatically inferred from the agent ID. + * Get tactic + * @description Get detailed information about a specific tactic. */ - agent_get: { + tactic_get: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for agent_get */ + /** @description Request body for tactic_get */ requestBody: { content: { /** * @example { - * "tool": "agent_get", + * "tool": "tactic_get", * "arguments": { - * "agentId": "example_id_123" + * "tacticId": 100 * } * } */ 'application/json': { /** @enum {string} */ - tool: 'agent_get'; - arguments: components['schemas']['GetAgentInput']; + tool: 'tactic_get'; + arguments: components['schemas']['GetTacticInput']; }; }; }; @@ -4636,7 +13091,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['AgentGet']; + structuredContent: components['schemas']['TacticGetOutput']; }; }; }; @@ -4661,29 +13116,29 @@ export interface operations { }; }; /** - * List agents - * @description List all registered agents with comprehensive filtering. Supports filtering by type (SALES/OUTCOME), status, organization, relationship (SELF/SCOPE3/MARKETPLACE), and name. + * List tactics + * @description List all tactics with optional filtering by brand agent or campaign. */ - agent_list: { + tactic_list: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for agent_list */ + /** @description Request body for tactic_list */ requestBody: { content: { /** * @example { - * "tool": "agent_list", + * "tool": "tactic_list", * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'agent_list'; - arguments: components['schemas']['ListAgentsInput']; + tool: 'tactic_list'; + arguments: components['schemas']['ListTacticsInput']; }; }; }; @@ -4693,7 +13148,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['AgentList']; + structuredContent: components['schemas']['TacticList']; }; }; }; @@ -4718,31 +13173,32 @@ export interface operations { }; }; /** - * Get tactic - * @description Get detailed information about a specific tactic. + * Link tactic to campaign + * @description Link a tactic to a campaign. */ - tactic_get: { + tactic_link_campaign: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for tactic_get */ + /** @description Request body for tactic_link_campaign */ requestBody: { content: { /** * @example { - * "tool": "tactic_get", + * "tool": "tactic_link_campaign", * "arguments": { - * "tacticId": 100 + * "tacticId": 100, + * "campaignId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'tactic_get'; - arguments: components['schemas']['GetTacticInput']; + tool: 'tactic_link_campaign'; + arguments: components['schemas']['LinkCampaignToTacticInput']; }; }; }; @@ -4752,7 +13208,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['TacticGetOutput']; + structuredContent: components['schemas']['TacticLinkCampaign']; }; }; }; @@ -4777,29 +13233,32 @@ export interface operations { }; }; /** - * List tactics - * @description List all tactics with optional filtering by brand agent or campaign. + * Unlink tactic from campaign + * @description Unlink a tactic from a campaign. */ - tactic_list: { + tactic_unlink_campaign: { parameters: { header: { /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ 'mcp-session-id': string; }; }; - /** @description Request body for tactic_list */ + /** @description Request body for tactic_unlink_campaign */ requestBody: { content: { /** * @example { - * "tool": "tactic_list", - * "arguments": {} + * "tool": "tactic_unlink_campaign", + * "arguments": { + * "tacticId": 100, + * "campaignId": "example_id_123" + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'tactic_list'; - arguments: components['schemas']['ListTacticsInput']; + tool: 'tactic_unlink_campaign'; + arguments: components['schemas']['UnlinkCampaignFromTacticInput']; }; }; }; @@ -4809,7 +13268,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['TacticList']; + structuredContent: components['schemas']['TacticUnlinkCampaign']; }; }; }; @@ -5417,4 +13876,177 @@ export interface operations { }; }; }; + /** + * Get signal details + * @description Get detailed information about a specific signal including its access configurations and regions. + */ + signal_get: { + parameters: { + header: { + /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ + 'mcp-session-id': string; + }; + }; + /** @description Request body for signal_get */ + requestBody: { + content: { + /** + * @example { + * "tool": "signal_get", + * "arguments": { + * "signalId": "example_id_123" + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'signal_get'; + arguments: components['schemas']['GetSignalInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['SignalGet']; + }; + }; + }; + /** @description Bad request */ + 400: { + content: { + 'application/json': components['schemas']['BadRequest']; + }; + }; + /** @description Unauthorized */ + 401: { + content: { + 'application/json': components['schemas']['Unauthorized']; + }; + }; + /** @description Internal server error */ + 500: { + content: { + 'application/json': components['schemas']['InternalError']; + }; + }; + }; + }; + /** + * List signals + * @description List signals with optional filtering by agent, scope, live status, and account. + */ + signal_list: { + parameters: { + header: { + /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ + 'mcp-session-id': string; + }; + }; + /** @description Request body for signal_list */ + requestBody: { + content: { + /** + * @example { + * "tool": "signal_list", + * "arguments": {} + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'signal_list'; + arguments: components['schemas']['ListSignalsInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['SignalList']; + }; + }; + }; + /** @description Bad request */ + 400: { + content: { + 'application/json': components['schemas']['BadRequest']; + }; + }; + /** @description Unauthorized */ + 401: { + content: { + 'application/json': components['schemas']['Unauthorized']; + }; + }; + /** @description Internal server error */ + 500: { + content: { + 'application/json': components['schemas']['InternalError']; + }; + }; + }; + }; + /** + * Discover signals + * @description Discover available signals in the marketplace. Returns signals that are accessible to the buyer based on public availability or proprietary access. + */ + signal_discover: { + parameters: { + header: { + /** @description MCP session identifier (UUID). Initialize your session using the /mcp-initialize endpoint first to obtain a session ID, then reuse it for all subsequent tool requests in the same session. */ + 'mcp-session-id': string; + }; + }; + /** @description Request body for signal_discover */ + requestBody: { + content: { + /** + * @example { + * "tool": "signal_discover", + * "arguments": {} + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'signal_discover'; + arguments: components['schemas']['DiscoverSignalsInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['SignalDiscover']; + }; + }; + }; + /** @description Bad request */ + 400: { + content: { + 'application/json': components['schemas']['BadRequest']; + }; + }; + /** @description Unauthorized */ + 401: { + content: { + 'application/json': components['schemas']['Unauthorized']; + }; + }; + /** @description Internal server error */ + 500: { + content: { + 'application/json': components['schemas']['InternalError']; + }; + }; + }; + }; }