diff --git a/.changeset/auto-update-1767839863.md b/.changeset/auto-update-1767839863.md new file mode 100644 index 0000000..92bb89c --- /dev/null +++ b/.changeset/auto-update-1767839863.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..2f4edc3 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,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /webhook-register: + /seat-details-list: post: - operationId: webhook_register - summary: Register webhook - description: Register a webhook to receive real-time notifications about events. + operationId: seat_details_list + summary: List seats + description: List all seats the authenticated user has access to, including seat members, agents, and brand agents. tags: - - Webhooks + - Seats security: - bearerAuth: [] parameters: @@ -2514,26 +2501,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 webhook_register + description: Request body for seat_details_list required: true content: application/json: example: - tool: webhook_register - arguments: - endpoint: - url: https://example.com - method: POST - eventTypes: [] + tool: seat_details_list + arguments: {} schema: type: object properties: tool: type: string enum: - - webhook_register + - seat_details_list arguments: - $ref: '#/components/schemas/RegisterWebhookInput' + $ref: '#/components/schemas/ListSeatsInput' required: - tool - arguments @@ -2550,7 +2533,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/WebhookRegister' + $ref: '#/components/schemas/ListSeatsOutput' required: - content - structuredContent @@ -2573,13 +2556,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /webhook-list: + /seat-details-get: post: - operationId: webhook_list - summary: List webhooks - description: List all registered webhooks. + operationId: seat_details_get + summary: Get seat details + description: Get detailed information about a specific seat including members, agents, and brand agents. tags: - - Webhooks + - Seats security: - bearerAuth: [] parameters: @@ -2593,22 +2576,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 seat_details_get required: true content: application/json: example: - tool: webhook_list - arguments: {} + tool: seat_details_get + arguments: + seatId: example_id_123 schema: type: object properties: tool: type: string enum: - - webhook_list + - seat_details_get arguments: - $ref: '#/components/schemas/ListWebhooksInput' + $ref: '#/components/schemas/GetSeatInput' required: - tool - arguments @@ -2625,7 +2609,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/WebhookList' + $ref: '#/components/schemas/GetSeatOutput' required: - content - structuredContent @@ -2648,13 +2632,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /webhook-delete: + /seat-create: post: - operationId: webhook_delete - summary: Delete webhook - description: Delete a registered webhook. + operationId: seat_create + summary: Create seat + description: Create a new seat under the authenticated user's customer. Requires ADMIN or SUPER_ADMIN role. tags: - - Webhooks + - Seats security: - bearerAuth: [] parameters: @@ -2668,23 +2652,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 webhook_delete + description: Request body for seat_create required: true content: application/json: example: - tool: webhook_delete + tool: seat_create arguments: - webhookId: example_id_123 + name: Example Name + type: BUYER schema: type: object properties: tool: type: string enum: - - webhook_delete + - seat_create arguments: - $ref: '#/components/schemas/DeleteWebhookInput' + $ref: '#/components/schemas/CreateSeatInput' required: - tool - arguments @@ -2701,7 +2686,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/WebhookDelete' + $ref: '#/components/schemas/CreateSeatOutput' required: - content - structuredContent @@ -2724,15 +2709,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /service-token-create: + /seat-update: 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: seat_update + summary: Update seat + description: Update an existing seat. Requires ADMIN role on the seat or SUPER_ADMIN. tags: - - Service Tokens + - Seats security: - bearerAuth: [] parameters: @@ -2746,13 +2729,14 @@ 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 seat_update required: true content: application/json: example: - tool: service_token_create + tool: seat_update arguments: + seatId: example_id_123 name: Example Name schema: type: object @@ -2760,9 +2744,9 @@ paths: tool: type: string enum: - - service_token_create + - seat_update arguments: - $ref: '#/components/schemas/CreateServiceTokenInput' + $ref: '#/components/schemas/UpdateSeatInput' required: - tool - arguments @@ -2779,7 +2763,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/CreateServiceTokenOutput' + $ref: '#/components/schemas/UpdateSeatOutput' required: - content - structuredContent @@ -2802,13 +2786,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /service-token-list: + /seat-delete: 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: seat_delete + summary: Delete seat + description: Delete a seat. Requires ADMIN role on the seat or SUPER_ADMIN. This operation cannot be undone. tags: - - Service Tokens + - Seats security: - bearerAuth: [] parameters: @@ -2822,22 +2806,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 seat_delete required: true content: application/json: example: - tool: service_token_list - arguments: {} + tool: seat_delete + arguments: + seatId: example_id_123 schema: type: object properties: tool: type: string enum: - - service_token_list + - seat_delete arguments: - $ref: '#/components/schemas/ListServiceTokensInput' + $ref: '#/components/schemas/DeleteSeatInput' required: - tool - arguments @@ -2854,7 +2839,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/ListServiceTokensOutput' + $ref: '#/components/schemas/DeleteSeatOutput' required: - content - structuredContent @@ -2877,13 +2862,15 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /service-token-get: + /seat-member-add: post: - operationId: service_token_get - summary: Get service token - description: Get detailed information about a specific service token. The secret is never returned. + operationId: seat_member_add + summary: Add seat member + description: >- + Add a user as a member to a seat with a specified role (ADMIN, READ_WRITE, or READ). Requires ADMIN role on the + seat or SUPER_ADMIN. tags: - - Service Tokens + - Seats security: - bearerAuth: [] parameters: @@ -2897,23 +2884,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_get + description: Request body for seat_member_add required: true content: application/json: example: - tool: service_token_get + tool: seat_member_add arguments: - id: '1234567890' + seatId: example_id_123 + userId: example_id_123 + role: ADMIN schema: type: object properties: tool: type: string enum: - - service_token_get + - seat_member_add arguments: - $ref: '#/components/schemas/GetServiceTokenInput' + $ref: '#/components/schemas/AddSeatMemberInput' required: - tool - arguments @@ -2930,7 +2919,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/GetServiceTokenOutput' + $ref: '#/components/schemas/AddSeatMemberOutput' required: - content - structuredContent @@ -2953,13 +2942,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /service-token-update: + /seat-member-update-role: post: - operationId: service_token_update - summary: Update service token - description: Update a service token. Only name, description, and expiration can be modified. + operationId: seat_member_update_role + summary: Update seat member role + description: Update the role of a seat member. Requires ADMIN role on the seat or SUPER_ADMIN. tags: - - Service Tokens + - Seats security: - bearerAuth: [] parameters: @@ -2973,23 +2962,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_update + description: Request body for seat_member_update_role required: true content: application/json: example: - tool: service_token_update + tool: seat_member_update_role arguments: - id: '1234567890' + seatId: example_id_123 + userId: example_id_123 + role: ADMIN schema: type: object properties: tool: type: string enum: - - service_token_update + - seat_member_update_role arguments: - $ref: '#/components/schemas/UpdateServiceTokenInput' + $ref: '#/components/schemas/UpdateSeatMemberRoleInput' required: - tool - arguments @@ -3006,7 +2997,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/UpdateServiceTokenOutput' + $ref: '#/components/schemas/UpdateSeatMemberRoleOutput' required: - content - structuredContent @@ -3029,13 +3020,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /service-token-archive: + /seat-member-remove: post: - operationId: service_token_archive - summary: Archive service token - description: Archive (soft delete) a service token. This immediately invalidates the token for authentication. + operationId: seat_member_remove + summary: Remove seat member + description: Remove a user from a seat. Requires ADMIN role on the seat or SUPER_ADMIN. tags: - - Service Tokens + - Seats security: - bearerAuth: [] parameters: @@ -3049,23 +3040,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_archive + description: Request body for seat_member_remove required: true content: application/json: example: - tool: service_token_archive + tool: seat_member_remove arguments: - id: '1234567890' + seatId: example_id_123 + userId: example_id_123 schema: type: object properties: tool: type: string enum: - - service_token_archive + - seat_member_remove arguments: - $ref: '#/components/schemas/ArchiveServiceTokenInput' + $ref: '#/components/schemas/RemoveSeatMemberInput' required: - tool - arguments @@ -3082,7 +3074,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/ArchiveServiceTokenOutput' + $ref: '#/components/schemas/RemoveSeatMemberOutput' required: - content - structuredContent @@ -3105,13 +3097,15 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /customer-get: + /signal-create: post: - operationId: customer_get - summary: Get customer info - description: Get detailed information about a customer from the core database. + 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: - - Customers + - Signals security: - bearerAuth: [] parameters: @@ -3125,22 +3119,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 customer_get + description: Request body for signal_create required: true content: application/json: example: - tool: customer_get - arguments: {} + tool: signal_create + arguments: + adcpAgentId: 100 + signalId: example_id_123 + name: Example Name + access: [] schema: type: object properties: tool: type: string enum: - - customer_get + - signal_create arguments: - $ref: '#/components/schemas/GetCustomerInput' + $ref: '#/components/schemas/RegisterSignalInput' required: - tool - arguments @@ -3157,7 +3155,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/GetCustomerOutput' + $ref: '#/components/schemas/SignalCreate' required: - content - structuredContent @@ -3180,13 +3178,13 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' - /customer-get-seats: + /signal-get: post: - operationId: customer_get_seats - summary: Get customer seats - description: Get all seats associated with a customer from the core database. + operationId: signal_get + summary: Get signal details + description: Get detailed information about a specific signal including its access configurations and regions. tags: - - Customers + - Signals security: - bearerAuth: [] parameters: @@ -3200,22 +3198,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 signal_get required: true content: application/json: example: - tool: customer_get_seats - arguments: {} + tool: signal_get + arguments: + signalId: example_id_123 schema: type: object properties: tool: type: string enum: - - customer_get_seats + - signal_get arguments: - $ref: '#/components/schemas/GetCustomerSeatsInput' + $ref: '#/components/schemas/GetSignalInput' required: - tool - arguments @@ -3232,7 +3231,7 @@ paths: items: $ref: '#/components/schemas/MCPContent' structuredContent: - $ref: '#/components/schemas/GetCustomerSeatsOutput' + $ref: '#/components/schemas/SignalGet' required: - content - structuredContent @@ -3255,87 +3254,2746 @@ paths: application/json: schema: $ref: '#/components/schemas/InternalError' -components: - schemas: - ListChannelsInput: - type: object - properties: {} - GetCustomerInput: - type: object - properties: - customerId: + /signal-update: + post: + operationId: signal_update + summary: Update a signal + description: Update an existing signal with new information, regions, or access configurations. + tags: + - Signals + security: + - bearerAuth: [] + parameters: + - name: mcp-session-id + in: header + required: true + schema: + type: string + format: uuid 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: + 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_update + required: true + content: + application/json: + example: + tool: signal_update + arguments: + signalId: example_id_123 + schema: + type: object + properties: + tool: + type: string + enum: + - signal_update + arguments: + $ref: '#/components/schemas/UpdateSignalFromAgentInput' + 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/SignalUpdate' + 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-delete: + post: + operationId: signal_delete + summary: Delete a signal + description: Delete (archive) a signal. This soft-deletes the signal and all associated access records. + tags: + - Signals + security: + - bearerAuth: [] + parameters: + - name: mcp-session-id + in: header + required: true + schema: + type: string + format: uuid 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 - SyncSalesAgentsInput: - type: object - properties: - creativeId: - type: string - example: example_id_123 - required: - - creativeId - ListCountriesInput: - type: object - properties: {} - ListLanguagesInput: - type: object - properties: {} - CreateMediaBuyInput: - type: object - properties: - tacticId: - type: number - example: 100 - agentId: - type: string - example: example_id_123 - name: - type: string - minLength: 1 + 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_delete + required: true + content: + application/json: + example: + tool: signal_delete + arguments: + signalId: example_id_123 + schema: + type: object + properties: + tool: + type: string + enum: + - signal_delete + arguments: + $ref: '#/components/schemas/DeregisterSignalInput' + 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/SignalDelete' + 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: + 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 + 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 + 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: {} + 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 + 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 + creativeId: + type: string + example: example_id_123 + tacticId: + type: string + example: example_id_123 + types: + type: array + items: + type: string + example: [] + unreadOnly: + type: boolean + example: true + limit: + type: number + example: 100 + offset: + type: number + example: 100 + MarkNotificationReadInput: + type: object + properties: + notificationId: + type: string + example: example_id_123 + required: + - notificationId + MarkNotificationAcknowledgedInput: + type: object + properties: + notificationId: + type: string + example: example_id_123 + required: + - notificationId + MarkAllNotificationsReadInput: + type: object + properties: {} + 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 + SyncProductsInput: + type: object + properties: + sourceId: + type: string + example: example_id_123 + required: + - sourceId + GetAgentInput: + type: object + properties: + agentId: + description: The agent ID to retrieve + type: string + example: example_id_123 + required: + - agentId + ListAgentsInput: + type: object + properties: + type: + description: Filter by agent type (SALES, 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 + RegisterAgentInput: + type: object + properties: + type: + description: The type of agent to register + type: string + enum: + - SALES + - OUTCOME + - SIGNAL + example: SALES + name: + description: Agent name + type: string + minLength: 1 + example: Example Name + description: + description: Agent description + type: string + example: string + endpointUrl: + description: Agent endpoint URL + type: string + format: uri + example: https://example.com + protocol: + description: Protocol used by the agent (MCP or A2A) + type: string + enum: + - MCP + - A2A + example: MCP + authenticationType: + description: Authentication type + type: string + enum: + - API_KEY + - OAUTH + - NO_AUTH + - JWT + example: API_KEY + organizationId: + description: Organization ID + type: string + example: example_id_123 + auth: + description: Authentication configuration object + anyOf: + - type: object + properties: + type: + type: string + enum: + - jwt + privateKey: + type: string + minLength: 1 + issuer: + type: string + minLength: 1 + subject: + type: string + minLength: 1 + keyId: + type: string + minLength: 1 + scope: + type: string + minLength: 1 + tokenEndpointUrl: + type: string + format: uri + audienceUrl: + type: string + format: uri + algorithm: + type: string + enum: + - ES256 + - RS256 + environment: + type: string + required: + - type + - privateKey + - issuer + - subject + - keyId + - scope + - tokenEndpointUrl + - audienceUrl + - type: object + properties: + type: + type: string + enum: + - bearer + - apikey + - api_key + token: + type: string + minLength: 1 + required: + - type + - token + - type: object + properties: + type: + type: string + enum: + - oauth + - oauth2 + token: + type: string + minLength: 1 + required: + - type + - token + - type: object + properties: {} + 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: + agentId: + description: The agent ID to unregister + type: string + example: example_id_123 + required: + - agentId + UpdateAgentInput: + type: object + properties: + agentId: + description: The agent ID to update + type: string + example: example_id_123 + name: + description: New agent name + type: string + example: Example Name + description: + description: New agent description + type: string + example: string + endpointUrl: + description: New endpoint URL + type: string + format: uri + example: https://example.com + protocol: + description: New protocol + type: string + enum: + - MCP + - A2A + example: MCP + authenticationType: + description: New authentication type + type: string + enum: + - API_KEY + - OAUTH + - NO_AUTH + - JWT + example: API_KEY + auth: + description: New authentication configuration + anyOf: + - type: object + properties: + type: + type: string + enum: + - jwt + privateKey: + type: string + minLength: 1 + issuer: + type: string + minLength: 1 + subject: + type: string + minLength: 1 + keyId: + type: string + minLength: 1 + scope: + type: string + minLength: 1 + tokenEndpointUrl: + type: string + format: uri + audienceUrl: + type: string + format: uri + algorithm: + type: string + enum: + - ES256 + - RS256 + environment: + type: string + required: + - type + - privateKey + - issuer + - subject + - keyId + - scope + - tokenEndpointUrl + - audienceUrl + - type: object + properties: + type: + type: string + enum: + - bearer + - apikey + - api_key + token: + type: string + minLength: 1 + required: + - type + - token + - type: object + properties: + type: + type: string + enum: + - oauth + - oauth2 + token: + type: string + minLength: 1 + required: + - type + - token + - type: object + properties: {} + reportingType: + description: 'Reporting type for SALES agents: WEBHOOK (default), BUCKET, or POLLING' + 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 + required: + - agentId + ListSeatsInput: + type: object + properties: + userId: + description: The unique identifier of the user to get seats for. If not provided, uses the authenticated user ID. + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + customerId: + description: >- + The unique identifier of the customer to filter seats by. If not provided, uses the authenticated users + customer ID. + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + GetSeatInput: + type: object + properties: + seatId: + description: The unique identifier of the seat to retrieve + type: string + example: example_id_123 + required: + - seatId + CreateSeatInput: + type: object + properties: + name: + description: Name for the new seat + type: string + minLength: 1 + example: Example Name + type: + description: Type of seat to create + type: string + enum: + - BUYER + - ACTIVATION + example: BUYER + required: + - name + - type + UpdateSeatInput: + type: object + properties: + seatId: + description: The ID of the seat to update + type: string + minLength: 1 + pattern: ^\d+$ + example: example_id_123 + name: + description: New name for the seat + type: string + minLength: 1 + example: Example Name + required: + - seatId + - name + DeleteSeatInput: + type: object + properties: + seatId: + description: The ID of the seat to delete + type: string + minLength: 1 + pattern: ^\d+$ + example: example_id_123 + required: + - seatId + AddSeatMemberInput: + type: object + properties: + seatId: + description: The ID of the seat to add the member to + type: string + minLength: 1 + pattern: ^\d+$ + example: example_id_123 + userId: + description: The ID of the user to add to the seat + type: string + minLength: 1 + pattern: ^\d+$ + example: example_id_123 + role: + description: The role to assign to the user + type: string + enum: + - ADMIN + - READ_WRITE + - READ + example: ADMIN + required: + - seatId + - userId + - role + UpdateSeatMemberRoleInput: + type: object + properties: + seatId: + description: The ID of the seat + type: string + minLength: 1 + pattern: ^\d+$ + example: example_id_123 + userId: + description: The ID of the user whose role to update + type: string + minLength: 1 + pattern: ^\d+$ + example: example_id_123 + role: + description: The new role for the user + type: string + enum: + - ADMIN + - READ_WRITE + - READ + example: ADMIN + required: + - seatId + - userId + - role + RemoveSeatMemberInput: + type: object + properties: + seatId: + description: The ID of the seat + type: string + minLength: 1 + pattern: ^\d+$ + example: example_id_123 + userId: + description: The ID of the user to remove from the seat + type: string + minLength: 1 + pattern: ^\d+$ + example: example_id_123 + required: + - seatId + - userId + 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 + RegisterWebhookInput: + type: object + properties: + brandAgentId: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + endpoint: + type: object + properties: + url: + type: string + format: uri + method: + type: string + enum: + - POST + - PUT + headers: + type: object + additionalProperties: + type: string + authentication: + type: object + properties: + type: + type: string + enum: + - bearer + - basic + - hmac + credentials: + type: string + required: + - type + - credentials + required: + - url + - method + eventTypes: + type: array + items: + type: string + example: [] + filters: + type: object + properties: + campaigns: + type: array + items: + type: string + tactics: + type: array + items: + type: string + creatives: + type: array + items: + type: string + mediaBuys: + type: array + items: + type: string + metrics: + type: array + items: + type: string + minSeverity: + type: string + enum: + - info + - warning + - critical + retryPolicy: + type: object + properties: + maxRetries: + type: integer + minimum: 0 + maximum: 9007199254740991 + backoffMultiplier: + type: number + minimum: 0 + exclusiveMinimum: true + maxBackoffSeconds: + type: number + minimum: 0 + exclusiveMinimum: true + required: + - endpoint + - eventTypes + ListWebhooksInput: + type: object + properties: + take: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + skip: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + DeleteWebhookInput: + type: object + properties: + webhookId: + type: string + example: example_id_123 + required: + - webhookId + CreateServiceTokenInput: + type: object + properties: + name: + description: Human-readable name for the service token + type: string + minLength: 1 + example: Example Name + description: + description: Optional description of the token purpose and usage + type: string + example: string + expiresInDays: + description: Number of days until token expiration (max 365). If not provided, token does not expire + type: integer + exclusiveMinimum: true + maximum: 365 + example: 100 + scope: + description: 'Token scope: CUSTOMER (full customer access) or SEAT (scoped to specific seat)' + default: CUSTOMER + type: string + enum: + - CUSTOMER + - SEAT + seatName: + description: Seat name (required when scope is SEAT). The seat will be looked up for the customer. + type: string + minLength: 1 + example: Example Name + 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 + RegisterSignalInput: + type: object + properties: + adcpAgentId: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + signalId: + type: string + minLength: 1 + maxLength: 255 + pattern: ^[\w\-:.]+$ + example: example_id_123 + name: + type: string + minLength: 1 + maxLength: 255 + example: Example Name + description: + type: string + maxLength: 5000 + example: string + keyType: + 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 + example: [] + regions: + maxItems: 6 + type: array + items: + type: string + enum: + - NORAM + - LATAM + - EMEA + - APAC + - ANZ + - GLOBAL + example: [] + metadata: + type: object + additionalProperties: {} + access: + minItems: 1 + type: array + items: + type: object + properties: + account: + type: string + 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: + - account + - scope + - pricingOptions + example: [] + required: + - adcpAgentId + - signalId + - name + - access + 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 + UpdateSignalFromAgentInput: + type: object + properties: + signalId: + type: string + minLength: 1 + maxLength: 255 + pattern: ^[\w\-:.]+$ + example: example_id_123 + name: + type: string + minLength: 1 + maxLength: 255 + example: Example Name + description: + type: string + maxLength: 5000 + example: string + addAccess: + type: array + items: + type: object + properties: + account: + type: string + 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: + - account + - scope + - pricingOptions + example: [] + updateAccess: + type: array + items: + type: object + properties: + 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: + - accessId + example: [] + archiveAccess: + type: array + items: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: [] + required: + - signalId + DeregisterSignalInput: + type: object + properties: + signalId: + type: string + minLength: 1 + maxLength: 255 + pattern: ^[\w\-:.]+$ + example: example_id_123 + 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 + MediaBuyGet: + type: object + properties: + media_buy_id: + description: ADCP media buy identifier + type: string + example: example_id_123 + tactic_id: + description: Internal tactic ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + customer_id: + description: Internal customer ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + name: + description: Media buy name + type: string example: Example Name description: + description: Media buy description + type: string + example: string + status: + description: Internal status (DRAFT, ACTIVE, PAUSED, etc.) type: string example: string products: + description: Pre-execution product configuration type: array items: type: object properties: - mediaProductId: + product_id: + description: ADCP product identifier + type: string + sales_agent_id: + type: string + sales_agent_name: type: string - budgetAmount: + budget: + description: ADCP budget field type: number - minimum: 0 - exclusiveMinimum: true - budgetCurrency: + pacing: + description: ADCP pacing field + type: string + enum: + - asap + - even + - front_loaded + pricing_option_id: type: string - pricingCpm: + bid_price: type: number - minimum: 0 - exclusiveMinimum: true - pricingSignalCost: + display_order: type: number - displayOrder: - type: integer - minimum: -9007199254740991 - maximum: 9007199254740991 + 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 @@ -3345,41 +6003,884 @@ components: name: type: string format_id: - anyOf: - - type: string - - type: object - properties: - agent_url: - type: string - id: - type: string - required: - - agent_url - - id + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id assets: type: object additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - width + - height + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - 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: + content: + type: string + language: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + inputs: + nullable: true + type: array + items: type: object properties: - url: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true type: string - width: - type: number - height: - type: number required: - - url - click_url: + - 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: - - mediaProductId - - budgetAmount + - package_id + - creatives + - created_at + - updated_at example: [] creatives: + description: Full creative objects (enriched from joins) type: array items: type: object @@ -3389,1093 +6890,1506 @@ components: name: type: string format_id: - anyOf: - - type: string - - type: object - properties: - agent_url: - type: string - id: - type: string - required: - - agent_url - - id + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id assets: type: object additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - width + - height + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - 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: + content: + type: string + language: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + required: + - name + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + required: + - brand_manifest + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + inputs: + nullable: true + type: array + items: type: object properties: - url: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true type: string - width: - type: number - height: - type: number required: - - url - click_url: + - 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: [] - 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: - type: array - items: - type: string - example: [] - unreadOnly: - type: boolean - example: true - limit: - type: number - example: 100 - offset: - type: number - example: 100 - MarkNotificationReadInput: - type: object - properties: - notificationId: - type: string - example: example_id_123 - required: - - notificationId - MarkNotificationAcknowledgedInput: - type: object - properties: - notificationId: - type: string - example: example_id_123 - required: - - notificationId - MarkAllNotificationsReadInput: - type: object - properties: {} - 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 + adcp: + description: ADCP-specific metadata (from execute response) type: object properties: - deliveryType: + media_buy_id: 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 - 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.' + 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 - example: example_id_123 - saveToDatabase: - description: 'Whether to save discovered products for future use (default: true)' - type: boolean - example: true + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?: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: - - brief - - brandManifestUrl - SaveProductInput: + - media_buy_id + - tactic_id + - customer_id + - name + - status + - created_at + - updated_at + TacticGet: type: object properties: - productId: - type: string - example: example_id_123 + id: + type: number + example: 100 name: type: string example: Example Name - description: + prompt: 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: + campaignIds: type: array items: - type: object - additionalProperties: {} + type: string example: [] - supportedTargeting: + channelCodes: 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: - take: + countryCodes: + type: array + items: + type: string + example: [] + mediaBuyCount: type: integer - exclusiveMinimum: true + minimum: 0 maximum: 9007199254740991 example: 100 - skip: + targetingCount: + description: Count of targeting dimensions (channels, countries, bitmap profiles, brand agents) type: integer minimum: 0 maximum: 9007199254740991 example: 100 - SyncProductsInput: - type: object - properties: - sourceId: - type: string - example: example_id_123 - required: - - sourceId - GetAgentInput: - type: object - properties: - agentId: - description: The agent ID to retrieve - type: string - example: example_id_123 - required: - - agentId - ListAgentsInput: - type: object - properties: - type: - description: Filter by agent type (SALES or OUTCOME) - type: string - enum: - - SALES - - OUTCOME - example: SALES - status: - description: Filter by status (PENDING, ACTIVE, DISABLED) - type: string - enum: - - PENDING - - ACTIVE - - DISABLED - example: PENDING - organizationId: - description: Filter by organization ID - type: string - example: example_id_123 - relationship: - description: >- - Filter by relationship (SELF = owned by you, SCOPE3 = Scope3-provided, MARKETPLACE = third-party marketplace - agents) - type: string - enum: - - SELF - - SCOPE3 - - MARKETPLACE - example: SELF - name: - description: Filter by agent name (partial match) - type: string - example: Example Name - RegisterAgentInput: - type: object - properties: - type: - description: The type of agent to register - type: string - enum: - - SALES - - OUTCOME - example: SALES - name: - description: Agent name - type: string - minLength: 1 - example: Example Name - description: - description: Agent description + 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 - endpointUrl: - description: Agent endpoint URL + updatedAt: type: string - format: uri - example: https://example.com - protocol: - description: Protocol used by the agent (MCP or A2A) + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?: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 - enum: - - MCP - - A2A - example: MCP - authenticationType: - description: Authentication type + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?: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: - - API_KEY - - OAUTH - - NO_AUTH - - JWT - example: API_KEY - organizationId: - description: Organization ID + - text + example: text + text: type: string - example: example_id_123 - auth: - description: Authentication configuration object - anyOf: - - type: object - properties: - type: - type: string - enum: - - jwt - privateKey: - type: string - minLength: 1 - issuer: - type: string - minLength: 1 - subject: - type: string - minLength: 1 - keyId: - type: string - minLength: 1 - scope: - type: string - minLength: 1 - tokenEndpointUrl: - type: string - format: uri - audienceUrl: - type: string - format: uri - algorithm: - type: string - enum: - - ES256 - - RS256 - environment: - type: string - required: - - type - - privateKey - - issuer - - subject - - keyId - - scope - - tokenEndpointUrl - - audienceUrl - - type: object - properties: - type: - type: string - enum: - - bearer - - apikey - - api_key - token: - type: string - minLength: 1 - required: - - type - - token - - type: object - properties: - type: - type: string - enum: - - oauth - - oauth2 - token: - type: string - minLength: 1 - required: - - type - - token - - type: object - properties: {} + example: string required: - type - - name - - endpointUrl - - protocol - UnregisterAgentInput: + - text + additionalProperties: false + BadRequest: + description: Bad request error response type: object properties: - agentId: - description: The agent ID to unregister + error: type: string - example: example_id_123 + example: string + message: + type: string + example: string required: - - agentId - UpdateAgentInput: + - error + additionalProperties: false + Unauthorized: + description: Unauthorized error response type: object properties: - agentId: - description: The agent ID to update - type: string - example: example_id_123 - name: - description: New agent name - type: string - example: Example Name - description: - description: New agent description + error: + type: string + example: string + message: type: string example: string - endpointUrl: - description: New endpoint URL - type: string - format: uri - example: https://example.com - protocol: - description: New protocol - type: string - enum: - - MCP - - A2A - example: MCP - authenticationType: - description: New authentication type - type: string - enum: - - API_KEY - - OAUTH - - NO_AUTH - - JWT - example: API_KEY - auth: - description: New authentication configuration - anyOf: - - type: object - properties: - type: - type: string - enum: - - jwt - privateKey: - type: string - minLength: 1 - issuer: - type: string - minLength: 1 - subject: - type: string - minLength: 1 - keyId: - type: string - minLength: 1 - scope: - type: string - minLength: 1 - tokenEndpointUrl: - type: string - format: uri - audienceUrl: - type: string - format: uri - algorithm: - type: string - enum: - - ES256 - - RS256 - environment: - type: string - required: - - type - - privateKey - - issuer - - subject - - keyId - - scope - - tokenEndpointUrl - - audienceUrl - - type: object - properties: - type: - type: string - enum: - - bearer - - apikey - - api_key - token: - type: string - minLength: 1 - required: - - type - - token - - type: object - properties: - type: - type: string - enum: - - oauth - - oauth2 - token: - type: string - minLength: 1 - required: - - type - - token - - type: object - properties: {} required: - - agentId - CreateTacticInput: + - error + additionalProperties: false + InternalError: + description: Internal server error response type: object properties: - campaignId: - type: string - example: example_id_123 - name: + error: type: string - minLength: 1 - example: Example Name - prompt: + example: string + message: 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: + required: + - error + additionalProperties: false + ChannelList: + type: object + properties: + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + items: type: array items: type: object properties: - id: - type: number - name: + channel: type: string - required: - - id - - name - example: [] - availableBrandStory: - type: array - items: - type: object - properties: - id: - type: number - name: + displayName: type: string required: - - id - - name + - channel + - displayName + additionalProperties: false example: [] required: - - campaignId - - name - UpdateTacticInput: + - total + - items + additionalProperties: false + GetCustomerOutput: type: object properties: - tacticId: + 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 - prompt: + 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 - channelCodes: - type: array - items: - type: string - enum: - - ctv - - video - - display - - app - - social - example: [] - countryCodes: - type: array - items: - type: string - example: [] - availableBrandStandards: + 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 type: array items: type: object properties: id: - type: number + description: Unique identifier for the seat + type: string name: + description: Seat display name type: string - required: - - id - - name - example: [] - availableBrandStory: - type: array - items: - type: object - properties: - id: + customerId: + description: Customer ID that owns this seat type: number - name: + 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: - - tacticId - DeleteTacticInput: + - customerId + - seats + - count + additionalProperties: false + SyncSalesAgentsOutput: type: object properties: - tacticId: - type: number - example: 100 - confirm: + success: type: boolean example: true - required: - - tacticId - - confirm - GetTacticInput: - type: object - properties: - tacticId: - type: number - example: 100 - required: - - tacticId - ListTacticsInput: - type: object - properties: - campaignId: + creative_id: 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: + 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: - - tacticId - - campaignId - UnlinkCampaignFromTacticInput: + - success + - creative_id + additionalProperties: false + CountryList: type: object properties: - tacticId: - type: number + total: + type: integer + minimum: 0 + maximum: 9007199254740991 example: 100 - campaignId: - type: string - example: example_id_123 + items: + type: array + items: + type: object + properties: + key: + type: string + displayName: + type: string + required: + - key + - displayName + additionalProperties: false + example: [] required: - - tacticId - - campaignId - RegisterWebhookInput: + - total + - items + additionalProperties: false + LanguageList: type: object properties: - brandAgentId: + total: type: integer - exclusiveMinimum: true + minimum: 0 maximum: 9007199254740991 example: 100 - endpoint: - type: object - properties: - url: - type: string - format: uri - method: - type: string - enum: - - POST - - PUT - headers: - type: object - additionalProperties: - type: string - authentication: - type: object - properties: - type: - type: string - enum: - - bearer - - basic - - hmac - credentials: - type: string - required: - - type - - credentials - required: - - url - - method - eventTypes: + items: 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: object + properties: + key: type: string - metrics: - type: array - items: + displayName: type: string - minSeverity: - type: string - enum: - - info - - warning - - critical - retryPolicy: - type: object - properties: - maxRetries: - type: integer - minimum: 0 - maximum: 9007199254740991 - backoffMultiplier: - type: number - minimum: 0 - exclusiveMinimum: true - maxBackoffSeconds: - type: number - minimum: 0 - exclusiveMinimum: true + required: + - key + - displayName + additionalProperties: false + example: [] required: - - endpoint - - eventTypes - ListWebhooksInput: + - total + - items + additionalProperties: false + ListMediaBuysOutput: type: object properties: - take: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 - skip: + total: type: integer minimum: 0 maximum: 9007199254740991 example: 100 - DeleteWebhookInput: + items: + type: array + items: + $ref: '#/components/schemas/MediaBuyGetOutput' + example: [] + required: + - total + - items + additionalProperties: false + ValidateMediaBuyBudgetOutput: type: object properties: - webhookId: + valid: + type: boolean + example: true + message: type: string - example: example_id_123 + example: string required: - - webhookId - CreateServiceTokenInput: + - valid + additionalProperties: false + NotificationsList: 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 + total: type: integer - exclusiveMinimum: true - maximum: 365 + minimum: 0 + maximum: 9007199254740991 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 + 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: - - name - UpdateServiceTokenInput: + - total + - hasMore + - items + additionalProperties: false + NotificationsMarkRead: 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 + success: + type: boolean + example: true + notificationId: 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 + example: example_id_123 required: - - id - ArchiveServiceTokenInput: + - success + - notificationId + additionalProperties: false + NotificationsMarkAcknowledged: type: object properties: - id: - description: The unique identifier of the service token to archive - type: integer - format: int64 - example: 100 + success: + type: boolean + example: true + notificationId: + type: string + example: example_id_123 required: - - id - GetServiceTokenInput: + - success + - notificationId + additionalProperties: false + NotificationsMarkAllRead: type: object properties: - id: - description: The unique identifier of the service token to retrieve + success: + type: boolean + example: true + count: type: integer - format: int64 + minimum: 0 + maximum: 9007199254740991 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: + - success + - count + additionalProperties: false + MediaProductDiscover: type: object properties: - includeArchived: - description: Whether to include archived tokens in the response - default: false + success: type: boolean - seatId: - description: Filter tokens by seat ID + example: true + products_found: type: integer - format: int64 + minimum: 0 + maximum: 9007199254740991 example: 100 - userId: - description: Filter tokens by user ID + products_saved: type: integer - format: int64 + minimum: 0 + maximum: 9007199254740991 example: 100 - MediaBuyGet: - type: object - properties: - id: - type: string - example: example_id_123 - tacticId: - type: number + successful_agents: + type: integer + minimum: 0 + maximum: 9007199254740991 example: 100 - customerId: - type: number + failed_agents: + type: integer + minimum: 0 + maximum: 9007199254740991 example: 100 - name: - type: string - example: Example Name - description: - type: string - example: string products: type: array items: type: object properties: - mediaProductId: + product_id: type: string - salesAgentId: - type: string - salesAgentName: + name: type: string - budgetAmount: - type: number - budgetCurrency: + description: type: string - pricingCpm: - type: number - pricingSignalCost: - type: number - displayOrder: - type: number - creativeFormats: + 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 @@ -4484,297 +8398,1016 @@ components: type: string id: type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number required: - agent_url - id - required: - - mediaProductId - - salesAgentId - 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: + additionalProperties: false + placements: + description: Specific placements within product type: array items: type: object properties: - creativeId: + placement_id: type: string name: type: string - formatId: + 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 - mediaUrl: + additionalProperties: false + creative_policy: + description: Creative requirements and restrictions + type: object + properties: + max_file_size: + type: number + allowed_formats: + type: array + items: type: string - status: + restricted_categories: + type: array + items: type: string - required: - - creativeId - - name - - formatId - - mediaUrl - - status - createdAt: + 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 - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|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: + 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))$ - salesAgentId: + 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 - salesAgentName: + 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 - pricingCpm: - type: number - pricingSignalCost: - type: number - bidPrice: - type: number - pricingOptionId: + sales_agent_name: + description: Human-readable agent name type: string - creativeFormats: + 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 - 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: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?: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 - 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 - - 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 + 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: - - error + - success + - products_found + - products_saved + - successful_agents + - failed_agents + - products additionalProperties: false - ChannelList: + MediaProductList: type: object properties: total: @@ -4787,114 +9420,1131 @@ components: items: type: object properties: - channel: + 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 - displayName: + 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: - - channel - - displayName + - 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 - GetCustomerOutput: + MediaProductSync: 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 + success: 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 - 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 + products_saved: type: integer minimum: 0 maximum: 9007199254740991 example: 100 - required: - - customerId - - seats - - count - additionalProperties: false - CreativeSyncSalesAgents: - type: object - properties: - success: - type: boolean - example: true - creativeId: - type: string - example: example_id_123 - campaignId: - type: string - example: example_id_123 required: - success - - creativeId + - products_saved additionalProperties: false - CountryList: + 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: @@ -4905,336 +10555,689 @@ components: items: type: array items: - type: object - properties: - key: - type: string - displayName: - type: string - required: - - key - - displayName - additionalProperties: false + anyOf: + - type: object + properties: + agentId: + type: string + name: + type: string + type: + type: string + enum: + - SALES + - OUTCOME + - SIGNAL + status: + type: string + relationship: + type: string + endpointUrl: + type: string + protocol: + type: string + required: + - agentId + - name + - type + - status + - relationship + - endpointUrl + - protocol + additionalProperties: false + - type: object + properties: + agentId: + type: string + name: + type: string + type: + type: string + enum: + - SALES + - OUTCOME + - SIGNAL + status: + type: string + relationship: + type: string + endpointUrl: + type: string + protocol: + type: string + customerAccountCount: + type: integer + minimum: 0 + maximum: 9007199254740991 + required: + - agentId + - name + - type + - status + - relationship + - endpointUrl + - protocol + - customerAccountCount + additionalProperties: false example: [] required: - total - items additionalProperties: false - LanguageList: + AgentRegister: 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: [] + 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: - - total - - items + - agentId + - name + - type + - status + - endpointUrl additionalProperties: false - MediaBuyDelete: + AgentUnregister: type: object properties: success: type: boolean example: true - id: + agentId: type: string example: example_id_123 + type: + type: string + enum: + - SALES + - OUTCOME + - SIGNAL + example: SALES required: - success - - id + - agentId + - type additionalProperties: false - MediaBuyExecute: + AgentUpdate: type: object properties: - success: - type: boolean - example: true - mediaBuyId: + 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 - adcpMediaBuyId: + reportingType: + nullable: true type: string - example: example_id_123 - adcpStatus: + enum: + - WEBHOOK + - BUCKET + - POLLING + example: WEBHOOK + reportingPollingCadence: + nullable: true type: string - example: string + enum: + - DAILY + - MONTHLY + example: DAILY required: - - success - - mediaBuyId + - agentId + - name + - type - status additionalProperties: false - MediaBuyList: + ListSeatsOutput: type: object properties: - total: + userId: + description: The user ID these seats belong to 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: + customerId: + description: The customer ID these seats belong to type: integer - minimum: 0 + exclusiveMinimum: true maximum: 9007199254740991 example: 100 - hasMore: - type: boolean - example: true - items: + seats: + description: Array of seats the user has access to type: array items: type: object properties: id: + description: Unique identifier for the seat type: string - type: + name: + description: Seat display name type: string - data: - type: object - additionalProperties: {} - read: - type: boolean - acknowledged: + customerId: + description: Customer ID that owns this seat + type: number + active: + description: Whether the seat is currently active type: boolean + type: + description: Seat type + type: string + enum: + - BUYER + - ACTIVATION createdAt: + description: ISO 8601 timestamp when the seat 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 seat 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))$ + userRole: + description: The authenticated users role within this seat, if applicable + type: string + enum: + - ADMIN + - READ_WRITE + - READ + members: + description: All users associated with this seat + type: array + items: + type: object + properties: + userId: + description: Unique identifier for the user + type: number + email: + description: User email address + type: string + format: email + pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + name: + description: User full name + type: string + createdAt: + description: User created at + type: string + updatedAt: + description: User updated at + type: string + createdSeatAt: + description: Date user was added to seat + type: string + updatedSeatAt: + description: Date user seat permission was last updated + type: string + role: + description: User role within this seat + type: string + enum: + - ADMIN + - READ + - READ_WRITE + required: + - userId + - email + - name + - createdAt + - updatedAt + - createdSeatAt + - updatedSeatAt + - role + additionalProperties: false + agents: + description: All agents associated with this seat + type: array + items: + type: object + properties: + id: + description: Unique db identifier for the agent + type: integer + format: int64 + agentId: + description: Unique identifier for the agent + type: string + name: + description: Agent name + type: string + type: + description: Agent type (e.g., DECISIONING) + type: string + customerId: + description: Customer ID that owns this agent + type: number + seatId: + description: Seat ID from adcp_agent table if applicable + nullable: true + type: integer + format: int64 + createdAt: + description: created at + type: string + updatedAt: + description: updated at + type: string + activeCampaignsCount: + description: Number of active campaigns for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + activeTacticsCount: + description: Number of active tactics for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + activeMediaBuysCount: + description: Number of active media buys for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + required: + - id + - name + - type + - customerId + - createdAt + - updatedAt + - activeCampaignsCount + - activeTacticsCount + - activeMediaBuysCount + additionalProperties: false + brandAgents: + description: All brand agents associated with this seat + type: array + items: + type: object + properties: + id: + description: Unique identifier for the agent + type: integer + format: int64 + name: + description: Agent name + type: string + type: + description: Agent type (e.g., DECISIONING) + type: string + customerId: + description: Customer ID that owns this agent + type: number + seatId: + description: Seat ID from adcp_agent table if applicable + nullable: true + type: integer + format: int64 + createdAt: + description: created at + type: string + updatedAt: + description: updated at + type: string + activeCampaignsCount: + description: Number of active campaigns for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + activeTacticsCount: + description: Number of active tactics for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + activeMediaBuysCount: + description: Number of active media buys for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + required: + - id + - name + - type + - customerId + - createdAt + - updatedAt + - activeCampaignsCount + - activeTacticsCount + - activeMediaBuysCount + additionalProperties: false required: - id + - name + - customerId + - active - type - - data - - read - - acknowledged - createdAt + - updatedAt + - members + - agents + - brandAgents additionalProperties: false example: [] + count: + description: Total number of seats returned + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 required: - - total - - hasMore - - items + - customerId + - seats + - count additionalProperties: false - NotificationsMarkRead: + GetSeatOutput: type: object properties: - success: - type: boolean - example: true - notificationId: - type: string - example: example_id_123 + seat: + description: The seat details + 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 + type: string + enum: + - BUYER + - ACTIVATION + createdAt: + description: ISO 8601 timestamp when the seat 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 seat 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))$ + userRole: + description: The authenticated users role within this seat, if applicable + type: string + enum: + - ADMIN + - READ_WRITE + - READ + members: + description: All users associated with this seat + type: array + items: + type: object + properties: + userId: + description: Unique identifier for the user + type: number + email: + description: User email address + type: string + format: email + pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + name: + description: User full name + type: string + createdAt: + description: User created at + type: string + updatedAt: + description: User updated at + type: string + createdSeatAt: + description: Date user was added to seat + type: string + updatedSeatAt: + description: Date user seat permission was last updated + type: string + role: + description: User role within this seat + type: string + enum: + - ADMIN + - READ + - READ_WRITE + required: + - userId + - email + - name + - createdAt + - updatedAt + - createdSeatAt + - updatedSeatAt + - role + additionalProperties: false + agents: + description: All agents associated with this seat + type: array + items: + type: object + properties: + id: + description: Unique db identifier for the agent + type: integer + format: int64 + agentId: + description: Unique identifier for the agent + type: string + name: + description: Agent name + type: string + type: + description: Agent type (e.g., DECISIONING) + type: string + customerId: + description: Customer ID that owns this agent + type: number + seatId: + description: Seat ID from adcp_agent table if applicable + nullable: true + type: integer + format: int64 + createdAt: + description: created at + type: string + updatedAt: + description: updated at + type: string + activeCampaignsCount: + description: Number of active campaigns for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + activeTacticsCount: + description: Number of active tactics for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + activeMediaBuysCount: + description: Number of active media buys for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + required: + - id + - name + - type + - customerId + - createdAt + - updatedAt + - activeCampaignsCount + - activeTacticsCount + - activeMediaBuysCount + additionalProperties: false + brandAgents: + description: All brand agents associated with this seat + type: array + items: + type: object + properties: + id: + description: Unique identifier for the agent + type: integer + format: int64 + name: + description: Agent name + type: string + type: + description: Agent type (e.g., DECISIONING) + type: string + customerId: + description: Customer ID that owns this agent + type: number + seatId: + description: Seat ID from adcp_agent table if applicable + nullable: true + type: integer + format: int64 + createdAt: + description: created at + type: string + updatedAt: + description: updated at + type: string + activeCampaignsCount: + description: Number of active campaigns for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + activeTacticsCount: + description: Number of active tactics for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + activeMediaBuysCount: + description: Number of active media buys for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + required: + - id + - name + - type + - customerId + - createdAt + - updatedAt + - activeCampaignsCount + - activeTacticsCount + - activeMediaBuysCount + additionalProperties: false + required: + - id + - name + - customerId + - active + - type + - createdAt + - updatedAt + - members + - agents + - brandAgents + additionalProperties: false required: - - success - - notificationId + - seat additionalProperties: false - NotificationsMarkAcknowledged: + CreateSeatOutput: type: object properties: - success: - type: boolean - example: true - notificationId: + id: + description: The ID of the created seat type: string example: example_id_123 required: - - success - - notificationId + - id additionalProperties: false - NotificationsMarkAllRead: + UpdateSeatOutput: type: object properties: success: + description: Whether the update was successful 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: - type: array - items: - type: object - properties: - productId: - type: string - name: - type: string - publisherName: - type: string - salesAgentId: - type: string - salesAgentName: - type: string - deliveryType: - type: string - enum: - - guaranteed - - non_guaranteed - inventoryType: - type: string - enum: - - premium - - run_of_site - - targeted_package - creativeFormats: - anyOf: - - type: array - items: - type: string - - type: array - items: - type: object - properties: - agent_url: - type: string - id: - type: string - required: - - agent_url - - id - additionalProperties: false - fixedCpm: - type: number - floorCpm: - type: number - targetCpm: - type: number - required: - - productId - - name - - publisherName - - deliveryType - - inventoryType - additionalProperties: false - example: [] + - success + additionalProperties: false + DeleteSeatOutput: + type: object + properties: + success: + description: Whether the deletion was successful + type: boolean + example: true required: - success - - productsFound - - productsSaved - - successfulAgents - - failedAgents - - products additionalProperties: false - MediaProductSave: + AddSeatMemberOutput: 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 + success: + description: Whether the member was added successfully + type: boolean + example: true required: - - id - - productId - - name - - publisherId - - publisherName - - customerId - - createdAt - - updatedAt + - success additionalProperties: false - MediaProductList: + UpdateSeatMemberRoleOutput: + type: object + properties: + success: + description: Whether the role was updated successfully + type: boolean + example: true + required: + - success + additionalProperties: false + RemoveSeatMemberOutput: + type: object + properties: + success: + description: Whether the member was removed successfully + type: boolean + example: true + required: + - success + additionalProperties: false + TacticList: type: object properties: total: @@ -5245,176 +11248,113 @@ components: items: type: array items: - type: object - properties: - id: - type: string - productId: - type: string - name: - type: string - salesAgent: - type: string - salesAgentId: - type: string - salesAgentName: - type: string - deliveryType: - type: string - enum: - - guaranteed - - non_guaranteed - format: - type: string - creativeFormats: - anyOf: - - type: array - items: - type: string - - type: array - items: - type: object - properties: - agent_url: - type: string - id: - type: string - required: - - agent_url - - id - additionalProperties: false - required: - - id - - productId - - name - - deliveryType - additionalProperties: false + $ref: '#/components/schemas/TacticGetOutput' example: [] required: - total - items additionalProperties: false - MediaProductSync: + WebhookRegister: type: object properties: - success: - type: boolean - example: true - productsSaved: + id: + type: string + example: example_id_123 + brandAgentId: type: integer - minimum: 0 + exclusiveMinimum: true maximum: 9007199254740991 example: 100 - required: - - success - - productsSaved - additionalProperties: false - AgentGet: - anyOf: - - type: object + endpoint: + type: object properties: - agentId: - type: string - name: - type: string - type: - type: string - enum: - - SALES - - OUTCOME - status: - type: string - relationship: - type: string - endpointUrl: + url: type: string - protocol: + method: type: string authenticationType: type: string - description: - type: string - organizationId: - type: string - registeredBy: - type: string - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - - agentId - - name - - type - - status - - relationship - - endpointUrl - - protocol - - authenticationType - - createdAt - - updatedAt + - url + - method additionalProperties: false - - type: object + eventTypes: + type: array + items: + type: string + example: [] + filters: + type: object properties: - agentId: - type: string - name: - type: string - type: - type: string - enum: - - SALES - - OUTCOME - status: - type: string - relationship: - type: string - endpointUrl: - type: string - protocol: - type: string - authenticationType: - type: string - description: - type: string - organizationId: - type: string - registeredBy: - type: string - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - updatedAt: + campaigns: + type: array + items: + type: string + tactics: + type: array + items: + type: string + creatives: + type: array + items: + type: string + mediaBuys: + type: array + items: + type: string + metrics: + type: array + items: + type: string + minSeverity: type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - customerAccountCount: + additionalProperties: false + retryPolicy: + type: object + properties: + maxRetries: type: integer minimum: 0 maximum: 9007199254740991 + backoffMultiplier: + type: number + minimum: 0 + exclusiveMinimum: true + maxBackoffSeconds: + type: number + minimum: 0 + exclusiveMinimum: true + required: + - 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: - - agentId - - name - - type - - status - - relationship - - endpointUrl - - protocol - - authenticationType - - createdAt - - updatedAt - - customerAccountCount + - success additionalProperties: false - AgentList: + required: + - id + - endpoint + - eventTypes + - retryPolicy + - status + - testResult + additionalProperties: false + WebhookList: type: object properties: total: @@ -5425,171 +11365,263 @@ components: items: type: array items: - anyOf: - - type: object - properties: - agentId: - type: string - name: - type: string - type: - type: string - enum: - - SALES - - OUTCOME - status: - type: string - relationship: - type: string - endpointUrl: - type: string - protocol: - type: string - required: - - agentId - - name - - type - - status - - relationship - - endpointUrl - - protocol - additionalProperties: false - - type: object + type: object + properties: + id: + type: string + status: + type: string + endpoint: + type: object properties: - agentId: - type: string - name: - type: string - type: - type: string - enum: - - SALES - - OUTCOME - status: - type: string - relationship: + url: type: string - endpointUrl: + method: type: string - protocol: + authenticationType: type: string - customerAccountCount: - type: integer - minimum: 0 - maximum: 9007199254740991 required: - - agentId - - name - - type - - status - - relationship - - endpointUrl - - protocol - - customerAccountCount + - url + - method additionalProperties: false + eventTypes: + type: array + items: + type: string + brandAgentId: + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + failureCount: + type: integer + minimum: 0 + maximum: 9007199254740991 + lastSuccess: + nullable: true + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + lastFailure: + nullable: true + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + createdAt: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + required: + - id + - status + - endpoint + - eventTypes + - failureCount + - createdAt + additionalProperties: false example: [] required: - total - items additionalProperties: false - AgentRegister: + WebhookDelete: type: object properties: - agentId: + 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 - type: - type: string - enum: - - SALES - - OUTCOME - example: SALES - status: + description: + description: Description of the token purpose 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: + accessClientId: + description: The public client ID portion of the token credentials (safe to log) type: string example: example_id_123 - type: + accessClientSecret: + description: The secret portion of the token credentials. ONLY returned on creation, never retrievable again! type: string - enum: - - SALES - - OUTCOME - example: SALES + 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: - - success - - agentId - - type + - id + - customerId + - name + - accessClientId + - accessClientSecret + - createdAt additionalProperties: false - AgentUpdate: + UpdateServiceTokenOutput: type: object properties: - agentId: - type: string - example: example_id_123 + 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 - type: + description: + description: Updated description of the token purpose type: string - enum: - - SALES - - OUTCOME - example: SALES - status: + 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: - - agentId + - id - name - - type - - status + - 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 - TacticCreate: + 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 - campaignId: + accessClientId: + description: The public client ID portion of the token credentials (safe to log) type: string example: example_id_123 - channelCodes: - type: array - items: - type: string - example: [] - countryCodes: - type: array - items: - type: string - example: [] + 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: >- @@ -5597,634 +11629,1787 @@ components: example: string required: - id + - customerId - name - - campaignId - - channelCodes - - countryCodes + - accessClientId - createdAt + - updatedAt additionalProperties: false - TacticDelete: - type: object - properties: - success: - type: boolean - example: true - tacticId: - type: number - example: 100 - required: - - success - - tacticId - additionalProperties: false - TacticList: + 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: - $ref: '#/components/schemas/TacticGetOutput' + 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: [] - required: - - total - - items - additionalProperties: false - TacticLinkCampaign: - type: object - properties: - success: - type: boolean - example: true - tacticId: - type: number + count: + description: Total number of tokens returned + type: integer + minimum: 0 + maximum: 9007199254740991 example: 100 - campaignId: - type: string - example: example_id_123 - required: - - success - - tacticId - - campaignId - additionalProperties: false - TacticUnlinkCampaign: - type: object - properties: - success: + isAdmin: + description: Whether the requesting user has admin privileges (can see all tokens) type: boolean example: true - tacticId: - type: number - example: 100 - campaignId: - type: string - example: example_id_123 required: - - success - - tacticId - - campaignId + - tokens + - count + - isAdmin additionalProperties: false - WebhookRegister: + SignalCreate: 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 + 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 - authenticationType: + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|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: - - url - - method + - id + - signalId + - adcpAgentId + - name + - description + - keyType + - regions + - metadata + - archivedAt + - createdBy + - updatedBy + - createdAt + - updatedAt additionalProperties: false - eventTypes: + access: type: array items: - type: string - example: [] - filters: - type: object - properties: - campaigns: - type: array - items: + type: object + properties: + id: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + signalId: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + account: type: string - tactics: - type: array - items: + scope: type: string - creatives: - type: array - items: + 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 - mediaBuys: - type: array - items: + enum: + - agent + agentUrl: type: string - metrics: - type: array - items: + isLive: + type: boolean + deployedAt: + nullable: true type: string - minSeverity: - type: string - additionalProperties: false - retryPolicy: + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|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: - maxRetries: + id: type: integer - minimum: 0 + minimum: -9007199254740991 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: + signalId: + type: string + adcpAgentId: type: integer minimum: -9007199254740991 maximum: 9007199254740991 - error: + name: 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: + description: + nullable: true + type: string + keyType: + nullable: true + type: array + items: type: string - status: + 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 - 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: + 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 - exclusiveMinimum: true + minimum: -9007199254740991 maximum: 9007199254740991 - failureCount: + signalId: type: integer - minimum: 0 + minimum: -9007199254740991 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 + account: type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|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: + scope: type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|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 + 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: - - id - - customerId - - name - - accessClientId - - createdAt - - updatedAt + - signal + - access additionalProperties: false - ListServiceTokensOutput: + SignalUpdate: type: object properties: - tokens: - description: 'Array of service tokens. Note: accessClientSecret is never included in list responses' + 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: - 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 + minimum: -9007199254740991 + maximum: 9007199254740991 + signalId: type: integer - format: int64 - seatName: - description: Seat name if token is scoped to a specific seat + minimum: -9007199254740991 + maximum: 9007199254740991 + account: 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 + scope: type: string - name: - description: Human-readable name of the token + 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 - description: - description: Description of the token purpose + enum: + - agent + agentUrl: type: string - accessClientId: - description: The public client ID portion of the token credentials (safe to log) + isLive: + type: boolean + deployedAt: + nullable: true type: string - expiresAt: - description: ISO 8601 timestamp when the token expires, if set + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|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: - 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 + - signalId + - account + - scope + - pricingOptions + - type + - agentUrl + - isLive + - deployedAt + - estimatedActivationDurationMinutes + - decisioningPlatformSegmentId + - archivedAt - createdAt - updatedAt additionalProperties: false example: [] - count: - description: Total number of tokens returned - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 required: - - tokens - - count + - signal + - access additionalProperties: false - MediaBuyGetOutput: + SignalDelete: 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: + success: + type: boolean + example: true + 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 - products: + required: + - success + - archivedAt + additionalProperties: false + SignalList: + type: object + properties: + signals: type: array items: type: object properties: - mediaProductId: - type: string - salesAgentId: - type: string - salesAgentName: + id: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + signalId: type: string - budgetAmount: - type: number - budgetCurrency: + adcpAgentId: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + name: 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: + description: + nullable: true type: string - productIds: + keyType: + nullable: true type: array items: type: string - impressions: - type: number - budget: - type: number - targetingOverlay: {} - creatives: + 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: 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 + 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 @@ -6235,314 +13420,1029 @@ 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))$ - salesAgentId: - type: string - salesAgentName: - type: string - pricingCpm: - type: number - pricingSignalCost: - type: number - bidPrice: - type: number - pricingOptionId: - type: string - creativeFormats: + access: type: array items: type: object properties: - agent_url: - type: string 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: - - agent_url - id + - signalId + - account + - scope + - pricingOptions + - type + - agentUrl + - isLive + - deployedAt + - estimatedActivationDurationMinutes + - decisioningPlatformSegmentId + - archivedAt + - createdAt + - updatedAt additionalProperties: false required: - - packageId - - productIds - - impressions - - budget - - targetingOverlay - - creatives + - id + - signalId + - adcpAgentId + - name + - description + - keyType + - regions + - metadata + - archivedAt + - createdBy + - updatedBy - createdAt - updatedAt + - access additionalProperties: false example: [] - creatives: + 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: + - signals + - total + - limit + - offset + additionalProperties: false + SignalDiscover: + type: object + properties: + agentResults: type: array items: type: object properties: - creativeId: + agentId: type: string - name: + agentName: + type: string + success: + type: boolean + signalCount: + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + error: type: string - formatId: + required: + - agentId + - agentName + - success + - signalCount + additionalProperties: false + example: [] + signals: + type: array + items: + type: object + properties: + signalId: type: string - mediaUrl: + name: type: string - status: + 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: - - 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 + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 required: - - id - - tacticId - - customerId - - name - - pricing - - status - - createdAt - - updatedAt + - 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: - type: string - budgetAmount: - type: number - budgetCurrency: + sales_agent_id: 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 +14451,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 +14579,920 @@ 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: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - 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: + 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 +15501,914 @@ 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: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - 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: + 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 +16417,7 @@ components: type: number clicks: type: number - lastUpdated: + last_updated: type: string format: date-time pattern: >- @@ -6871,35 +16427,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 +16490,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..5b4d47d 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,16534 @@ 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' + /seat-details-list: + post: + operationId: seat_details_list + summary: List seats + description: List all seats the authenticated user has access to, including seat members, agents, and brand agents. + tags: + - Seats + 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 seat_details_list + required: true + content: + application/json: + example: + tool: seat_details_list + arguments: {} + schema: + type: object + properties: + tool: + type: string + enum: + - seat_details_list + arguments: + $ref: '#/components/schemas/ListSeatsInput' + 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/ListSeatsOutput' + 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' + /seat-details-get: + post: + operationId: seat_details_get + summary: Get seat details + description: Get detailed information about a specific seat including members, agents, and brand agents. + tags: + - Seats + 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 seat_details_get + required: true + content: + application/json: + example: + tool: seat_details_get + arguments: + seatId: example_id_123 + schema: + type: object + properties: + tool: + type: string + enum: + - seat_details_get + arguments: + $ref: '#/components/schemas/GetSeatInput' + 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/GetSeatOutput' + 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' + /seat-create: + post: + operationId: seat_create + summary: Create seat + description: Create a new seat under the authenticated user's customer. Requires ADMIN or SUPER_ADMIN role. + tags: + - Seats + 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 seat_create + required: true + content: + application/json: + example: + tool: seat_create + arguments: + name: Example Name + type: BUYER + schema: + type: object + properties: + tool: + type: string + enum: + - seat_create + arguments: + $ref: '#/components/schemas/CreateSeatInput' + 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/CreateSeatOutput' + 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' + /seat-update: + post: + operationId: seat_update + summary: Update seat + description: Update an existing seat. Requires ADMIN role on the seat or SUPER_ADMIN. + tags: + - Seats + 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 seat_update + required: true + content: + application/json: + example: + tool: seat_update + arguments: + seatId: example_id_123 + name: Example Name + schema: + type: object + properties: + tool: + type: string + enum: + - seat_update + arguments: + $ref: '#/components/schemas/UpdateSeatInput' + 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/UpdateSeatOutput' + 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' + /seat-delete: + post: + operationId: seat_delete + summary: Delete seat + description: Delete a seat. Requires ADMIN role on the seat or SUPER_ADMIN. This operation cannot be undone. + tags: + - Seats + 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 seat_delete + required: true + content: + application/json: + example: + tool: seat_delete + arguments: + seatId: example_id_123 + schema: + type: object + properties: + tool: + type: string + enum: + - seat_delete + arguments: + $ref: '#/components/schemas/DeleteSeatInput' + 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/DeleteSeatOutput' + 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' + /seat-member-add: + post: + operationId: seat_member_add + summary: Add seat member + description: >- + Add a user as a member to a seat with a specified role (ADMIN, READ_WRITE, or READ). Requires ADMIN role on the + seat or SUPER_ADMIN. + tags: + - Seats + 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 seat_member_add + required: true + content: + application/json: + example: + tool: seat_member_add + arguments: + seatId: example_id_123 + userId: example_id_123 + role: ADMIN + schema: + type: object + properties: + tool: + type: string + enum: + - seat_member_add + arguments: + $ref: '#/components/schemas/AddSeatMemberInput' + 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/AddSeatMemberOutput' + 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' + /seat-member-update-role: + post: + operationId: seat_member_update_role + summary: Update seat member role + description: Update the role of a seat member. Requires ADMIN role on the seat or SUPER_ADMIN. + tags: + - Seats + 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 seat_member_update_role + required: true + content: + application/json: + example: + tool: seat_member_update_role + arguments: + seatId: example_id_123 + userId: example_id_123 + role: ADMIN + schema: + type: object + properties: + tool: + type: string + enum: + - seat_member_update_role + arguments: + $ref: '#/components/schemas/UpdateSeatMemberRoleInput' + 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/UpdateSeatMemberRoleOutput' + 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' + /seat-member-remove: + post: + operationId: seat_member_remove + summary: Remove seat member + description: Remove a user from a seat. Requires ADMIN role on the seat or SUPER_ADMIN. + tags: + - Seats + 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 seat_member_remove + required: true + content: + application/json: + example: + tool: seat_member_remove + arguments: + seatId: example_id_123 + userId: example_id_123 + schema: + type: object + properties: + tool: + type: string + enum: + - seat_member_remove + arguments: + $ref: '#/components/schemas/RemoveSeatMemberInput' + 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/RemoveSeatMemberOutput' + 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: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - width + - height + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - 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: + 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: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - width + - height + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - 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: + 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: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - width + - height + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - 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: + 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: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - width + - height + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - 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: + 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 + ListSeatsInput: + type: object + properties: + userId: + description: The unique identifier of the user to get seats for. If not provided, uses the authenticated user ID. + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + customerId: + description: >- + The unique identifier of the customer to filter seats by. If not provided, uses the authenticated users + customer ID. + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 + example: 100 + GetSeatInput: + type: object + properties: + seatId: + description: The unique identifier of the seat to retrieve + type: string + example: example_id_123 + required: + - seatId + CreateSeatInput: + type: object + properties: + name: + description: Name for the new seat + type: string + minLength: 1 + example: Example Name + type: + description: Type of seat to create + type: string + enum: + - BUYER + - ACTIVATION + example: BUYER + required: + - name + - type + UpdateSeatInput: + type: object + properties: + seatId: + description: The ID of the seat to update + type: string + minLength: 1 + pattern: ^\d+$ + example: example_id_123 + name: + description: New name for the seat + type: string + minLength: 1 + example: Example Name + required: + - seatId + - name + DeleteSeatInput: + type: object + properties: + seatId: + description: The ID of the seat to delete + type: string + minLength: 1 + pattern: ^\d+$ + example: example_id_123 + required: + - seatId + AddSeatMemberInput: + type: object + properties: + seatId: + description: The ID of the seat to add the member to + type: string + minLength: 1 + pattern: ^\d+$ + example: example_id_123 + userId: + description: The ID of the user to add to the seat + type: string + minLength: 1 + pattern: ^\d+$ + example: example_id_123 + role: + description: The role to assign to the user + type: string + enum: + - ADMIN + - READ_WRITE + - READ + example: ADMIN + required: + - seatId + - userId + - role + UpdateSeatMemberRoleInput: + type: object + properties: + seatId: + description: The ID of the seat + type: string + minLength: 1 + pattern: ^\d+$ + example: example_id_123 + userId: + description: The ID of the user whose role to update + type: string + minLength: 1 + pattern: ^\d+$ + example: example_id_123 + role: + description: The new role for the user + type: string + enum: + - ADMIN + - READ_WRITE + - READ + example: ADMIN + required: + - seatId + - userId + - role + RemoveSeatMemberInput: + type: object + properties: + seatId: + description: The ID of the seat + type: string + minLength: 1 + pattern: ^\d+$ + example: example_id_123 + userId: + description: The ID of the user to remove from the seat + type: string + minLength: 1 + pattern: ^\d+$ + example: example_id_123 + required: + - seatId + - userId + 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: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - width + - height + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - 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: + 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: string - minLength: 2 - maxLength: 2 + 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: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - width + - height + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - 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: + 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: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - width + - height + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - 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: + 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 - UpdateBrandAgentInput: - description: Parameters for updating a brand agent + - status + - created_at + - updated_at + TacticGet: type: object properties: - brandAgentId: - description: The unique identifier for the brand agent - example: 123 - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 + id: + type: number + example: 100 name: - description: Updated name of the brand agent type: string - minLength: 1 - maxLength: 255 example: Example Name - description: - description: Updated description + prompt: type: string - maxLength: 1000 example: string - manifestUrl: - description: Updated URL to the brand manifest - example: https://example.com/brand-manifest - type: string - format: uri + campaignIds: + type: array + items: + type: string + example: [] + channelCodes: + type: array + items: + type: string + example: [] countryCodes: - description: Updated country codes type: array items: type: string - minLength: 2 - maxLength: 2 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: - - brandAgentId - DeleteBrandAgentInput: - description: Parameters for deleting a brand agent + - 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: - brandAgentId: - description: The unique identifier for the brand agent to delete - example: 123 + total: type: integer - exclusiveMinimum: true + minimum: 0 maximum: 9007199254740991 + example: 100 + items: + type: array + items: + $ref: '#/components/schemas/BrandStandardsCreateOutput' + example: [] required: - - brandAgentId - CreateBrandStandardInput: + - total + - items + additionalProperties: false + BrandStoryCreate: type: object properties: - brandAgentId: - description: Brand agent ID - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 - example: 100 + id: + type: string + example: example_id_123 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 + brandAgentId: type: string - minLength: 1 - example: string - isPrimary: - description: Whether this is the primary standard - type: boolean - example: true - countries: - description: Country codes + example: example_id_123 + countryCodes: type: array items: type: string example: [] - channels: - description: Channel types + channelCodes: + type: array + items: + type: string + example: [] + languages: type: array items: type: string - enum: - - ctv - - video - - display - - app - - social example: [] brands: - description: Brand names 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: - - brandAgentId - - prompt - DeleteBrandStandardInput: + - id + - name + - createdAt + - updatedAt + additionalProperties: false + BrandStoryUpdate: type: object properties: - brandStandardId: - description: Brand standard ID + 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: - - brandStandardId - ListBrandStandardsInput: + - success + - id + additionalProperties: false + BrandStoryList: 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 + total: type: integer minimum: 0 maximum: 9007199254740991 example: 100 - distinct: - description: Fields to use for distinct selection + items: type: array items: - type: string + 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: [] - CreateBrandStoryInput: + required: + - total + - items + additionalProperties: false + CampaignList: 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) + campaigns: type: array items: - type: string + $ref: '#/components/schemas/CampaignUpdateOutput' example: [] + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 required: - - brandAgentId - - name - - languages - UpdateBrandStoryInput: + - campaigns + - total + additionalProperties: false + CampaignDelete: type: object properties: - brandStoryId: - description: Brand story ID + success: + type: boolean + example: true + deletedId: 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: + - success + - deletedId + additionalProperties: false + CampaignGetSummary: type: object properties: - brandStoryId: - description: Brand story ID + campaignId: type: string example: example_id_123 + summary: + type: object + additionalProperties: {} required: - - brandStoryId - ListBrandStoriesInput: + - campaignId + - summary + additionalProperties: false + CampaignListTactics: 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 + tactics: type: array - items: - type: string + items: {} 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 + total: 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 + example: 100 required: - - brandAgentId - - prompt - GetCampaignInput: - description: Parameters for retrieving a specific campaign + - tactics + - total + additionalProperties: false + CampaignValidateBrief: type: object properties: - campaignId: - description: The unique identifier for the campaign - example: cmp_987654321 + valid: + type: boolean + example: true + feedback: type: string - minLength: 1 + 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: - - campaignId - UpdateCampaignInput: - description: Parameters for updating a campaign + - total + - items + additionalProperties: false + GetCustomerOutput: type: object properties: - campaignId: - description: The unique identifier for the campaign - example: cmp_987654321 + id: + description: Unique identifier for the customer + type: number + example: 100 + company: + description: Company name type: string - minLength: 1 + example: string name: - description: Updated campaign name + description: Customer display 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 + 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 - 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 + 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 - status: - description: Updated campaign status - type: string - enum: - - ACTIVE - - PAUSED - - ARCHIVED - - DRAFT - example: ACTIVE + seats: + description: Array of seats belonging to the customer + 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 + 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: - - campaignId - DeleteCampaignInput: - description: Parameters for deleting a campaign + - customerId + - seats + - count + additionalProperties: false + AssignCreativeOutput: 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)' + success: type: boolean example: true + creative_id: + type: string + example: example_id_123 + campaign_id: + type: string + example: example_id_123 required: - - campaignId - GetCampaignSummaryInput: + - success + - creative_id + - campaign_id + additionalProperties: false + DeleteCreativeOutput: type: object properties: - campaignId: - description: Campaign ID + success: + type: boolean + example: true + id: type: string example: example_id_123 required: - - campaignId - ListCampaignTacticsInput: + - success + - id + additionalProperties: false + ListCreativesOutput: type: object properties: - campaignId: - description: Campaign ID - type: string - example: example_id_123 + items: + type: array + items: + $ref: '#/components/schemas/CreativeGetOutput' + example: [] + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 required: - - campaignId - ValidateBriefInput: + - items + - total + additionalProperties: false + SyncSalesAgentsOutput: type: object properties: - brief: - description: Campaign brief text + success: + type: boolean + example: true + creative_id: type: string - minLength: 10 - example: 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: - - brief - ListChannelsInput: - type: object - properties: {} - GetCustomerInput: + - success + - creative_id + additionalProperties: false + CountryList: type: object properties: - customerId: - description: >- - The unique identifier of the customer to retrieve. If not provided, uses the authenticated users customer - ID. + total: type: integer - exclusiveMinimum: true + minimum: 0 maximum: 9007199254740991 example: 100 - GetCustomerSeatsInput: + 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: - customerId: - description: >- - The unique identifier of the customer whose seats to retrieve. If not provided, uses the authenticated users - customer ID. + total: type: integer - exclusiveMinimum: true + minimum: 0 maximum: 9007199254740991 example: 100 - AssignCreativeInput: + items: + type: array + items: + type: object + properties: + key: + type: string + displayName: + type: string + required: + - key + - displayName + additionalProperties: false + example: [] + required: + - total + - items + additionalProperties: false + UpdateMediaBuyOutput: type: object properties: - creativeId: + media_buy_id: + description: ADCP media buy identifier type: string example: example_id_123 - campaignId: - type: string - example: example_id_123 - required: - - creativeId - - campaignId - CreateCreativeInput: - type: object - properties: - brandAgentId: + 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 - organizationId: - type: string - example: example_id_123 name: + description: Media buy name type: string - minLength: 1 - maxLength: 255 example: Example Name description: + description: Media buy 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: + status: + description: Internal status (DRAFT, ACTIVE, PAUSED, etc.) type: string - example: https://example.com - assets: - description: >- - Optional: Upload assets inline with the creative. Each asset requires: name, contentType, data (base64), and - assetType. + 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: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - 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: + 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: - name: - description: Filename (e.g., banner.png) + creative_id: type: string - contentType: - description: MIME type (e.g., image/png, image/jpeg) - type: string - data: - description: Base64-encoded file data (without data:image/png;base64, prefix) - format: byte - type: string - assetType: - description: Type of asset + name: type: string - enum: - - image - - video - - audio - - logo - - font + 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: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - 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: + 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: - description: Optional 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 - - contentType - - data - - assetType + - format_id + - assets + - status + additionalProperties: false example: [] - content: + adcp: + description: ADCP-specific metadata (from execute response) 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: + properties: + media_buy_id: + type: string + status: + type: string + webhook_url: + type: string + additionalProperties: false + performance: + description: Performance metrics (from reporting) + type: object + properties: + impressions: + type: number + spend: + type: number + clicks: + type: number + last_updated: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + required: + - impressions + - spend + - clicks + additionalProperties: false + created_at: + description: Created timestamp type: string - example: example_id_123 - name: + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string + updated_at: + description: Updated timestamp type: string - example: Example Name - status: + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?: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 + 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: {} + additionalProperties: false required: - - creativeId - DeleteCreativeInput: + - media_buy_id + - tactic_id + - customer_id + - name + - status + - created_at + - updated_at + additionalProperties: false + DeleteMediaBuyOutput: type: object properties: - creativeId: + success: + type: boolean + example: true + media_buy_id: type: string example: example_id_123 required: - - creativeId - GetCreativeInput: + - success + - media_buy_id + additionalProperties: false + ExecuteMediaBuyOutput: type: object properties: - creativeId: + success: + type: boolean + example: true + media_buy_id: 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: + example: string + adcp_media_buy_id: type: string example: example_id_123 + adcp_status: + type: string + example: string + 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: {} + additionalProperties: false required: - - mediaBuyId - ListMediaBuysInput: + - success + - media_buy_id + - status + additionalProperties: false + ListMediaBuysOutput: 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: + total: 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 + items: type: array items: - type: string - enum: - - ctv - - video - - display - - app - - social - countries: - description: ISO 3166-1 alpha-2 country codes - example: - - US - - CA + $ref: '#/components/schemas/MediaBuyGetOutput' + 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 type: array items: - type: string - brief: - description: Campaign brief text - type: string - example: string + 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: - - campaignId - OutcomesAgentAcceptProposalInput: + - total + - proposals + additionalProperties: false + OutcomesAgentAcceptProposal: type: object properties: - proposalId: - description: Database ID of the proposal to accept - example: '123' + tacticId: + description: ID of the created tactic/strategy type: string + example: example_id_123 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 + description: Name of the created tactic (user-provided or auto-generated) type: string - customFields: - description: Optional custom fields required by the outcome agent - type: object - additionalProperties: {} + 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 + 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 + type: string + example: string required: + - tacticId + - tacticName - proposalId - OutcomesAgentListTacticsInput: + - outcomeAgentId + - acknowledged + additionalProperties: false + OutcomesAgentListTactics: type: object properties: outcomeAgentId: - description: ID of the outcome agent to list tactics for - example: '123' + description: ID of the outcome agent type: string + example: example_id_123 + outcomeAgentName: + description: Name of the outcome agent + 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 + 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: - outcomeAgentId - ListProductsInput: + - outcomeAgentName + - total + - tactics + additionalProperties: false + MediaProductDiscover: type: object properties: - take: + success: + type: boolean + example: true + products_found: type: integer - exclusiveMinimum: true + minimum: 0 maximum: 9007199254740991 example: 100 - skip: + products_saved: 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 + 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: - - tacticId - ListTacticsInput: + - success + - products_found + - products_saved + - successful_agents + - failed_agents + - products + additionalProperties: false + MediaProductList: 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 + 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: - - 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: + - 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: - 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: + items: type: array items: - type: string + 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: [] - models: + required: + - total + - items + additionalProperties: false + AgentAccountList: + type: object + properties: + total: + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + 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,435 +20264,635 @@ 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: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?: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: + - total + - items + additionalProperties: false + AgentAccountRegister: type: object properties: - campaignId: + accountId: type: string example: example_id_123 - name: + adcpAgentId: type: string - example: Example Name + example: example_id_123 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 + - accountId + - adcpAgentId - status - - createdAt - - updatedAt - CreativeGet: + additionalProperties: false + AgentAccountUnregister: type: object properties: - creativeId: + success: + type: boolean + example: true + agentId: type: string example: example_id_123 - name: - type: string - example: Example Name - status: - type: string - example: string - campaignId: + required: + - success + - agentId + additionalProperties: false + AgentAccountUpdate: + type: object + properties: + id: 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: + 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: - - creativeId - - name + - id - status - - createdAt - - updatedAt - MediaBuyGet: + additionalProperties: false + ListSeatsOutput: type: object properties: - id: - type: string - example: example_id_123 - tacticId: - type: number + userId: + description: The user ID these seats belong to + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 example: 100 customerId: - type: number + description: The customer ID these seats belong to + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 example: 100 - name: - type: string - example: Example Name - description: - type: string - example: string - products: + seats: + description: Array of seats the user has access to type: array items: type: object properties: - mediaProductId: - type: string - salesAgentId: + id: + description: Unique identifier for the seat type: string - salesAgentName: + name: + description: Seat display name type: string - budgetAmount: + customerId: + description: Customer ID that owns this seat type: number - budgetCurrency: + active: + description: Whether the seat is currently active + type: boolean + type: + description: Seat type type: string - pricingCpm: - type: number - pricingSignalCost: - type: number - displayOrder: - type: number - creativeFormats: + enum: + - BUYER + - ACTIVATION + createdAt: + description: ISO 8601 timestamp when the seat 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 seat 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))$ + userRole: + description: The authenticated users role within this seat, if applicable + type: string + enum: + - ADMIN + - READ_WRITE + - READ + members: + description: All users associated with this seat type: array items: type: object properties: - agent_url: + userId: + description: Unique identifier for the user + type: number + email: + description: User email address type: string - id: + format: email + pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + name: + description: User full name + type: string + createdAt: + description: User created at + type: string + updatedAt: + description: User updated at type: string + createdSeatAt: + description: Date user was added to seat + type: string + updatedSeatAt: + description: Date user seat permission was last updated + type: string + role: + description: User role within this seat + type: string + enum: + - ADMIN + - READ + - READ_WRITE 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: + - userId + - email + - name + - createdAt + - updatedAt + - createdSeatAt + - updatedSeatAt + - role + additionalProperties: false + agents: + description: All agents associated with this seat type: array items: type: object properties: - creativeId: + id: + description: Unique db identifier for the agent + type: integer + format: int64 + agentId: + description: Unique identifier for the agent type: string name: + description: Agent name type: string - formatId: + type: + description: Agent type (e.g., DECISIONING) type: string - mediaUrl: + customerId: + description: Customer ID that owns this agent + type: number + seatId: + description: Seat ID from adcp_agent table if applicable + nullable: true + type: integer + format: int64 + createdAt: + description: created at type: string - status: + updatedAt: + description: updated at type: string + activeCampaignsCount: + description: Number of active campaigns for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + activeTacticsCount: + description: Number of active tactics for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + activeMediaBuysCount: + description: Number of active media buys for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 required: - - creativeId + - id - 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 + - customerId + - createdAt + - updatedAt + - activeCampaignsCount + - activeTacticsCount + - activeMediaBuysCount + additionalProperties: false + brandAgents: + description: All brand agents associated with this seat type: array items: type: object properties: - agent_url: - type: string id: + description: Unique identifier for the agent + type: integer + format: int64 + name: + description: Agent name + type: string + type: + description: Agent type (e.g., DECISIONING) type: string + customerId: + description: Customer ID that owns this agent + type: number + seatId: + description: Seat ID from adcp_agent table if applicable + nullable: true + type: integer + format: int64 + createdAt: + description: created at + type: string + updatedAt: + description: updated at + type: string + activeCampaignsCount: + description: Number of active campaigns for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + activeTacticsCount: + description: Number of active tactics for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + activeMediaBuysCount: + description: Number of active media buys for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 required: - - agent_url - id + - name + - type + - customerId + - createdAt + - updatedAt + - activeCampaignsCount + - activeTacticsCount + - activeMediaBuysCount + additionalProperties: false required: - - packageId - - productIds - - impressions - - budget - - targetingOverlay - - creatives + - id + - name + - customerId + - active + - type - createdAt - updatedAt + - members + - agents + - brandAgents + 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 - example: [] - pricing: - type: object - properties: - cpm: - type: number - signalCost: - type: number - totalCpm: - type: number - required: - - cpm - - totalCpm - status: - type: string - example: string - adcp: + count: + description: Total number of seats returned + type: integer + minimum: 0 + maximum: 9007199254740991 + example: 100 + required: + - customerId + - seats + - count + additionalProperties: false + GetSeatOutput: + type: object + properties: + seat: + description: The seat details type: object properties: - mediaBuyId: - type: string - status: + id: + description: Unique identifier for the seat type: string - webhookUrl: + name: + description: Seat display name type: string - performance: - type: object - properties: - impressions: - type: number - spend: - type: number - clicks: + customerId: + description: Customer ID that owns this seat type: number - lastUpdated: + active: + description: Whether the seat is currently active + type: boolean + type: + description: Seat type + type: string + enum: + - BUYER + - ACTIVATION + createdAt: + description: ISO 8601 timestamp when the seat 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 seat 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))$ + userRole: + description: The authenticated users role within this seat, if applicable + type: string + enum: + - ADMIN + - READ_WRITE + - READ + members: + description: All users associated with this seat + type: array + items: + type: object + properties: + userId: + description: Unique identifier for the user + type: number + email: + description: User email address + type: string + format: email + pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ + name: + description: User full name + type: string + createdAt: + description: User created at + type: string + updatedAt: + description: User updated at + type: string + createdSeatAt: + description: Date user was added to seat + type: string + updatedSeatAt: + description: Date user seat permission was last updated + type: string + role: + description: User role within this seat + type: string + enum: + - ADMIN + - READ + - READ_WRITE + required: + - userId + - email + - name + - createdAt + - updatedAt + - createdSeatAt + - updatedSeatAt + - role + additionalProperties: false + agents: + description: All agents associated with this seat + type: array + items: + type: object + properties: + id: + description: Unique db identifier for the agent + type: integer + format: int64 + agentId: + description: Unique identifier for the agent + type: string + name: + description: Agent name + type: string + type: + description: Agent type (e.g., DECISIONING) + type: string + customerId: + description: Customer ID that owns this agent + type: number + seatId: + description: Seat ID from adcp_agent table if applicable + nullable: true + type: integer + format: int64 + createdAt: + description: created at + type: string + updatedAt: + description: updated at + type: string + activeCampaignsCount: + description: Number of active campaigns for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + activeTacticsCount: + description: Number of active tactics for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + activeMediaBuysCount: + description: Number of active media buys for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + required: + - id + - name + - type + - customerId + - createdAt + - updatedAt + - activeCampaignsCount + - activeTacticsCount + - activeMediaBuysCount + additionalProperties: false + brandAgents: + description: All brand agents associated with this seat + type: array + items: + type: object + properties: + id: + description: Unique identifier for the agent + type: integer + format: int64 + name: + description: Agent name + type: string + type: + description: Agent type (e.g., DECISIONING) + type: string + customerId: + description: Customer ID that owns this agent + type: number + seatId: + description: Seat ID from adcp_agent table if applicable + nullable: true + type: integer + format: int64 + createdAt: + description: created at + type: string + updatedAt: + description: updated at + type: string + activeCampaignsCount: + description: Number of active campaigns for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + activeTacticsCount: + description: Number of active tactics for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + activeMediaBuysCount: + description: Number of active media buys for this agent + type: integer + minimum: 0 + maximum: 9007199254740991 + required: + - id + - name + - type + - customerId + - createdAt + - updatedAt + - activeCampaignsCount + - activeTacticsCount + - activeMediaBuysCount + additionalProperties: false 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 + - id + - name + - customerId + - active + - type + - createdAt + - updatedAt + - members + - agents + - brandAgents + additionalProperties: false required: - - id - - tacticId - - customerId - - name - - pricing - - status - - createdAt - - updatedAt - TacticGet: + - seat + additionalProperties: false + CreateSeatOutput: 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 - 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: + description: The ID of the created seat type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?: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_id_123 required: - id - - name - - channelCodes - - countryCodes - - createdAt - - updatedAt - MCPContent: + additionalProperties: false + UpdateSeatOutput: type: object properties: - type: - type: string - enum: - - text - example: text - text: - type: string - example: string + success: + description: Whether the update was successful + type: boolean + example: true required: - - type - - text + - success additionalProperties: false - BadRequest: - description: Bad request error response + DeleteSeatOutput: type: object properties: - error: - type: string - example: string - message: - type: string - example: string + success: + description: Whether the deletion was successful + type: boolean + example: true + required: + - success + additionalProperties: false + AddSeatMemberOutput: + type: object + properties: + success: + description: Whether the member was added successfully + type: boolean + example: true + required: + - success + additionalProperties: false + UpdateSeatMemberRoleOutput: + type: object + properties: + success: + description: Whether the role was updated successfully + type: boolean + example: true + required: + - success + additionalProperties: false + RemoveSeatMemberOutput: + type: object + properties: + success: + description: Whether the member was removed successfully + type: boolean + example: true required: - - error + - success additionalProperties: false - Unauthorized: - description: Unauthorized error response + TacticCreate: type: object properties: - error: + id: + type: number + example: 100 + name: + type: string + example: Example Name + prompt: type: string example: string - message: + 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: - - error + - id + - name + - campaignId + - channelCodes + - countryCodes + - createdAt additionalProperties: false - InternalError: - description: Internal server error response + TacticDelete: type: object properties: - error: - type: string - example: string - message: - type: string - example: string + success: + type: boolean + example: true + tacticId: + type: number + example: 100 required: - - error + - success + - tacticId additionalProperties: false - AssetList: + TacticList: type: object properties: total: @@ -5417,173 +20903,135 @@ components: 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 + $ref: '#/components/schemas/TacticGetOutput' 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: + TacticLinkCampaign: type: object properties: success: type: boolean example: true - deletedId: - type: integer - exclusiveMinimum: true - maximum: 9007199254740991 + tacticId: + type: number example: 100 + campaignId: + type: string + example: example_id_123 required: - success - - deletedId + - tacticId + - campaignId additionalProperties: false - BrandStandardsDelete: + TacticUnlinkCampaign: type: object properties: success: type: boolean example: true - id: + tacticId: + type: number + example: 100 + campaignId: type: string example: example_id_123 required: - success - - id + - tacticId + - campaignId additionalProperties: false - BrandStandardsList: + CreateServiceTokenOutput: type: object properties: - total: + id: + description: Unique identifier for the service token type: integer - minimum: 0 - maximum: 9007199254740991 + format: int64 example: 100 - items: - type: array - items: - $ref: '#/components/schemas/BrandStandardsCreateOutput' - example: [] - required: - - total - - items - additionalProperties: false - BrandStoryCreate: - type: object - properties: - id: + 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 - brandAgentId: + 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 - 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 + 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: >- @@ -5592,31 +21040,92 @@ components: required: - id - name - - createdAt - updatedAt additionalProperties: false - BrandStoryUpdate: + 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 - prompt: + description: + description: Description of the token purpose type: string example: string - status: + 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: >- @@ -5624,80 +21133,721 @@ components: example: string required: - id + - customerId - name + - accessClientId - createdAt - updatedAt additionalProperties: false - BrandStoryDelete: + ListServiceTokensOutput: type: object properties: - success: + 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 - id: - type: string - example: example_id_123 required: - - success - - id + - tokens + - count + - isAdmin + 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: + - 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,27 +21858,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: [] + 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: + - signals - total - - items + - limit + - offset additionalProperties: false - CampaignList: + SignalDiscover: type: object properties: - campaigns: + agentResults: type: array items: - $ref: '#/components/schemas/CampaignUpdateOutput' + 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 @@ -5736,1082 +22766,3461 @@ components: maximum: 9007199254740991 example: 100 required: - - campaigns + - agentResults + - signals - total additionalProperties: false - CampaignDelete: + BitmapTargetingProfileResponseOutput: type: object properties: - success: - type: boolean - example: true - deletedId: + dimensionName: + description: Targeting dimension name (e.g., country, region, city, device_type) type: string - example: example_id_123 + 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: - - success - - deletedId + - dimensionName + - anyOf + - noneOf + additionalProperties: false + BrandStoryAgentSummaryOutput: + type: object + properties: + id: + type: number + example: 100 + name: + type: string + example: Example Name + required: + - id + - name + additionalProperties: false + BrandStandardsAgentSummaryOutput: + type: object + properties: + id: + type: number + example: 100 + name: + type: string + example: Example Name + required: + - id + - name additionalProperties: false - CampaignGetSummary: + ProposalCardOutput: + description: Visual card data for rendering proposals in marketplace UI, following ADCP product card pattern type: object properties: - campaignId: + title: + description: Proposal name/title + example: Premium Display Campaign type: string - example: example_id_123 - summary: + 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 - additionalProperties: {} + 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: - - campaignId - - summary + - title + - description + - pricing_summary additionalProperties: false - CampaignListTactics: + BudgetRangeOutput: + description: Budget range for campaign planning type: object properties: - tactics: - type: array - items: {} - example: [] - total: - type: integer + min: + description: Minimum budget available + example: 50000 + type: number minimum: 0 - maximum: 9007199254740991 - example: 100 + 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: - - tactics - - total + - min + - max + - currency additionalProperties: false - CampaignValidateBrief: + AvailableBrandAgentOutput: type: object properties: - valid: - type: boolean - example: true - feedback: + id: + type: number + example: 100 + name: type: string - example: string + example: Example Name required: - - valid + - id + - name additionalProperties: false - ChannelList: + BitmapTargetingProfileOutput: type: object properties: - total: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - 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: - type: object - properties: - channel: - type: string - displayName: - type: string - required: - - channel - - displayName - additionalProperties: false - example: [] + 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: - - total - - items + - dimensionName + - anyOf + - noneOf additionalProperties: false - GetCustomerOutput: + BrandAgentUpdateOutput: type: object properties: id: - description: Unique identifier for the customer - type: number + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 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 + description: type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?: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: + manifestUrl: + type: string + format: uri + example: https://example.com 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 + seatId: + nullable: true + type: integer + format: int64 + example: 100 + countryCodes: 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 + type: string example: [] - count: - description: Total number of seats returned - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - required: - - customerId - - seats - - count - additionalProperties: false - CreativeAssign: - type: object - properties: - success: - type: boolean - example: true - creativeId: + createdAt: type: string - example: example_id_123 - campaignId: + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?: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 - example: example_id_123 + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + example: string required: - - success - - creativeId - - campaignId + - id + - name + - customerId + - createdAt + - updatedAt additionalProperties: false - CreativeDelete: + BrandStandardsCreateOutput: type: object properties: - success: - type: boolean - example: true id: type: string example: example_id_123 - required: - - success - - id - additionalProperties: false - CreativeList: - type: object - properties: - items: + 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: - $ref: '#/components/schemas/CreativeGetOutput' + type: string example: [] - total: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - required: - - items - - total - additionalProperties: false - CountryList: - type: object - properties: - total: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - items: + models: type: array items: type: object properties: - key: + id: type: string - displayName: + 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: - - key - - displayName + - 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 - - items + - id + - name + - countryCodes + - channelCodes + - brands + - models + - createdAt + - updatedAt additionalProperties: false - LanguageList: + CampaignUpdateOutput: type: object properties: - total: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - items: + 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: + creative_id: + type: string + example: example_id_123 + name: + type: string + example: Example Name + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - 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: + 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: - key: + name: type: string - displayName: + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true type: string required: - - key - - displayName + - name additionalProperties: false example: [] - required: - - total - - items - additionalProperties: false - MediaBuyList: - type: object - properties: - total: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - items: + tags: + nullable: true 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 + approved: + nullable: true + type: boolean + example: true + weight: + nullable: true type: number example: 100 - proposals: - description: List of proposals from outcome agents + placement_ids: + nullable: true 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 + anyOf: + - type: string + - type: string + minItems: 2 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) + status: + description: Internal creative status type: string - example: Example Name - proposalId: - description: ID of the accepted proposal + example: string + campaign_id: + description: Associated campaign ID type: string example: example_id_123 - outcomeAgentId: - description: ID of the outcome agent managing this tactic + created_at: 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 + 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: - - tacticId - - tacticName - - proposalId - - outcomeAgentId - - acknowledged + - creative_id + - name + - format_id + - assets + - status + - created_at + - updated_at additionalProperties: false - OutcomesAgentListTactics: + MediaBuyGetOutput: type: object properties: - outcomeAgentId: - description: ID of the outcome agent + media_buy_id: + description: ADCP media buy identifier type: string example: example_id_123 - outcomeAgentName: - description: Name of the outcome agent - type: string - example: Example Name - total: - description: Total number of tactics managed by this agent - type: number + tactic_id: + description: Internal tactic ID + type: integer + exclusiveMinimum: true + maximum: 9007199254740991 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: - - outcomeAgentId - - outcomeAgentName - - total - - tactics - additionalProperties: false - MediaProductList: - type: object - properties: - total: + customer_id: + description: Internal customer ID type: integer - minimum: 0 + exclusiveMinimum: true maximum: 9007199254740991 example: 100 - 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 - 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 - - type: array + 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 - required: - - id - - productId - - name - - deliveryType - additionalProperties: false - example: [] - required: - - total - - items - additionalProperties: false - AgentGet: - anyOf: - - type: object - properties: - agentId: - type: string - name: - type: string - type: - type: string - enum: - - SALES - - OUTCOME - status: - type: string - relationship: - type: string - endpointUrl: - type: string - protocol: - type: string - authenticationType: - type: string - description: - type: string - organizationId: - type: string - registeredBy: - type: string - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - required: - - agentId - - name - - type - - status - - relationship - - endpointUrl - - protocol - - authenticationType - - createdAt - - updatedAt - additionalProperties: false - - type: object - properties: - agentId: - type: string - name: - type: string - type: - type: string - enum: - - SALES - - OUTCOME - status: - type: string - relationship: - type: string - endpointUrl: - type: string - protocol: - type: string - authenticationType: - type: string - description: - type: string - organizationId: - type: string - registeredBy: - type: string - createdAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - updatedAt: - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - customerAccountCount: - type: integer - minimum: 0 - maximum: 9007199254740991 - required: - - agentId - - name - - type - - status - - relationship - - endpointUrl - - protocol - - authenticationType - - createdAt - - updatedAt - - customerAccountCount - additionalProperties: false - AgentList: - type: object - properties: - total: - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - items: - type: array - items: - anyOf: - - type: object - properties: - agentId: - type: string - name: - type: string - type: - type: string - enum: - - SALES - - OUTCOME - status: - type: string - relationship: - type: string - endpointUrl: - type: string - protocol: - type: string - required: - - agentId - - name - - type - - status - - relationship - - endpointUrl - - protocol - additionalProperties: false - - type: object + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - 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: + 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: - agentId: - type: string - name: - type: string - type: - type: string - enum: - - SALES - - OUTCOME - status: + agent_url: type: string - relationship: - type: string - endpointUrl: - type: string - protocol: + id: type: string - customerAccountCount: - type: integer - minimum: 0 - maximum: 9007199254740991 + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number required: - - agentId - - name - - type - - status - - relationship - - endpointUrl - - protocol - - customerAccountCount + - agent_url + - id additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - 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: + 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: [] - 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! - 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 + adcp: + description: ADCP-specific metadata (from execute response) + type: object + properties: + media_buy_id: + type: string + status: + type: string + webhook_url: + type: string + additionalProperties: false + performance: + description: Performance metrics (from reporting) + type: object + properties: + impressions: + type: number + spend: + type: number + clicks: + type: number + last_updated: + type: string + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ + required: + - impressions + - spend + - clicks + additionalProperties: false + created_at: + description: Created timestamp type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string - updatedAt: - description: ISO 8601 timestamp when the token was last updated + updated_at: + description: Updated timestamp type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string - 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 + 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 - - archivedAt + - media_buy_id + - tactic_id + - customer_id + - name + - status + - created_at + - updated_at additionalProperties: false - GetServiceTokenOutput: + TacticGetOutput: 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 + 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 + 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: - 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 - organizationId: - description: Optional organization identifier for scoping the token - type: string - name: - description: Human-readable name of the token - type: string - description: - description: Description of the token purpose - type: string - accessClientId: - description: The public client ID portion of the token credentials (safe to log) - type: string - expiresAt: - description: ISO 8601 timestamp when the token expires, if set - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - createdAt: - description: ISO 8601 timestamp when the token was created - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - updatedAt: - description: ISO 8601 timestamp when the token was last updated - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - archivedAt: - description: ISO 8601 timestamp when the token was archived, if archived - type: string - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - required: - - id - - customerId - - name - - accessClientId - - createdAt - - updatedAt - additionalProperties: false - example: [] - count: - description: Total number of tokens returned - type: integer - minimum: 0 - maximum: 9007199254740991 - example: 100 - required: - - tokens - - count - additionalProperties: false - ProposalCardOutput: - 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 - additionalProperties: false + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?: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: - - title - - description - - pricing_summary + - id + - name + - channelCodes + - countryCodes + - createdAt + - updatedAt additionalProperties: false - BudgetRangeOutput: - description: Budget range for campaign planning + BrandAgentGet: type: object properties: - min: - description: Minimum budget available - example: 50000 - type: number - minimum: 0 + id: + type: integer exclusiveMinimum: true - max: - description: Maximum budget available - example: 150000 - type: number - minimum: 0 + 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 - currency: - description: Currency for budget (ISO 4217 code) - example: USD - default: USD + maximum: 9007199254740991 + example: 100 + seatId: + nullable: true + type: integer + format: int64 + example: 100 + countryCodes: + type: array + items: + type: string + example: [] + createdAt: type: string - minLength: 3 - maxLength: 3 + format: date-time + pattern: >- + ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?: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: - - min - - max - - currency + - id + - name + - customerId + - createdAt + - updatedAt additionalProperties: false - BrandAgentUpdateOutput: + BrandAgentCreate: type: object properties: id: @@ -6834,6 +26243,16 @@ components: exclusiveMinimum: true maximum: 9007199254740991 example: 100 + seatId: + nullable: true + type: integer + format: int64 + example: 100 + countryCodes: + type: array + items: + type: string + example: [] createdAt: type: string format: date-time @@ -6853,193 +26272,1923 @@ components: - createdAt - updatedAt additionalProperties: false - BrandStandardsCreateOutput: + CampaignCreate: type: object properties: - id: + campaignId: type: string example: example_id_123 name: type: string example: Example Name - description: + status: 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: + 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: + 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: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - 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: + 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: + 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 - format: date-time - pattern: >- - ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?: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: + campaign_id: + description: Associated campaign ID type: string example: example_id_123 - name: - type: string - example: Example Name - status: - type: string - example: string - 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: - - campaignId + - creative_id - name + - format_id + - assets - status - - createdAt - - updatedAt + - created_at + - updated_at additionalProperties: false - CreativeGetOutput: + CreativeUpdate: type: object properties: - creativeId: + creative_id: type: string example: example_id_123 name: type: string example: Example Name + format_id: + type: object + properties: + agent_url: + type: string + id: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_ms: + nullable: true + type: number + required: + - agent_url + - id + additionalProperties: false + assets: + type: object + additionalProperties: + anyOf: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - 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: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + example: [] + tags: + nullable: true + type: array + items: + type: string + example: [] + approved: + nullable: true + type: boolean + example: true + weight: + nullable: true + type: number + example: 100 + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 + example: [] status: + description: Internal creative status type: string example: string - campaignId: + campaign_id: + description: Associated campaign ID type: string example: example_id_123 - createdAt: + created_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string - updatedAt: + updated_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ example: string required: - - creativeId + - creative_id - name + - format_id + - assets - status - - createdAt - - updatedAt + - created_at + - updated_at additionalProperties: false - 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 +28197,1048 @@ 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: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - 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: + content: + type: string + language: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + version: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + media: + nullable: true + type: string + required: + - content + additionalProperties: false + - type: object + properties: + content: + type: string + module_type: + nullable: true + anyOf: + - type: string + enum: + - esm + - type: string + enum: + - commonjs + - type: string + enum: + - script + required: + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + vast_version: + nullable: true + anyOf: + - type: string + enum: + - '2.0' + - type: string + enum: + - '3.0' + - type: string + enum: + - '4.0' + - type: string + enum: + - '4.1' + - type: string + enum: + - '4.2' + vpaid_enabled: + nullable: true + type: boolean + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - click + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + - type: string + enum: + - fullscreen + - type: string + enum: + - exitFullscreen + - type: string + enum: + - playerExpand + - type: string + enum: + - playerCollapse + required: + - delivery_type + - content + additionalProperties: false + - anyOf: + - type: object + properties: + delivery_type: + type: string + enum: + - url + url: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - url + additionalProperties: false + - type: object + properties: + delivery_type: + type: string + enum: + - inline + content: + type: string + daast_version: + nullable: true + anyOf: + - type: string + enum: + - '1.0' + - type: string + enum: + - '1.1' + duration_ms: + nullable: true + type: number + tracking_events: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - start + - type: string + enum: + - firstQuartile + - type: string + enum: + - midpoint + - type: string + enum: + - thirdQuartile + - type: string + enum: + - complete + - type: string + enum: + - impression + - type: string + enum: + - pause + - type: string + enum: + - resume + - type: string + enum: + - skip + - type: string + enum: + - mute + - type: string + enum: + - unmute + companion_ads: + nullable: true + type: boolean + required: + - delivery_type + - content + additionalProperties: false + - type: object + properties: + brand_manifest: + anyOf: + - type: object + properties: + url: + nullable: true + type: string + name: + type: string + logos: + nullable: true + type: array + items: + type: object + properties: + url: + type: string + tags: + nullable: true + type: array + items: + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + required: + - url + additionalProperties: false + colors: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + accent: + nullable: true + type: string + background: + nullable: true + type: string + text: + nullable: true + type: string + additionalProperties: false + fonts: + nullable: true + type: object + properties: + primary: + nullable: true + type: string + secondary: + nullable: true + type: string + font_urls: + nullable: true + type: array + items: + type: string + additionalProperties: false + tone: + nullable: true + type: string + tagline: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + properties: + asset_id: + type: string + asset_type: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - text + - type: string + enum: + - markdown + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - promoted_offerings + - type: string + enum: + - url + - type: string + enum: + - webhook + url: + type: string + tags: + nullable: true + type: array + items: + type: string + name: + nullable: true + type: string + description: + nullable: true + type: string + width: + nullable: true + type: number + height: + nullable: true + type: number + duration_seconds: + nullable: true + type: number + file_size_bytes: + nullable: true + type: number + format: + nullable: true + type: string + metadata: + nullable: true + type: object + additionalProperties: {} + required: + - asset_id + - asset_type + - url + additionalProperties: false + product_catalog: + nullable: true + type: object + properties: + feed_url: + type: string + feed_format: + nullable: true + anyOf: + - type: string + enum: + - google_merchant_center + - type: string + enum: + - facebook_catalog + - type: string + enum: + - custom + categories: + nullable: true + type: array + items: + type: string + last_updated: + nullable: true + type: string + update_frequency: + nullable: true + anyOf: + - type: string + enum: + - realtime + - type: string + enum: + - hourly + - type: string + enum: + - daily + - type: string + enum: + - weekly + required: + - feed_url + additionalProperties: false + disclaimers: + nullable: true + type: array + items: + type: object + properties: + text: + type: string + context: + nullable: true + type: string + required: + nullable: true + type: boolean + required: + - text + additionalProperties: false + industry: + nullable: true + type: string + target_audience: + nullable: true + type: string + contact: + nullable: true + type: object + properties: + email: + nullable: true + type: string + phone: + nullable: true + type: string + additionalProperties: false + metadata: + nullable: true + type: object + properties: + created_date: + nullable: true + type: string + updated_date: + nullable: true + type: string + version: + nullable: true + type: string + additionalProperties: false + required: + - name + additionalProperties: false + - type: string + product_selectors: + nullable: true + type: object + properties: + manifest_skus: + nullable: true + type: array + items: + type: string + manifest_tags: + nullable: true + type: array + items: + type: string + manifest_category: + nullable: true + type: string + manifest_query: + nullable: true + type: string + additionalProperties: false + offerings: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + description: + nullable: true + type: string + assets: + nullable: true + type: array + items: + type: object + additionalProperties: {} + required: + - name + additionalProperties: false + asset_selectors: + nullable: true + type: object + properties: + tags: + nullable: true + type: array + items: + type: string + asset_types: + nullable: true + type: array + items: + anyOf: + - type: string + enum: + - image + - type: string + enum: + - video + - type: string + enum: + - audio + - type: string + enum: + - vast + - type: string + enum: + - daast + - type: string + enum: + - text + - type: string + enum: + - url + - type: string + enum: + - html + - type: string + enum: + - css + - type: string + enum: + - javascript + - type: string + enum: + - webhook + exclude_tags: + nullable: true + type: array + items: + type: string + additionalProperties: false + required: + - brand_manifest + additionalProperties: false + - type: object + properties: + url: + type: string + url_type: + nullable: true + anyOf: + - type: string + enum: + - clickthrough + - type: string + enum: + - tracker_pixel + - type: string + enum: + - tracker_script + description: + nullable: true + type: string + required: + - url + additionalProperties: false + inputs: + nullable: true + type: array + items: + type: object + properties: + name: + type: string + macros: + nullable: true + type: object + additionalProperties: + type: string + context_description: + nullable: true + type: string + required: + - name + additionalProperties: false + tags: + nullable: true + type: array + items: + type: string + approved: + nullable: true + type: boolean + weight: + nullable: true + type: number + placement_ids: + nullable: true + type: array + items: + anyOf: + - type: string + - type: string + minItems: 2 status: + description: Internal creative status (not in ADCP protocol) type: string required: - - creativeId + - creative_id - name - - formatId - - mediaUrl + - format_id + - assets - status additionalProperties: false - createdAt: + created_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - updatedAt: + updated_at: type: string format: date-time pattern: >- ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ - salesAgentId: - type: string - salesAgentName: + sales_agent_id: type: string - pricingCpm: - type: number - pricingSignalCost: - type: number - bidPrice: - type: number - pricingOptionId: + sales_agent_name: type: string - creativeFormats: + creative_formats: type: array items: type: object @@ -7126,71 +29247,914 @@ 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: + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + format: + nullable: true + type: string + alt_text: + nullable: true + type: string + required: + - url + - width + - height + additionalProperties: false + - type: object + properties: + url: + type: string + width: + type: number + height: + type: number + duration_ms: + nullable: true + type: number + format: + nullable: true + type: string + bitrate_kbps: + nullable: true + type: number + required: + - url + - 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: + 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 +30163,7 @@ components: type: number clicks: type: number - lastUpdated: + last_updated: type: string format: date-time pattern: >- @@ -7209,35 +30173,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 +30236,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 +30272,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 +30281,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..db4b922 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,139 @@ export interface paths { */ post: operations['customer_get_seats']; }; + '/seat-details-list': { + /** + * List seats + * @description List all seats the authenticated user has access to, including seat members, agents, and brand agents. + */ + post: operations['seat_details_list']; + }; + '/seat-details-get': { + /** + * Get seat details + * @description Get detailed information about a specific seat including members, agents, and brand agents. + */ + post: operations['seat_details_get']; + }; + '/seat-create': { + /** + * Create seat + * @description Create a new seat under the authenticated user's customer. Requires ADMIN or SUPER_ADMIN role. + */ + post: operations['seat_create']; + }; + '/seat-update': { + /** + * Update seat + * @description Update an existing seat. Requires ADMIN role on the seat or SUPER_ADMIN. + */ + post: operations['seat_update']; + }; + '/seat-delete': { + /** + * Delete seat + * @description Delete a seat. Requires ADMIN role on the seat or SUPER_ADMIN. This operation cannot be undone. + */ + post: operations['seat_delete']; + }; + '/seat-member-add': { + /** + * Add seat member + * @description Add a user as a member to a seat with a specified role (ADMIN, READ_WRITE, or READ). Requires ADMIN role on the seat or SUPER_ADMIN. + */ + post: operations['seat_member_add']; + }; + '/seat-member-update-role': { + /** + * Update seat member role + * @description Update the role of a seat member. Requires ADMIN role on the seat or SUPER_ADMIN. + */ + post: operations['seat_member_update_role']; + }; + '/seat-member-remove': { + /** + * Remove seat member + * @description Remove a user from a seat. Requires ADMIN role on the seat or SUPER_ADMIN. + */ + post: operations['seat_member_remove']; + }; + '/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 +378,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 +405,8 @@ export interface components { | 'PAUSED' | 'COMPLETED' | 'FAILED' - | 'REJECTED'; + | 'REJECTED' + | 'ARCHIVED'; /** @example 100 */ take?: number; /** @example 100 */ @@ -444,9 +414,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 +465,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 +489,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 +508,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 +542,7 @@ export interface components { * @example SALES * @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; /** * @description Agent name * @example Example Name @@ -674,6 +605,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,85 +693,129 @@ 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; - }[]; + 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'; }; - 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; - }[]; + ListSeatsInput: { + /** + * @description The unique identifier of the user to get seats for. If not provided, uses the authenticated user ID. + * @example 100 + */ + userId?: number; + /** + * @description The unique identifier of the customer to filter seats by. If not provided, uses the authenticated users customer ID. + * @example 100 + */ + customerId?: number; }; - DeleteTacticInput: { - /** @example 100 */ - tacticId: number; - /** @example true */ - confirm: boolean; + GetSeatInput: { + /** + * @description The unique identifier of the seat to retrieve + * @example example_id_123 + */ + seatId: string; }; - GetTacticInput: { - /** @example 100 */ - tacticId: number; + CreateSeatInput: { + /** + * @description Name for the new seat + * @example Example Name + */ + name: string; + /** + * @description Type of seat to create + * @example BUYER + * @enum {string} + */ + type: 'BUYER' | 'ACTIVATION'; }; - ListTacticsInput: { - /** @example example_id_123 */ - campaignId?: string; - /** @example 100 */ - take?: number; - /** @example 100 */ - skip?: number; + UpdateSeatInput: { + /** + * @description The ID of the seat to update + * @example example_id_123 + */ + seatId: string; + /** + * @description New name for the seat + * @example Example Name + */ + name: string; }; - LinkCampaignToTacticInput: { - /** @example 100 */ - tacticId: number; - /** @example example_id_123 */ - campaignId: string; + DeleteSeatInput: { + /** + * @description The ID of the seat to delete + * @example example_id_123 + */ + seatId: string; + }; + AddSeatMemberInput: { + /** + * @description The ID of the seat to add the member to + * @example example_id_123 + */ + seatId: string; + /** + * @description The ID of the user to add to the seat + * @example example_id_123 + */ + userId: string; + /** + * @description The role to assign to the user + * @example ADMIN + * @enum {string} + */ + role: 'ADMIN' | 'READ_WRITE' | 'READ'; + }; + UpdateSeatMemberRoleInput: { + /** + * @description The ID of the seat + * @example example_id_123 + */ + seatId: string; + /** + * @description The ID of the user whose role to update + * @example example_id_123 + */ + userId: string; + /** + * @description The new role for the user + * @example ADMIN + * @enum {string} + */ + role: 'ADMIN' | 'READ_WRITE' | 'READ'; + }; + RemoveSeatMemberInput: { + /** + * @description The ID of the seat + * @example example_id_123 + */ + seatId: string; + /** + * @description The ID of the user to remove from the seat + * @example example_id_123 + */ + userId: string; }; - UnlinkCampaignFromTacticInput: { + GetTacticInput: { /** @example 100 */ tacticId: number; + }; + ListTacticsInput: { /** @example example_id_123 */ - campaignId: string; + campaignId?: string; + /** @example 100 */ + take?: number; + /** @example 100 */ + skip?: number; }; RegisterWebhookInput: { /** @example 100 */ @@ -896,6 +888,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 +957,1266 @@ 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 [] */ + 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 [] */ + regions?: ('NORAM' | 'LATAM' | 'EMEA' | 'APAC' | 'ANZ' | 'GLOBAL')[]; + metadata?: { + [key: string]: unknown; + }; + /** @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?: { - 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]: + | { + url: string; + width: number; + height: number; + format?: string | null; + alt_text?: string | null; + } + | { + url: string; + width: number; + height: number; + 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]: + | { + url: string; + width: number; + height: number; + format?: string | null; + alt_text?: string | null; + } + | { + url: string; + width: number; + height: number; + 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 */ @@ -1073,6 +2233,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 +2355,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 +2367,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 +2447,13 @@ export interface components { displayName: string; }[]; }; - MediaBuyDelete: { - /** @example true */ - success: boolean; - /** @example example_id_123 */ - id: string; + ListMediaBuysOutput: { + /** @example 100 */ + total: number; + /** @example [] */ + items: components['schemas']['MediaBuyGetOutput'][]; }; - 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: { - /** @example 100 */ - total: number; - /** @example [] */ - items: components['schemas']['MediaBuyGetOutput'][]; - }; - MediaBuyValidateBudget: { + ValidateMediaBuyBudgetOutput: { /** @example true */ valid: boolean; /** @example string */ @@ -1278,93 +2499,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; + 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; + }[]; + /** @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; }[]; - }; - 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; + product_id: string; name: string; - salesAgent?: string; - salesAgentId?: string; - salesAgentName?: string; - /** @enum {string} */ - deliveryType: 'guaranteed' | 'non_guaranteed'; - format?: string; - 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; - }[]; + 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 */ - productsSaved: number; + products_saved: number; }; AgentGet: | { agentId: string; name: string; /** @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; status: string; relationship: string; endpointUrl: string; @@ -1382,7 +3086,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 +3100,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 +3114,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 +3124,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 +3142,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 +3157,7 @@ export interface components { * @example SALES * @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; }; AgentUpdate: { /** @example example_id_123 */ @@ -1460,139 +3168,404 @@ 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; - }; - 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; - }; - WebhookRegister: { - /** @example example_id_123 */ - id: string; - /** @example 100 */ - brandAgentId?: number; - endpoint: { - url: string; - method: string; - authenticationType?: string; - }; - /** @example [] */ - eventTypes: string[]; - filters?: { - campaigns?: string[]; - tactics?: string[]; - creatives?: string[]; - mediaBuys?: string[]; - metrics?: string[]; - minSeverity?: string; - }; - retryPolicy: { - maxRetries: number; - backoffMultiplier: number; - maxBackoffSeconds: number; - }; - /** @example string */ - status: string; - testResult: { - success: boolean; - statusCode?: number; - error?: string; - }; - }; - WebhookList: { - /** @example 100 */ - total: number; - /** @example [] */ - items: { - id: string; - status: string; - endpoint: { - url: string; - method: string; - authenticationType?: string; - }; - eventTypes: string[]; - brandAgentId?: number; - failureCount: number; - /** Format: date-time */ - lastSuccess?: string | null; - /** Format: date-time */ - lastFailure?: string | null; - /** Format: date-time */ - createdAt: string; - }[]; - }; - WebhookDelete: { - /** @example true */ - success: boolean; - /** @example example_id_123 */ - webhookId: string; + reportingType?: 'WEBHOOK' | 'BUCKET' | 'POLLING' | null; + /** + * @example DAILY + * @enum {string|null} + */ + reportingPollingCadence?: 'DAILY' | 'MONTHLY' | null; }; - CreateServiceTokenOutput: { + ListSeatsOutput: { /** - * Format: int64 - * @description Unique identifier for the service token + * @description The user ID these seats belong to * @example 100 */ - id: number; + userId?: number; /** - * @description Customer ID that owns this token + * @description The customer ID these seats belong to * @example 100 */ customerId: number; /** - * Format: int64 - * @description Seat ID if token is scoped to a specific seat - * @example 100 + * @description Array of seats the user has access to + * @example [] */ - seatId?: number; - /** - * Format: int64 + seats: { + /** @description Unique identifier for the seat */ + id: string; + /** @description Seat display name */ + name: string; + /** @description Customer ID that owns this seat */ + customerId: number; + /** @description Whether the seat is currently active */ + active: boolean; + /** + * @description Seat type + * @enum {string} + */ + type: 'BUYER' | 'ACTIVATION'; + /** + * Format: date-time + * @description ISO 8601 timestamp when the seat was created + */ + createdAt: string; + /** + * Format: date-time + * @description ISO 8601 timestamp when the seat was created + */ + updatedAt: string; + /** + * @description The authenticated users role within this seat, if applicable + * @enum {string} + */ + userRole?: 'ADMIN' | 'READ_WRITE' | 'READ'; + /** @description All users associated with this seat */ + members: { + /** @description Unique identifier for the user */ + userId: number; + /** + * Format: email + * @description User email address + */ + email: string; + /** @description User full name */ + name: string; + /** @description User created at */ + createdAt: string; + /** @description User updated at */ + updatedAt: string; + /** @description Date user was added to seat */ + createdSeatAt: string; + /** @description Date user seat permission was last updated */ + updatedSeatAt: string; + /** + * @description User role within this seat + * @enum {string} + */ + role: 'ADMIN' | 'READ' | 'READ_WRITE'; + }[]; + /** @description All agents associated with this seat */ + agents: { + /** + * Format: int64 + * @description Unique db identifier for the agent + */ + id: number; + /** @description Unique identifier for the agent */ + agentId?: string; + /** @description Agent name */ + name: string; + /** @description Agent type (e.g., DECISIONING) */ + type: string; + /** @description Customer ID that owns this agent */ + customerId: number; + /** + * Format: int64 + * @description Seat ID from adcp_agent table if applicable + */ + seatId?: number | null; + /** @description created at */ + createdAt: string; + /** @description updated at */ + updatedAt: string; + /** @description Number of active campaigns for this agent */ + activeCampaignsCount: number; + /** @description Number of active tactics for this agent */ + activeTacticsCount: number; + /** @description Number of active media buys for this agent */ + activeMediaBuysCount: number; + }[]; + /** @description All brand agents associated with this seat */ + brandAgents: { + /** + * Format: int64 + * @description Unique identifier for the agent + */ + id: number; + /** @description Agent name */ + name: string; + /** @description Agent type (e.g., DECISIONING) */ + type: string; + /** @description Customer ID that owns this agent */ + customerId: number; + /** + * Format: int64 + * @description Seat ID from adcp_agent table if applicable + */ + seatId?: number | null; + /** @description created at */ + createdAt: string; + /** @description updated at */ + updatedAt: string; + /** @description Number of active campaigns for this agent */ + activeCampaignsCount: number; + /** @description Number of active tactics for this agent */ + activeTacticsCount: number; + /** @description Number of active media buys for this agent */ + activeMediaBuysCount: number; + }[]; + }[]; + /** + * @description Total number of seats returned + * @example 100 + */ + count: number; + }; + GetSeatOutput: { + /** @description The seat details */ + seat: { + /** @description Unique identifier for the seat */ + id: string; + /** @description Seat display name */ + name: string; + /** @description Customer ID that owns this seat */ + customerId: number; + /** @description Whether the seat is currently active */ + active: boolean; + /** + * @description Seat type + * @enum {string} + */ + type: 'BUYER' | 'ACTIVATION'; + /** + * Format: date-time + * @description ISO 8601 timestamp when the seat was created + */ + createdAt: string; + /** + * Format: date-time + * @description ISO 8601 timestamp when the seat was created + */ + updatedAt: string; + /** + * @description The authenticated users role within this seat, if applicable + * @enum {string} + */ + userRole?: 'ADMIN' | 'READ_WRITE' | 'READ'; + /** @description All users associated with this seat */ + members: { + /** @description Unique identifier for the user */ + userId: number; + /** + * Format: email + * @description User email address + */ + email: string; + /** @description User full name */ + name: string; + /** @description User created at */ + createdAt: string; + /** @description User updated at */ + updatedAt: string; + /** @description Date user was added to seat */ + createdSeatAt: string; + /** @description Date user seat permission was last updated */ + updatedSeatAt: string; + /** + * @description User role within this seat + * @enum {string} + */ + role: 'ADMIN' | 'READ' | 'READ_WRITE'; + }[]; + /** @description All agents associated with this seat */ + agents: { + /** + * Format: int64 + * @description Unique db identifier for the agent + */ + id: number; + /** @description Unique identifier for the agent */ + agentId?: string; + /** @description Agent name */ + name: string; + /** @description Agent type (e.g., DECISIONING) */ + type: string; + /** @description Customer ID that owns this agent */ + customerId: number; + /** + * Format: int64 + * @description Seat ID from adcp_agent table if applicable + */ + seatId?: number | null; + /** @description created at */ + createdAt: string; + /** @description updated at */ + updatedAt: string; + /** @description Number of active campaigns for this agent */ + activeCampaignsCount: number; + /** @description Number of active tactics for this agent */ + activeTacticsCount: number; + /** @description Number of active media buys for this agent */ + activeMediaBuysCount: number; + }[]; + /** @description All brand agents associated with this seat */ + brandAgents: { + /** + * Format: int64 + * @description Unique identifier for the agent + */ + id: number; + /** @description Agent name */ + name: string; + /** @description Agent type (e.g., DECISIONING) */ + type: string; + /** @description Customer ID that owns this agent */ + customerId: number; + /** + * Format: int64 + * @description Seat ID from adcp_agent table if applicable + */ + seatId?: number | null; + /** @description created at */ + createdAt: string; + /** @description updated at */ + updatedAt: string; + /** @description Number of active campaigns for this agent */ + activeCampaignsCount: number; + /** @description Number of active tactics for this agent */ + activeTacticsCount: number; + /** @description Number of active media buys for this agent */ + activeMediaBuysCount: number; + }[]; + }; + }; + CreateSeatOutput: { + /** + * @description The ID of the created seat + * @example example_id_123 + */ + id: string; + }; + UpdateSeatOutput: { + /** + * @description Whether the update was successful + * @example true + */ + success: boolean; + }; + DeleteSeatOutput: { + /** + * @description Whether the deletion was successful + * @example true + */ + success: boolean; + }; + AddSeatMemberOutput: { + /** + * @description Whether the member was added successfully + * @example true + */ + success: boolean; + }; + UpdateSeatMemberRoleOutput: { + /** + * @description Whether the role was updated successfully + * @example true + */ + success: boolean; + }; + RemoveSeatMemberOutput: { + /** + * @description Whether the member was removed successfully + * @example true + */ + success: boolean; + }; + TacticList: { + /** @example 100 */ + total: number; + /** @example [] */ + items: components['schemas']['TacticGetOutput'][]; + }; + WebhookRegister: { + /** @example example_id_123 */ + id: string; + /** @example 100 */ + brandAgentId?: number; + endpoint: { + url: string; + method: string; + authenticationType?: string; + }; + /** @example [] */ + eventTypes: string[]; + filters?: { + campaigns?: string[]; + tactics?: string[]; + creatives?: string[]; + mediaBuys?: string[]; + metrics?: string[]; + minSeverity?: string; + }; + retryPolicy: { + maxRetries: number; + backoffMultiplier: number; + maxBackoffSeconds: number; + }; + /** @example string */ + status: string; + testResult: { + success: boolean; + statusCode?: number; + error?: string; + }; + }; + WebhookList: { + /** @example 100 */ + total: number; + /** @example [] */ + items: { + id: string; + status: string; + endpoint: { + url: string; + method: string; + authenticationType?: string; + }; + eventTypes: string[]; + brandAgentId?: number; + failureCount: number; + /** Format: date-time */ + lastSuccess?: string | null; + /** Format: date-time */ + lastFailure?: string | null; + /** Format: date-time */ + createdAt: string; + }[]; + }; + WebhookDelete: { + /** @example true */ + success: boolean; + /** @example example_id_123 */ + webhookId: string; + }; + CreateServiceTokenOutput: { + /** + * Format: int64 + * @description Unique identifier for the service token + * @example 100 + */ + id: number; + /** + * @description Customer ID that owns this token + * @example 100 + */ + customerId: number; + /** + * Format: int64 + * @description Seat ID if token is scoped to a specific seat + * @example 100 + */ + seatId?: number; + /** + * Format: int64 * @description User ID if token is scoped to a specific user * @example 100 */ @@ -1778,6 +3751,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,333 +3787,1841 @@ 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; - /** @example [] */ - products?: { - mediaProductId: string; - salesAgentId: string; - salesAgentName?: string; - budgetAmount?: number; - budgetCurrency?: string; - pricingCpm?: number; - pricingSignalCost?: number; - displayOrder?: number; - creativeFormats?: { - agent_url: string; - id: 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 [] */ - 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; + }; + SignalGet: { + 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; + 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; }; - performance?: { - impressions: number; - spend: number; - clicks: number; + /** @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 */ - lastUpdated?: string; + updatedAt: string; + }[]; + }; + SignalUpdate: { + 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; + }[]; + }; + SignalDelete: { + /** @example true */ + success: boolean; /** * Format: date-time * @example string */ - archivedAt?: string; + archivedAt: 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: { /** - * Format: date-time - * @example string + * @description Targeting dimension name (e.g., country, region, city, device_type) + * @example Example Name */ - createdAt: string; + dimensionName: string; /** - * Format: date-time - * @example string + * @description Included targeting item keys (e.g., "US", "MX") + * @example [] */ - updatedAt: string; + anyOf: string[]; + /** + * @description Excluded targeting item keys + * @example [] + */ + noneOf: string[]; }; - TacticGetOutput: { + BrandStoryAgentSummaryOutput: { /** @example 100 */ id: number; /** @example Example Name */ name: string; - /** @example string */ - prompt?: string; - /** @example [] */ - campaignIds?: string[]; - /** @example [] */ - channelCodes: string[]; - /** @example [] */ - countryCodes: string[]; + }; + BrandStandardsAgentSummaryOutput: { /** @example 100 */ - mediaBuyCount?: number; + id: number; + /** @example Example Name */ + name: string; + }; + MediaBuyGetOutput: { /** - * Format: date-time - * @example string + * @description ADCP media buy identifier + * @example example_id_123 */ - createdAt: string; + media_buy_id: string; /** - * Format: date-time - * @example string + * @description Internal tactic ID + * @example 100 */ - updatedAt: string; + tactic_id: number; /** - * Format: date-time - * @example string + * @description Internal customer ID + * @example 100 + */ + customer_id: number; + /** + * @description Media buy name + * @example Example Name */ - 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; - }[]; - }[]; - /** @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; - }[]; - }[]; - /** @example [] */ - creatives?: { - creativeId: string; - 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; - /** Format: date-time */ - lastUpdated?: string; - }; /** - * Format: date-time + * @description Media buy description * @example string */ - archivedAt?: string; + description?: string; /** - * Format: date-time + * @description Internal status (DRAFT, ACTIVE, PAUSED, etc.) * @example string */ - createdAt: string; + status: string; /** - * Format: date-time - * @example string + * @description Pre-execution product configuration + * @example [] */ - updatedAt: string; - }; - MediaBuyUpdate: { - /** @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?: { + /** @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]: + | { + url: string; + width: number; + height: number; + format?: string | null; + alt_text?: string | null; + } + | { + url: string; + width: number; + height: number; + 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]: + | { + url: string; + width: number; + height: number; + format?: string | null; + alt_text?: string | null; + } + | { + url: string; + width: number; + height: number; + 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 */ @@ -2153,6 +5636,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 @@ -2415,28 +5918,261 @@ export interface operations { * Sync creatives to sales agents * @description Synchronize creatives to connected sales agents (DSPs, publisher platforms). */ - creative_sync_sales_agents: { + 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 creative_sync_sales_agents */ + requestBody: { + content: { + /** + * @example { + * "tool": "creative_sync_sales_agents", + * "arguments": { + * "creative_id": "example_id_123" + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'creative_sync_sales_agents'; + arguments: components['schemas']['SyncSalesAgentsInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['SyncSalesAgentsOutput']; + }; + }; + }; + /** @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 media buy + * @description Get detailed information about a specific media buy. + */ + 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 media_buy_get */ + requestBody: { + content: { + /** + * @example { + * "tool": "media_buy_get", + * "arguments": { + * "media_buy_id": "example_id_123" + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'media_buy_get'; + arguments: components['schemas']['GetMediaBuyInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['MediaBuyGetOutput']; + }; + }; + }; + /** @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 buys + * @description List all media buys with optional filtering by brand agent, campaign, or status. + */ + 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 media_buy_list */ + requestBody: { + content: { + /** + * @example { + * "tool": "media_buy_list", + * "arguments": {} + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'media_buy_list'; + arguments: components['schemas']['ListMediaBuysInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['ListMediaBuysOutput']; + }; + }; + }; + /** @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 media buy budget + * @description Validate a media buy budget against campaign constraints and available funds. + */ + media_buy_validate_budget: { + 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_validate_budget */ + requestBody: { + content: { + /** + * @example { + * "tool": "media_buy_validate_budget", + * "arguments": { + * "tactic_id": 100, + * "new_budget_amount": 100 + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'media_buy_validate_budget'; + arguments: components['schemas']['ValidateMediaBuyBudgetInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['ValidateMediaBuyBudgetOutput']; + }; + }; + }; + /** @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 notifications + * @description List notifications for the authenticated user with optional filtering by status. + */ + notifications_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_sync_sales_agents */ + /** @description Request body for notifications_list */ requestBody: { content: { /** * @example { - * "tool": "creative_sync_sales_agents", - * "arguments": { - * "creativeId": "example_id_123" - * } + * "tool": "notifications_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'creative_sync_sales_agents'; - arguments: components['schemas']['SyncSalesAgentsInput']; + tool: 'notifications_list'; + arguments: components['schemas']['ListNotificationsInput']; }; }; }; @@ -2446,7 +6182,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeSyncSalesAgents']; + structuredContent: components['schemas']['NotificationsList']; }; }; }; @@ -2471,34 +6207,31 @@ export interface operations { }; }; /** - * Create media buy - * @description Create a new media buy with budget, targeting, and creative specifications. + * Mark notification as read + * @description Mark a specific notification as read. */ - media_buy_create: { + notifications_mark_read: { 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 notifications_mark_read */ requestBody: { content: { /** * @example { - * "tool": "media_buy_create", + * "tool": "notifications_mark_read", * "arguments": { - * "tacticId": 100, - * "agentId": "example_id_123", - * "name": "Example Name", - * "products": [] + * "notificationId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'media_buy_create'; - arguments: components['schemas']['CreateMediaBuyInput']; + tool: 'notifications_mark_read'; + arguments: components['schemas']['MarkNotificationReadInput']; }; }; }; @@ -2508,7 +6241,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyGetOutput']; + structuredContent: components['schemas']['NotificationsMarkRead']; }; }; }; @@ -2533,31 +6266,31 @@ export interface operations { }; }; /** - * Update media buy - * @description Update an existing media buy with new budget, targeting, or creative assignments. + * Mark notification as acknowledged + * @description Mark a specific notification as acknowledged. */ - media_buy_update: { + notifications_mark_acknowledged: { 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 notifications_mark_acknowledged */ requestBody: { content: { /** * @example { - * "tool": "media_buy_update", + * "tool": "notifications_mark_acknowledged", * "arguments": { - * "mediaBuyId": "example_id_123" + * "notificationId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'media_buy_update'; - arguments: components['schemas']['UpdateMediaBuyInput']; + tool: 'notifications_mark_acknowledged'; + arguments: components['schemas']['MarkNotificationAcknowledgedInput']; }; }; }; @@ -2567,7 +6300,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyGetOutput']; + structuredContent: components['schemas']['NotificationsMarkAcknowledged']; }; }; }; @@ -2592,32 +6325,29 @@ export interface operations { }; }; /** - * Delete media buy - * @description Delete a media buy and cancel any active placements. + * Mark all notifications as read + * @description Mark all notifications for the authenticated user as read. */ - media_buy_delete: { + notifications_mark_all_read: { 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 notifications_mark_all_read */ requestBody: { content: { /** * @example { - * "tool": "media_buy_delete", - * "arguments": { - * "mediaBuyId": "example_id_123", - * "confirm": true - * } + * "tool": "notifications_mark_all_read", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'media_buy_delete'; - arguments: components['schemas']['DeleteMediaBuyInput']; + tool: 'notifications_mark_all_read'; + arguments: components['schemas']['MarkAllNotificationsReadInput']; }; }; }; @@ -2627,7 +6357,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyDelete']; + structuredContent: components['schemas']['NotificationsMarkAllRead']; }; }; }; @@ -2652,31 +6382,32 @@ export interface operations { }; }; /** - * Execute media buy - * @description Execute a media buy, sending it to the configured sales agents for placement. + * Discover media products + * @description Discover available media products from connected sales agents based on targeting criteria. */ - media_buy_execute: { + 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 media_buy_execute */ + /** @description Request body for media_product_discover */ requestBody: { content: { /** * @example { - * "tool": "media_buy_execute", + * "tool": "media_product_discover", * "arguments": { - * "mediaBuyId": "example_id_123" + * "brief": "string", + * "brandManifestUrl": "https://example.com" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'media_buy_execute'; - arguments: components['schemas']['ExecuteMediaBuyInput']; + tool: 'media_product_discover'; + arguments: components['schemas']['DiscoverProductsInput']; }; }; }; @@ -2686,7 +6417,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyExecute']; + structuredContent: components['schemas']['MediaProductDiscover']; }; }; }; @@ -2711,31 +6442,29 @@ export interface operations { }; }; /** - * Get media buy - * @description Get detailed information about a specific media buy. + * List media products + * @description List saved media products with optional filtering. */ - media_buy_get: { + 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 media_buy_get */ + /** @description Request body for media_product_list */ requestBody: { content: { /** * @example { - * "tool": "media_buy_get", - * "arguments": { - * "mediaBuyId": "example_id_123" - * } + * "tool": "media_product_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'media_buy_get'; - arguments: components['schemas']['GetMediaBuyInput']; + tool: 'media_product_list'; + arguments: components['schemas']['ListProductsInput']; }; }; }; @@ -2745,7 +6474,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyGetOutput']; + structuredContent: components['schemas']['MediaProductList']; }; }; }; @@ -2770,29 +6499,31 @@ export interface operations { }; }; /** - * List media buys - * @description List all media buys with optional filtering by brand agent, campaign, or status. + * Sync media products + * @description Synchronize media product catalog from connected sales agents. */ - media_buy_list: { + media_product_sync: { 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 media_product_sync */ requestBody: { content: { /** * @example { - * "tool": "media_buy_list", - * "arguments": {} + * "tool": "media_product_sync", + * "arguments": { + * "sourceId": "example_id_123" + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'media_buy_list'; - arguments: components['schemas']['ListMediaBuysInput']; + tool: 'media_product_sync'; + arguments: components['schemas']['SyncProductsInput']; }; }; }; @@ -2802,7 +6533,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyList']; + structuredContent: components['schemas']['MediaProductSync']; }; }; }; @@ -2827,32 +6558,31 @@ export interface operations { }; }; /** - * Validate media buy budget - * @description Validate a media buy budget against campaign constraints and available funds. + * Get agent + * @description Get detailed information about a specific agent (SALES or OUTCOME type). Type is automatically inferred from the agent ID. */ - media_buy_validate_budget: { + 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 media_buy_validate_budget */ + /** @description Request body for agent_get */ requestBody: { content: { /** * @example { - * "tool": "media_buy_validate_budget", + * "tool": "agent_get", * "arguments": { - * "tacticId": 100, - * "newBudgetAmount": 100 + * "agentId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'media_buy_validate_budget'; - arguments: components['schemas']['ValidateMediaBuyBudgetInput']; + tool: 'agent_get'; + arguments: components['schemas']['GetAgentInput']; }; }; }; @@ -2862,7 +6592,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyValidateBudget']; + structuredContent: components['schemas']['AgentGet']; }; }; }; @@ -2887,29 +6617,29 @@ export interface operations { }; }; /** - * List notifications - * @description List notifications for the authenticated user with optional filtering by status. + * List agents + * @description List all registered agents with comprehensive filtering. Supports filtering by type (SALES/OUTCOME), status, organization, relationship (SELF/SCOPE3/MARKETPLACE), and name. */ - notifications_list: { + 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 notifications_list */ + /** @description Request body for agent_list */ requestBody: { content: { /** * @example { - * "tool": "notifications_list", + * "tool": "agent_list", * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'notifications_list'; - arguments: components['schemas']['ListNotificationsInput']; + tool: 'agent_list'; + arguments: components['schemas']['ListAgentsInput']; }; }; }; @@ -2919,7 +6649,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['NotificationsList']; + structuredContent: components['schemas']['AgentList']; }; }; }; @@ -2944,31 +6674,35 @@ export interface operations { }; }; /** - * Mark notification as read - * @description Mark a specific notification as read. + * Register agent + * @description Register a new agent for media buying (SALES type) or outcome optimization (OUTCOME type). */ - notifications_mark_read: { + agent_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 notifications_mark_read */ + /** @description Request body for agent_register */ requestBody: { content: { /** * @example { - * "tool": "notifications_mark_read", + * "tool": "agent_register", * "arguments": { - * "notificationId": "example_id_123" + * "type": "SALES", + * "name": "Example Name", + * "endpointUrl": "https://example.com", + * "protocol": "MCP", + * "seatId": 100 * } * } */ 'application/json': { /** @enum {string} */ - tool: 'notifications_mark_read'; - arguments: components['schemas']['MarkNotificationReadInput']; + tool: 'agent_register'; + arguments: components['schemas']['RegisterAgentInput']; }; }; }; @@ -2978,7 +6712,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['NotificationsMarkRead']; + structuredContent: components['schemas']['AgentRegister']; }; }; }; @@ -3003,31 +6737,31 @@ export interface operations { }; }; /** - * Mark notification as acknowledged - * @description Mark a specific notification as acknowledged. + * Unregister agent + * @description Unregister an agent and disconnect it from the platform. Type is automatically inferred from the agent ID. */ - notifications_mark_acknowledged: { + agent_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 notifications_mark_acknowledged */ + /** @description Request body for agent_unregister */ requestBody: { content: { /** * @example { - * "tool": "notifications_mark_acknowledged", + * "tool": "agent_unregister", * "arguments": { - * "notificationId": "example_id_123" + * "agentId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'notifications_mark_acknowledged'; - arguments: components['schemas']['MarkNotificationAcknowledgedInput']; + tool: 'agent_unregister'; + arguments: components['schemas']['UnregisterAgentInput']; }; }; }; @@ -3037,7 +6771,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['NotificationsMarkAcknowledged']; + structuredContent: components['schemas']['AgentUnregister']; }; }; }; @@ -3062,29 +6796,31 @@ export interface operations { }; }; /** - * Mark all notifications as read - * @description Mark all notifications for the authenticated user as read. + * Update agent + * @description Update agent configuration and credentials. Type is automatically inferred from the agent ID. */ - notifications_mark_all_read: { + 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 notifications_mark_all_read */ + /** @description Request body for agent_update */ requestBody: { content: { /** * @example { - * "tool": "notifications_mark_all_read", - * "arguments": {} + * "tool": "agent_update", + * "arguments": { + * "agentId": "example_id_123" + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'notifications_mark_all_read'; - arguments: components['schemas']['MarkAllNotificationsReadInput']; + tool: 'agent_update'; + arguments: components['schemas']['UpdateAgentInput']; }; }; }; @@ -3094,7 +6830,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['NotificationsMarkAllRead']; + structuredContent: components['schemas']['AgentUpdate']; }; }; }; @@ -3119,32 +6855,31 @@ export interface operations { }; }; /** - * Discover media products - * @description Discover available media products from connected sales agents based on targeting criteria. + * Get tactic + * @description Get detailed information about a specific tactic. */ - media_product_discover: { + 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 media_product_discover */ + /** @description Request body for tactic_get */ requestBody: { content: { /** * @example { - * "tool": "media_product_discover", + * "tool": "tactic_get", * "arguments": { - * "brief": "string", - * "brandManifestUrl": "https://example.com" + * "tacticId": 100 * } * } */ 'application/json': { /** @enum {string} */ - tool: 'media_product_discover'; - arguments: components['schemas']['DiscoverProductsInput']; + tool: 'tactic_get'; + arguments: components['schemas']['GetTacticInput']; }; }; }; @@ -3154,7 +6889,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaProductDiscover']; + structuredContent: components['schemas']['TacticGetOutput']; }; }; }; @@ -3179,38 +6914,29 @@ export interface operations { }; }; /** - * Save media product - * @description Save a discovered media product for future use in media buys. + * List tactics + * @description List all tactics with optional filtering by brand agent or campaign. */ - media_product_save: { + 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 media_product_save */ + /** @description Request body for tactic_list */ 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" - * } + * "tool": "tactic_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'media_product_save'; - arguments: components['schemas']['SaveProductInput']; + tool: 'tactic_list'; + arguments: components['schemas']['ListTacticsInput']; }; }; }; @@ -3220,7 +6946,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaProductSave']; + structuredContent: components['schemas']['TacticList']; }; }; }; @@ -3245,29 +6971,35 @@ export interface operations { }; }; /** - * List media products - * @description List saved media products with optional filtering. + * Register webhook + * @description Register a webhook to receive real-time notifications about events. */ - media_product_list: { + 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 media_product_list */ + /** @description Request body for webhook_register */ requestBody: { content: { /** * @example { - * "tool": "media_product_list", - * "arguments": {} + * "tool": "webhook_register", + * "arguments": { + * "endpoint": { + * "url": "https://example.com", + * "method": "POST" + * }, + * "eventTypes": [] + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'media_product_list'; - arguments: components['schemas']['ListProductsInput']; + tool: 'webhook_register'; + arguments: components['schemas']['RegisterWebhookInput']; }; }; }; @@ -3277,7 +7009,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaProductList']; + structuredContent: components['schemas']['WebhookRegister']; }; }; }; @@ -3302,31 +7034,29 @@ export interface operations { }; }; /** - * Sync media products - * @description Synchronize media product catalog from connected sales agents. + * List webhooks + * @description List all registered webhooks. */ - media_product_sync: { + 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 media_product_sync */ + /** @description Request body for webhook_list */ requestBody: { content: { /** * @example { - * "tool": "media_product_sync", - * "arguments": { - * "sourceId": "example_id_123" - * } + * "tool": "webhook_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'media_product_sync'; - arguments: components['schemas']['SyncProductsInput']; + tool: 'webhook_list'; + arguments: components['schemas']['ListWebhooksInput']; }; }; }; @@ -3336,7 +7066,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaProductSync']; + structuredContent: components['schemas']['WebhookList']; }; }; }; @@ -3361,31 +7091,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. + * Delete webhook + * @description Delete a registered webhook. */ - agent_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 agent_get */ + /** @description Request body for webhook_delete */ requestBody: { content: { /** * @example { - * "tool": "agent_get", + * "tool": "webhook_delete", * "arguments": { - * "agentId": "example_id_123" + * "webhookId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'agent_get'; - arguments: components['schemas']['GetAgentInput']; + tool: 'webhook_delete'; + arguments: components['schemas']['DeleteWebhookInput']; }; }; }; @@ -3395,7 +7125,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['AgentGet']; + structuredContent: components['schemas']['WebhookDelete']; }; }; }; @@ -3420,29 +7150,31 @@ 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. + * 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. */ - agent_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 agent_list */ + /** @description Request body for service_token_create */ requestBody: { content: { /** * @example { - * "tool": "agent_list", - * "arguments": {} + * "tool": "service_token_create", + * "arguments": { + * "name": "Example Name" + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'agent_list'; - arguments: components['schemas']['ListAgentsInput']; + tool: 'service_token_create'; + arguments: components['schemas']['CreateServiceTokenInput']; }; }; }; @@ -3452,7 +7184,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['AgentList']; + structuredContent: components['schemas']['CreateServiceTokenOutput']; }; }; }; @@ -3477,34 +7209,29 @@ export interface operations { }; }; /** - * Register agent - * @description Register a new agent for media buying (SALES type) or outcome optimization (OUTCOME type). + * List service tokens + * @description List all service tokens for the authenticated customer. Secrets are never returned, only metadata. */ - agent_register: { + 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 agent_register */ + /** @description Request body for service_token_list */ requestBody: { content: { /** * @example { - * "tool": "agent_register", - * "arguments": { - * "type": "SALES", - * "name": "Example Name", - * "endpointUrl": "https://example.com", - * "protocol": "MCP" - * } + * "tool": "service_token_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'agent_register'; - arguments: components['schemas']['RegisterAgentInput']; + tool: 'service_token_list'; + arguments: components['schemas']['ListServiceTokensInput']; }; }; }; @@ -3514,7 +7241,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['AgentRegister']; + structuredContent: components['schemas']['ListServiceTokensOutput']; }; }; }; @@ -3539,31 +7266,31 @@ export interface operations { }; }; /** - * Unregister agent - * @description Unregister an agent and disconnect it from the platform. Type is automatically inferred from the agent ID. + * Get service token + * @description Get detailed information about a specific service token. The secret is never returned. */ - agent_unregister: { + 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 agent_unregister */ + /** @description Request body for service_token_get */ requestBody: { content: { /** * @example { - * "tool": "agent_unregister", + * "tool": "service_token_get", * "arguments": { - * "agentId": "example_id_123" + * "id": "1234567890" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'agent_unregister'; - arguments: components['schemas']['UnregisterAgentInput']; + tool: 'service_token_get'; + arguments: components['schemas']['GetServiceTokenInput']; }; }; }; @@ -3573,7 +7300,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['AgentUnregister']; + structuredContent: components['schemas']['GetServiceTokenOutput']; }; }; }; @@ -3598,31 +7325,31 @@ export interface operations { }; }; /** - * Update agent - * @description Update agent configuration and credentials. Type is automatically inferred from the agent ID. + * Update service token + * @description Update a service token. Only name, description, and expiration can be modified. */ - agent_update: { + 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 agent_update */ + /** @description Request body for service_token_update */ requestBody: { content: { /** * @example { - * "tool": "agent_update", + * "tool": "service_token_update", * "arguments": { - * "agentId": "example_id_123" + * "id": "1234567890" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'agent_update'; - arguments: components['schemas']['UpdateAgentInput']; + tool: 'service_token_update'; + arguments: components['schemas']['UpdateServiceTokenInput']; }; }; }; @@ -3632,7 +7359,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['AgentUpdate']; + structuredContent: components['schemas']['UpdateServiceTokenOutput']; }; }; }; @@ -3657,32 +7384,31 @@ export interface operations { }; }; /** - * Create tactic - * @description Create a new tactic defining how to achieve campaign objectives. + * Archive service token + * @description Archive (soft delete) a service token. This immediately invalidates the token for authentication. */ - tactic_create: { + 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 tactic_create */ + /** @description Request body for service_token_archive */ requestBody: { content: { /** * @example { - * "tool": "tactic_create", + * "tool": "service_token_archive", * "arguments": { - * "campaignId": "example_id_123", - * "name": "Example Name" + * "id": "1234567890" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'tactic_create'; - arguments: components['schemas']['CreateTacticInput']; + tool: 'service_token_archive'; + arguments: components['schemas']['ArchiveServiceTokenInput']; }; }; }; @@ -3692,7 +7418,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['TacticCreate']; + structuredContent: components['schemas']['ArchiveServiceTokenOutput']; }; }; }; @@ -3717,31 +7443,29 @@ export interface operations { }; }; /** - * Update tactic - * @description Update an existing tactic with new targeting, budget, or creative requirements. + * Get customer info + * @description Get detailed information about a customer from the core database. */ - tactic_update: { + 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 tactic_update */ + /** @description Request body for customer_get */ requestBody: { content: { /** * @example { - * "tool": "tactic_update", - * "arguments": { - * "tacticId": 100 - * } + * "tool": "customer_get", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'tactic_update'; - arguments: components['schemas']['UpdateTacticInput']; + tool: 'customer_get'; + arguments: components['schemas']['GetCustomerInput']; }; }; }; @@ -3751,7 +7475,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['TacticGetOutput']; + structuredContent: components['schemas']['GetCustomerOutput']; }; }; }; @@ -3776,32 +7500,29 @@ export interface operations { }; }; /** - * Delete tactic - * @description Delete a tactic and all associated media buys. + * Get customer seats + * @description Get all seats associated with a customer from the core database. */ - tactic_delete: { + 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 tactic_delete */ + /** @description Request body for customer_get_seats */ requestBody: { content: { /** * @example { - * "tool": "tactic_delete", - * "arguments": { - * "tacticId": 100, - * "confirm": true - * } + * "tool": "customer_get_seats", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'tactic_delete'; - arguments: components['schemas']['DeleteTacticInput']; + tool: 'customer_get_seats'; + arguments: components['schemas']['GetCustomerSeatsInput']; }; }; }; @@ -3811,7 +7532,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['TacticDelete']; + structuredContent: components['schemas']['GetCustomerSeatsOutput']; }; }; }; @@ -3836,31 +7557,29 @@ export interface operations { }; }; /** - * Get tactic - * @description Get detailed information about a specific tactic. + * List seats + * @description List all seats the authenticated user has access to, including seat members, agents, and brand agents. */ - tactic_get: { + seat_details_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_get */ + /** @description Request body for seat_details_list */ requestBody: { content: { /** * @example { - * "tool": "tactic_get", - * "arguments": { - * "tacticId": 100 - * } + * "tool": "seat_details_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'tactic_get'; - arguments: components['schemas']['GetTacticInput']; + tool: 'seat_details_list'; + arguments: components['schemas']['ListSeatsInput']; }; }; }; @@ -3870,7 +7589,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['TacticGetOutput']; + structuredContent: components['schemas']['ListSeatsOutput']; }; }; }; @@ -3895,29 +7614,31 @@ export interface operations { }; }; /** - * List tactics - * @description List all tactics with optional filtering by brand agent or campaign. + * Get seat details + * @description Get detailed information about a specific seat including members, agents, and brand agents. */ - tactic_list: { + seat_details_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_list */ + /** @description Request body for seat_details_get */ requestBody: { content: { /** * @example { - * "tool": "tactic_list", - * "arguments": {} + * "tool": "seat_details_get", + * "arguments": { + * "seatId": "example_id_123" + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'tactic_list'; - arguments: components['schemas']['ListTacticsInput']; + tool: 'seat_details_get'; + arguments: components['schemas']['GetSeatInput']; }; }; }; @@ -3927,7 +7648,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['TacticList']; + structuredContent: components['schemas']['GetSeatOutput']; }; }; }; @@ -3952,32 +7673,32 @@ export interface operations { }; }; /** - * Link tactic to campaign - * @description Link a tactic to a campaign. + * Create seat + * @description Create a new seat under the authenticated user's customer. Requires ADMIN or SUPER_ADMIN role. */ - tactic_link_campaign: { + seat_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_link_campaign */ + /** @description Request body for seat_create */ requestBody: { content: { /** * @example { - * "tool": "tactic_link_campaign", + * "tool": "seat_create", * "arguments": { - * "tacticId": 100, - * "campaignId": "example_id_123" + * "name": "Example Name", + * "type": "BUYER" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'tactic_link_campaign'; - arguments: components['schemas']['LinkCampaignToTacticInput']; + tool: 'seat_create'; + arguments: components['schemas']['CreateSeatInput']; }; }; }; @@ -3987,7 +7708,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['TacticLinkCampaign']; + structuredContent: components['schemas']['CreateSeatOutput']; }; }; }; @@ -4012,32 +7733,32 @@ export interface operations { }; }; /** - * Unlink tactic from campaign - * @description Unlink a tactic from a campaign. + * Update seat + * @description Update an existing seat. Requires ADMIN role on the seat or SUPER_ADMIN. */ - tactic_unlink_campaign: { + seat_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 tactic_unlink_campaign */ + /** @description Request body for seat_update */ requestBody: { content: { /** * @example { - * "tool": "tactic_unlink_campaign", + * "tool": "seat_update", * "arguments": { - * "tacticId": 100, - * "campaignId": "example_id_123" + * "seatId": "example_id_123", + * "name": "Example Name" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'tactic_unlink_campaign'; - arguments: components['schemas']['UnlinkCampaignFromTacticInput']; + tool: 'seat_update'; + arguments: components['schemas']['UpdateSeatInput']; }; }; }; @@ -4047,7 +7768,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['TacticUnlinkCampaign']; + structuredContent: components['schemas']['UpdateSeatOutput']; }; }; }; @@ -4072,35 +7793,31 @@ export interface operations { }; }; /** - * Register webhook - * @description Register a webhook to receive real-time notifications about events. + * Delete seat + * @description Delete a seat. Requires ADMIN role on the seat or SUPER_ADMIN. This operation cannot be undone. */ - webhook_register: { + seat_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 webhook_register */ + /** @description Request body for seat_delete */ requestBody: { content: { /** * @example { - * "tool": "webhook_register", + * "tool": "seat_delete", * "arguments": { - * "endpoint": { - * "url": "https://example.com", - * "method": "POST" - * }, - * "eventTypes": [] + * "seatId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'webhook_register'; - arguments: components['schemas']['RegisterWebhookInput']; + tool: 'seat_delete'; + arguments: components['schemas']['DeleteSeatInput']; }; }; }; @@ -4110,7 +7827,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['WebhookRegister']; + structuredContent: components['schemas']['DeleteSeatOutput']; }; }; }; @@ -4135,29 +7852,33 @@ export interface operations { }; }; /** - * List webhooks - * @description List all registered webhooks. + * Add seat member + * @description Add a user as a member to a seat with a specified role (ADMIN, READ_WRITE, or READ). Requires ADMIN role on the seat or SUPER_ADMIN. */ - webhook_list: { + seat_member_add: { 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 seat_member_add */ requestBody: { content: { /** * @example { - * "tool": "webhook_list", - * "arguments": {} + * "tool": "seat_member_add", + * "arguments": { + * "seatId": "example_id_123", + * "userId": "example_id_123", + * "role": "ADMIN" + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'webhook_list'; - arguments: components['schemas']['ListWebhooksInput']; + tool: 'seat_member_add'; + arguments: components['schemas']['AddSeatMemberInput']; }; }; }; @@ -4167,7 +7888,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['WebhookList']; + structuredContent: components['schemas']['AddSeatMemberOutput']; }; }; }; @@ -4192,31 +7913,33 @@ export interface operations { }; }; /** - * Delete webhook - * @description Delete a registered webhook. + * Update seat member role + * @description Update the role of a seat member. Requires ADMIN role on the seat or SUPER_ADMIN. */ - webhook_delete: { + seat_member_update_role: { 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 seat_member_update_role */ requestBody: { content: { /** * @example { - * "tool": "webhook_delete", + * "tool": "seat_member_update_role", * "arguments": { - * "webhookId": "example_id_123" + * "seatId": "example_id_123", + * "userId": "example_id_123", + * "role": "ADMIN" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'webhook_delete'; - arguments: components['schemas']['DeleteWebhookInput']; + tool: 'seat_member_update_role'; + arguments: components['schemas']['UpdateSeatMemberRoleInput']; }; }; }; @@ -4226,7 +7949,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['WebhookDelete']; + structuredContent: components['schemas']['UpdateSeatMemberRoleOutput']; }; }; }; @@ -4251,31 +7974,32 @@ 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. + * Remove seat member + * @description Remove a user from a seat. Requires ADMIN role on the seat or SUPER_ADMIN. */ - service_token_create: { + seat_member_remove: { 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 seat_member_remove */ requestBody: { content: { /** * @example { - * "tool": "service_token_create", + * "tool": "seat_member_remove", * "arguments": { - * "name": "Example Name" + * "seatId": "example_id_123", + * "userId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'service_token_create'; - arguments: components['schemas']['CreateServiceTokenInput']; + tool: 'seat_member_remove'; + arguments: components['schemas']['RemoveSeatMemberInput']; }; }; }; @@ -4285,7 +8009,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreateServiceTokenOutput']; + structuredContent: components['schemas']['RemoveSeatMemberOutput']; }; }; }; @@ -4310,29 +8034,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 +8071,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['ListServiceTokensOutput']; + structuredContent: components['schemas']['SignalCreate']; }; }; }; @@ -4367,31 +8096,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 +8130,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['GetServiceTokenOutput']; + structuredContent: components['schemas']['SignalGet']; }; }; }; @@ -4426,31 +8155,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 +8189,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['UpdateServiceTokenOutput']; + structuredContent: components['schemas']['SignalUpdate']; }; }; }; @@ -4485,31 +8214,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 +8248,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['ArchiveServiceTokenOutput']; + structuredContent: components['schemas']['SignalDelete']; }; }; }; @@ -4544,29 +8273,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 +8305,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['GetCustomerOutput']; + structuredContent: components['schemas']['SignalList']; }; }; }; @@ -4601,29 +8330,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 +8362,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..67fbde8 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,112 @@ export interface paths { */ post: operations['customer_get_seats']; }; + '/seat-details-list': { + /** + * List seats + * @description List all seats the authenticated user has access to, including seat members, agents, and brand agents. + */ + post: operations['seat_details_list']; + }; + '/seat-details-get': { + /** + * Get seat details + * @description Get detailed information about a specific seat including members, agents, and brand agents. + */ + post: operations['seat_details_get']; + }; + '/seat-create': { + /** + * Create seat + * @description Create a new seat under the authenticated user's customer. Requires ADMIN or SUPER_ADMIN role. + */ + post: operations['seat_create']; + }; + '/seat-update': { + /** + * Update seat + * @description Update an existing seat. Requires ADMIN role on the seat or SUPER_ADMIN. + */ + post: operations['seat_update']; + }; + '/seat-delete': { + /** + * Delete seat + * @description Delete a seat. Requires ADMIN role on the seat or SUPER_ADMIN. This operation cannot be undone. + */ + post: operations['seat_delete']; + }; + '/seat-member-add': { + /** + * Add seat member + * @description Add a user as a member to a seat with a specified role (ADMIN, READ_WRITE, or READ). Requires ADMIN role on the seat or SUPER_ADMIN. + */ + post: operations['seat_member_add']; + }; + '/seat-member-update-role': { + /** + * Update seat member role + * @description Update the role of a seat member. Requires ADMIN role on the seat or SUPER_ADMIN. + */ + post: operations['seat_member_update_role']; + }; + '/seat-member-remove': { + /** + * Remove seat member + * @description Remove a user from a seat. Requires ADMIN role on the seat or SUPER_ADMIN. + */ + post: operations['seat_member_remove']; + }; + '/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 +616,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 +856,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 +870,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 +1113,646 @@ 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; }; - /** - * @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; + assets: { + [key: string]: + | { + url: string; + width: number; + height: number; + format?: string | null; + alt_text?: string | null; + } + | { + url: string; + width: number; + height: number; + 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 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]: + | { + url: string; + width: number; + height: number; + format?: string | null; + alt_text?: string | null; + } + | { + url: string; + width: number; + height: number; + 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,55 +1763,909 @@ 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 Media buy description + * @example string + */ + description?: string; + /** + * @description Products to include (converted to packages on execution) + * @example [] + */ + 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]: + | { + url: string; + width: number; + height: number; + format?: string | null; + alt_text?: string | null; + } + | { + url: string; + width: number; + height: number; + 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 Optional inline creatives + * @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]: + | { + url: string; + width: number; + height: number; + format?: string | null; + alt_text?: string | null; + } + | { + url: string; + width: number; + height: number; + 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 */ @@ -1064,6 +2715,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 +2774,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,125 +2802,501 @@ 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: { + ListSeatsInput: { /** - * Format: int64 - * @description The unique identifier of the service token to retrieve + * @description The unique identifier of the user to get seats for. If not provided, uses the authenticated user ID. * @example 100 */ - id: number; + userId?: number; /** - * @description Whether to fetch the access_client_secret from Google Secret Manager. Defaults to false for security - * @default false + * @description The unique identifier of the customer to filter seats by. If not provided, uses the authenticated users customer ID. + * @example 100 */ - includeSecret?: boolean; + customerId?: number; }; - ListServiceTokensInput: { + GetSeatInput: { /** - * @description Whether to include archived tokens in the response - * @default false + * @description The unique identifier of the seat to retrieve + * @example example_id_123 */ - includeArchived?: boolean; + seatId: string; + }; + CreateSeatInput: { /** - * Format: int64 - * @description Filter tokens by seat ID - * @example 100 + * @description Name for the new seat + * @example Example Name */ - seatId?: number; + name: string; /** - * Format: int64 - * @description Filter tokens by user ID - * @example 100 + * @description Type of seat to create + * @example BUYER + * @enum {string} */ - userId?: number; + type: 'BUYER' | 'ACTIVATION'; }; - BrandAgentUpdate: { - /** @example 100 */ - id: number; - /** @example Example Name */ - name: string; - /** @example string */ - description?: string; + UpdateSeatInput: { /** - * Format: uri - * @example https://example.com + * @description The ID of the seat to update + * @example example_id_123 */ - manifestUrl?: string; - /** @example 100 */ - customerId: number; + seatId: string; /** - * Format: date-time + * @description New name for the seat + * @example Example Name + */ + name: string; + }; + DeleteSeatInput: { + /** + * @description The ID of the seat to delete + * @example example_id_123 + */ + seatId: string; + }; + AddSeatMemberInput: { + /** + * @description The ID of the seat to add the member to + * @example example_id_123 + */ + seatId: string; + /** + * @description The ID of the user to add to the seat + * @example example_id_123 + */ + userId: string; + /** + * @description The role to assign to the user + * @example ADMIN + * @enum {string} + */ + role: 'ADMIN' | 'READ_WRITE' | 'READ'; + }; + UpdateSeatMemberRoleInput: { + /** + * @description The ID of the seat + * @example example_id_123 + */ + seatId: string; + /** + * @description The ID of the user whose role to update + * @example example_id_123 + */ + userId: string; + /** + * @description The new role for the user + * @example ADMIN + * @enum {string} + */ + role: 'ADMIN' | 'READ_WRITE' | 'READ'; + }; + RemoveSeatMemberInput: { + /** + * @description The ID of the seat + * @example example_id_123 + */ + seatId: string; + /** + * @description The ID of the user to remove from the seat + * @example example_id_123 + */ + userId: string; + }; + 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 [] + */ + languages?: 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 (validated against targeting_dimension table) + * @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[]; + }; + 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 */ + name: string; + /** @example string */ + description?: string; + /** + * Format: uri + * @example https://example.com + */ + manifestUrl?: string; + /** @example 100 */ + customerId: number; + /** + * Format: int64 + * @example 100 + */ + seatId?: number | null; + /** @example [] */ + countryCodes?: string[]; + /** + * Format: date-time * @example string */ createdAt: string; @@ -1290,121 +3361,1087 @@ export interface components { }; CreativeGet: { /** @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]: + | { + url: string; + width: number; + height: number; + format?: string | null; + alt_text?: string | null; + } + | { + url: string; + width: number; + height: number; + 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; }; 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]: + | { + url: string; + width: number; + height: number; + format?: string | null; + alt_text?: string | null; + } + | { + url: string; + width: number; + height: number; + 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]: + | { + url: string; + width: number; + height: number; + format?: string | null; + alt_text?: string | null; + } + | { + url: string; + width: number; + height: number; + 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 +4458,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 +4739,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 +4751,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 +4851,835 @@ 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]: + | { + url: string; + width: number; + height: number; + format?: string | null; + alt_text?: string | null; + } + | { + url: string; + width: number; + height: number; + 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]: + | { + url: string; + width: number; + height: number; + format?: string | null; + alt_text?: string | null; + } + | { + url: string; + width: number; + height: number; + 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,26 +5798,566 @@ 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[] + 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; - }[]; + 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; + }[]; + /** @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: @@ -1873,7 +6365,7 @@ export interface components { agentId: string; name: string; /** @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; status: string; relationship: string; endpointUrl: string; @@ -1891,7 +6383,7 @@ export interface components { agentId: string; name: string; /** @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; status: string; relationship: string; endpointUrl: string; @@ -1905,6 +6397,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 */ @@ -1915,7 +6411,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 +6421,7 @@ export interface components { agentId: string; name: string; /** @enum {string} */ - type: 'SALES' | 'OUTCOME'; + type: 'SALES' | 'OUTCOME' | 'SIGNAL'; status: string; relationship: string; endpointUrl: string; @@ -1934,82 +6430,454 @@ export interface components { } )[]; }; - TacticList: { + AgentAccountList: { /** @example 100 */ total: number; /** @example [] */ - items: components['schemas']['TacticGetOutput'][]; + items: { + id: string; + accountIdentifier: string; + status: string; + registeredBy?: string; + /** Format: date-time */ + createdAt: string; + /** Format: date-time */ + updatedAt: string; + }[]; }; - CreateServiceTokenOutput: { + 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; + }; + ListSeatsOutput: { /** - * Format: int64 - * @description Unique identifier for the service token + * @description The user ID these seats belong to * @example 100 */ - id: number; + userId?: number; /** - * @description Customer ID that owns this token + * @description The customer ID these seats belong to * @example 100 */ customerId: number; /** - * Format: int64 - * @description Seat ID if token is scoped to a specific seat - * @example 100 + * @description Array of seats the user has access to + * @example [] */ - seatId?: number; + seats: { + /** @description Unique identifier for the seat */ + id: string; + /** @description Seat display name */ + name: string; + /** @description Customer ID that owns this seat */ + customerId: number; + /** @description Whether the seat is currently active */ + active: boolean; + /** + * @description Seat type + * @enum {string} + */ + type: 'BUYER' | 'ACTIVATION'; + /** + * Format: date-time + * @description ISO 8601 timestamp when the seat was created + */ + createdAt: string; + /** + * Format: date-time + * @description ISO 8601 timestamp when the seat was created + */ + updatedAt: string; + /** + * @description The authenticated users role within this seat, if applicable + * @enum {string} + */ + userRole?: 'ADMIN' | 'READ_WRITE' | 'READ'; + /** @description All users associated with this seat */ + members: { + /** @description Unique identifier for the user */ + userId: number; + /** + * Format: email + * @description User email address + */ + email: string; + /** @description User full name */ + name: string; + /** @description User created at */ + createdAt: string; + /** @description User updated at */ + updatedAt: string; + /** @description Date user was added to seat */ + createdSeatAt: string; + /** @description Date user seat permission was last updated */ + updatedSeatAt: string; + /** + * @description User role within this seat + * @enum {string} + */ + role: 'ADMIN' | 'READ' | 'READ_WRITE'; + }[]; + /** @description All agents associated with this seat */ + agents: { + /** + * Format: int64 + * @description Unique db identifier for the agent + */ + id: number; + /** @description Unique identifier for the agent */ + agentId?: string; + /** @description Agent name */ + name: string; + /** @description Agent type (e.g., DECISIONING) */ + type: string; + /** @description Customer ID that owns this agent */ + customerId: number; + /** + * Format: int64 + * @description Seat ID from adcp_agent table if applicable + */ + seatId?: number | null; + /** @description created at */ + createdAt: string; + /** @description updated at */ + updatedAt: string; + /** @description Number of active campaigns for this agent */ + activeCampaignsCount: number; + /** @description Number of active tactics for this agent */ + activeTacticsCount: number; + /** @description Number of active media buys for this agent */ + activeMediaBuysCount: number; + }[]; + /** @description All brand agents associated with this seat */ + brandAgents: { + /** + * Format: int64 + * @description Unique identifier for the agent + */ + id: number; + /** @description Agent name */ + name: string; + /** @description Agent type (e.g., DECISIONING) */ + type: string; + /** @description Customer ID that owns this agent */ + customerId: number; + /** + * Format: int64 + * @description Seat ID from adcp_agent table if applicable + */ + seatId?: number | null; + /** @description created at */ + createdAt: string; + /** @description updated at */ + updatedAt: string; + /** @description Number of active campaigns for this agent */ + activeCampaignsCount: number; + /** @description Number of active tactics for this agent */ + activeTacticsCount: number; + /** @description Number of active media buys for this agent */ + activeMediaBuysCount: number; + }[]; + }[]; /** - * Format: int64 - * @description User ID if token is scoped to a specific user + * @description Total number of seats returned * @example 100 */ - userId?: number; + count: number; + }; + GetSeatOutput: { + /** @description The seat details */ + seat: { + /** @description Unique identifier for the seat */ + id: string; + /** @description Seat display name */ + name: string; + /** @description Customer ID that owns this seat */ + customerId: number; + /** @description Whether the seat is currently active */ + active: boolean; + /** + * @description Seat type + * @enum {string} + */ + type: 'BUYER' | 'ACTIVATION'; + /** + * Format: date-time + * @description ISO 8601 timestamp when the seat was created + */ + createdAt: string; + /** + * Format: date-time + * @description ISO 8601 timestamp when the seat was created + */ + updatedAt: string; + /** + * @description The authenticated users role within this seat, if applicable + * @enum {string} + */ + userRole?: 'ADMIN' | 'READ_WRITE' | 'READ'; + /** @description All users associated with this seat */ + members: { + /** @description Unique identifier for the user */ + userId: number; + /** + * Format: email + * @description User email address + */ + email: string; + /** @description User full name */ + name: string; + /** @description User created at */ + createdAt: string; + /** @description User updated at */ + updatedAt: string; + /** @description Date user was added to seat */ + createdSeatAt: string; + /** @description Date user seat permission was last updated */ + updatedSeatAt: string; + /** + * @description User role within this seat + * @enum {string} + */ + role: 'ADMIN' | 'READ' | 'READ_WRITE'; + }[]; + /** @description All agents associated with this seat */ + agents: { + /** + * Format: int64 + * @description Unique db identifier for the agent + */ + id: number; + /** @description Unique identifier for the agent */ + agentId?: string; + /** @description Agent name */ + name: string; + /** @description Agent type (e.g., DECISIONING) */ + type: string; + /** @description Customer ID that owns this agent */ + customerId: number; + /** + * Format: int64 + * @description Seat ID from adcp_agent table if applicable + */ + seatId?: number | null; + /** @description created at */ + createdAt: string; + /** @description updated at */ + updatedAt: string; + /** @description Number of active campaigns for this agent */ + activeCampaignsCount: number; + /** @description Number of active tactics for this agent */ + activeTacticsCount: number; + /** @description Number of active media buys for this agent */ + activeMediaBuysCount: number; + }[]; + /** @description All brand agents associated with this seat */ + brandAgents: { + /** + * Format: int64 + * @description Unique identifier for the agent + */ + id: number; + /** @description Agent name */ + name: string; + /** @description Agent type (e.g., DECISIONING) */ + type: string; + /** @description Customer ID that owns this agent */ + customerId: number; + /** + * Format: int64 + * @description Seat ID from adcp_agent table if applicable + */ + seatId?: number | null; + /** @description created at */ + createdAt: string; + /** @description updated at */ + updatedAt: string; + /** @description Number of active campaigns for this agent */ + activeCampaignsCount: number; + /** @description Number of active tactics for this agent */ + activeTacticsCount: number; + /** @description Number of active media buys for this agent */ + activeMediaBuysCount: number; + }[]; + }; + }; + CreateSeatOutput: { /** - * @description Optional organization identifier for scoping the token + * @description The ID of the created seat * @example example_id_123 */ - organizationId?: string; + id: string; + }; + UpdateSeatOutput: { /** - * @description Human-readable name of the token - * @example Example Name + * @description Whether the update was successful + * @example true */ - name: string; + success: boolean; + }; + DeleteSeatOutput: { /** - * @description Description of the token purpose - * @example string + * @description Whether the deletion was successful + * @example true */ - description?: string; + success: boolean; + }; + AddSeatMemberOutput: { /** - * @description The public client ID portion of the token credentials (safe to log) - * @example example_id_123 + * @description Whether the member was added successfully + * @example true */ - accessClientId: string; + success: boolean; + }; + UpdateSeatMemberRoleOutput: { /** - * @description The secret portion of the token credentials. ONLY returned on creation, never retrievable again! - * @example string + * @description Whether the role was updated successfully + * @example true */ - accessClientSecret: string; + success: boolean; + }; + RemoveSeatMemberOutput: { /** - * Format: date-time - * @description ISO 8601 timestamp when the token expires, if set - * @example string + * @description Whether the member was removed successfully + * @example true */ - expiresAt?: string; + success: boolean; + }; + 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 - * @description ISO 8601 timestamp when the token was created * @example string */ createdAt: string; }; - UpdateServiceTokenOutput: { - /** - * Format: int64 - * @description Unique identifier for the service token - * @example 100 - */ - id: number; - /** + 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 + * @description Unique identifier for the service token + * @example 100 + */ + id: number; + /** + * @description Customer ID that owns this token + * @example 100 + */ + customerId: number; + /** + * Format: int64 + * @description Seat ID if token is scoped to a specific seat + * @example 100 + */ + seatId?: number; + /** + * Format: int64 + * @description User ID if token is scoped to a specific user + * @example 100 + */ + userId?: number; + /** + * @description Optional organization identifier for scoping the token + * @example example_id_123 + */ + organizationId?: string; + /** + * @description Human-readable name of the token + * @example Example Name + */ + name: string; + /** + * @description Description of the token purpose + * @example string + */ + description?: string; + /** + * @description The public client ID portion of the token credentials (safe to log) + * @example example_id_123 + */ + accessClientId: string; + /** + * @description The secret portion of the token credentials. ONLY returned on creation, never retrievable again! + * @example string + */ + accessClientSecret: string; + /** + * Format: date-time + * @description ISO 8601 timestamp when the token expires, if set + * @example string + */ + expiresAt?: string; + /** + * Format: date-time + * @description ISO 8601 timestamp when the token was created + * @example string + */ + createdAt: string; + }; + UpdateServiceTokenOutput: { + /** + * Format: int64 + * @description Unique identifier for the service token + * @example 100 + */ + id: number; + /** * @description Updated human-readable name of the token * @example Example Name */ @@ -2145,6 +7013,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 +7049,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 +7765,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 +7802,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 +7875,1087 @@ export interface components { }; CreativeGetOutput: { /** @example example_id_123 */ - creativeId: string; + creative_id: string; /** @example Example Name */ name: string; - /** @example string */ + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | { + url: string; + width: number; + height: number; + format?: string | null; + alt_text?: string | null; + } + | { + url: string; + width: number; + height: number; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + url: string; + duration_ms?: number | null; + format?: string | null; + bitrate_kbps?: number | null; + } + | { + content: string; + language?: string | null; + } + | { + content: string; + version?: string | null; + } + | { + content: string; + media?: string | null; + } + | { + content: string; + module_type?: ('esm' | 'commonjs' | 'script') | null; + } + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + vast_version?: ('2.0' | '3.0' | '4.0' | '4.1' | '4.2') | null; + vpaid_enabled?: boolean | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'click' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + | 'fullscreen' + | 'exitFullscreen' + | 'playerExpand' + | 'playerCollapse' + )[] + | null; + } + ) + | ( + | { + /** @enum {string} */ + delivery_type: 'url'; + url: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + | { + /** @enum {string} */ + delivery_type: 'inline'; + content: string; + daast_version?: ('1.0' | '1.1') | null; + duration_ms?: number | null; + tracking_events?: + | ( + | 'start' + | 'firstQuartile' + | 'midpoint' + | 'thirdQuartile' + | 'complete' + | 'impression' + | 'pause' + | 'resume' + | 'skip' + | 'mute' + | 'unmute' + )[] + | null; + companion_ads?: boolean | null; + } + ) + | { + brand_manifest: + | { + url?: string | null; + name: string; + logos?: + | { + url: string; + tags?: string[] | null; + width?: number | null; + height?: number | null; + }[] + | null; + colors?: { + primary?: string | null; + secondary?: string | null; + accent?: string | null; + background?: string | null; + text?: string | null; + } | null; + fonts?: { + primary?: string | null; + secondary?: string | null; + font_urls?: string[] | null; + } | null; + tone?: string | null; + tagline?: string | null; + assets?: + | { + asset_id: string; + asset_type: + | 'image' + | 'video' + | 'audio' + | 'text' + | 'markdown' + | 'html' + | 'css' + | 'javascript' + | 'vast' + | 'daast' + | 'promoted_offerings' + | 'url' + | 'webhook'; + url: string; + tags?: string[] | null; + name?: string | null; + description?: string | null; + width?: number | null; + height?: number | null; + duration_seconds?: number | null; + file_size_bytes?: number | null; + format?: string | null; + metadata?: { + [key: string]: unknown; + } | null; + }[] + | null; + product_catalog?: { + feed_url: string; + feed_format?: + | ('google_merchant_center' | 'facebook_catalog' | 'custom') + | null; + categories?: string[] | null; + last_updated?: string | null; + update_frequency?: ('realtime' | 'hourly' | 'daily' | 'weekly') | null; + } | null; + disclaimers?: + | { + text: string; + context?: string | null; + required?: boolean | null; + }[] + | null; + industry?: string | null; + target_audience?: string | null; + contact?: { + email?: string | null; + phone?: string | null; + } | null; + metadata?: { + created_date?: string | null; + updated_date?: string | null; + version?: string | null; + } | null; + } + | string; + product_selectors?: { + manifest_skus?: string[] | null; + manifest_tags?: string[] | null; + manifest_category?: string | null; + manifest_query?: string | null; + } | null; + offerings?: + | { + name: string; + description?: string | null; + assets?: + | { + [key: string]: unknown; + }[] + | null; + }[] + | null; + asset_selectors?: { + tags?: string[] | null; + asset_types?: + | ( + | 'image' + | 'video' + | 'audio' + | 'vast' + | 'daast' + | 'text' + | 'url' + | 'html' + | 'css' + | 'javascript' + | 'webhook' + )[] + | null; + exclude_tags?: string[] | null; + } | null; + } + | { + url: string; + url_type?: ('clickthrough' | 'tracker_pixel' | 'tracker_script') | null; + description?: string | null; + }; + }; + /** @example [] */ + inputs?: + | { + name: string; + macros?: { + [key: string]: string; + } | null; + context_description?: string | null; + }[] + | null; + /** @example [] */ + tags?: string[] | null; + /** @example true */ + approved?: boolean | null; + /** @example 100 */ + weight?: number | null; + /** @example [] */ + placement_ids?: string[] | null; + /** + * @description Internal creative status + * @example string + */ status: string; - /** @example example_id_123 */ - campaignId?: string; + /** + * @description Associated campaign ID + * @example example_id_123 + */ + campaign_id?: string; /** * Format: date-time * @example string */ - createdAt: string; + created_at: string; /** * Format: date-time * @example string */ - updatedAt: string; + updated_at: string; }; MediaBuyGetOutput: { - /** @example example_id_123 */ - id: string; - /** @example 100 */ - tacticId: number; - /** @example 100 */ - customerId: number; - /** @example Example Name */ + /** + * @description ADCP media buy identifier + * @example example_id_123 + */ + media_buy_id: string; + /** + * @description Internal tactic ID + * @example 100 + */ + tactic_id: number; + /** + * @description Internal customer ID + * @example 100 + */ + customer_id: number; + /** + * @description Media buy name + * @example Example Name + */ name: string; - /** @example string */ + /** + * @description Media buy description + * @example string + */ description?: string; - /** @example [] */ + /** + * @description Internal status (DRAFT, ACTIVE, PAUSED, etc.) + * @example string + */ + status: string; + /** + * @description Pre-execution product configuration + * @example [] + */ products?: { - mediaProductId: string; - salesAgentId: string; - salesAgentName?: string; - budgetAmount?: number; - budgetCurrency?: string; - pricingCpm?: number; - pricingSignalCost?: number; - displayOrder?: number; - creativeFormats?: { + /** @description ADCP product identifier */ + product_id: string; + sales_agent_id: string; + sales_agent_name?: string; + /** @description ADCP budget field */ + budget?: number; + /** + * @description ADCP pacing field + * @enum {string} + */ + pacing?: 'asap' | 'even' | 'front_loaded'; + pricing_option_id?: string; + bid_price?: number; + display_order?: number; + creative_formats?: { agent_url: string; id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; }[]; }[]; - /** @example [] */ + /** + * @description Post-execution ADCP packages (enriched) + * @example [] + */ packages?: { - packageId: string; - productIds: string[]; - impressions: number; - budget: number; - targetingOverlay: unknown; + package_id: string; + buyer_ref?: string | null; + product_id?: string | null; + budget?: number | null; + pacing?: ('even' | 'asap' | 'front_loaded') | null; + pricing_option_id?: string | null; + bid_price?: number | null; + impressions?: number | null; + targeting_overlay?: { + geo_country_any_of?: string[] | null; + geo_region_any_of?: string[] | null; + geo_metro_any_of?: string[] | null; + geo_postal_code_any_of?: string[] | null; + axe_include_segment?: string | null; + axe_exclude_segment?: string | null; + frequency_cap?: { + suppress_minutes: number; + } | null; + } | null; + creative_assignments?: + | { + creative_id: string; + weight?: number | null; + placement_ids?: string[] | null; + }[] + | null; + format_ids_to_provide?: + | { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }[] + | null; + paused?: boolean | null; + ext?: { + [key: string]: unknown; + } | null; + /** @description Array of product IDs (enriched from joins) */ + product_ids?: string[]; + /** @description Full creative objects (enriched from joins) */ creatives: { - creativeId: string; + creative_id: string; name: string; - formatId: string; - mediaUrl: string; + format_id: { + agent_url: string; + id: string; + width?: number | null; + height?: number | null; + duration_ms?: number | null; + }; + assets: { + [key: string]: + | { + url: string; + width: number; + height: number; + format?: string | null; + alt_text?: string | null; + } + | { + url: string; + width: number; + height: number; + 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]: + | { + url: string; + width: number; + height: number; + format?: string | null; + alt_text?: string | null; + } + | { + url: string; + width: number; + height: number; + 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 +8972,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 +9022,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 +9054,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,33 +9110,1449 @@ 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]: + | { + url: string; + width: number; + height: number; + format?: string | null; + alt_text?: string | null; + } + | { + url: string; + width: number; + height: number; + 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]: + | { + url: string; + width: number; + height: number; + format?: string | null; + alt_text?: string | null; + } + | { + url: string; + width: number; + height: number; + 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 + */ + created_at: string; + /** + * Format: date-time + * @example 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]: + | { + url: string; + width: number; + height: number; + format?: string | null; + alt_text?: string | null; + } + | { + url: string; + width: number; + height: number; + 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]: + | { + url: string; + width: number; + height: number; + format?: string | null; + alt_text?: string | null; + } + | { + url: string; + width: number; + height: number; + 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 @@ -2597,102 +10563,1581 @@ export interface components { * @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']; + }; + }; + }; + }; + /** + * Create brand standards + * @description Create brand standards including guidelines, tone of voice, visual requirements, and content rules for a brand agent. + */ + brand_standards_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_create */ + requestBody: { + content: { + /** + * @example { + * "tool": "brand_standards_create", + * "arguments": { + * "brandAgentId": 100, + * "prompt": "string" + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'brand_standards_create'; + arguments: components['schemas']['CreateBrandStandardInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + 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']; + }; + }; + }; + }; + /** + * Delete brand standards + * @description Delete brand standards for a brand agent. + */ + 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_standards_delete */ + requestBody: { + content: { + /** + * @example { + * "tool": "brand_standards_delete", + * "arguments": { + * "brandStandardId": "example_id_123" + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'brand_standards_delete'; + arguments: components['schemas']['DeleteBrandStandardInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['BrandStandardsDelete']; + }; + }; + }; + /** @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 standards + * @description List all brand standards with optional filtering by brand agent. + */ + 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_standards_list */ + requestBody: { + content: { + /** + * @example { + * "tool": "brand_standards_list", + * "arguments": {} + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'brand_standards_list'; + arguments: components['schemas']['ListBrandStandardsInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['BrandStandardsList']; + }; + }; + }; + /** @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 story + * @description Create a brand story containing the narrative, history, values, and key messaging for a brand agent. + */ + 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_story_create */ + requestBody: { + content: { + /** + * @example { + * "tool": "brand_story_create", + * "arguments": { + * "brandAgentId": null, + * "name": "Example Name", + * "languages": [] + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'brand_story_create'; + arguments: components['schemas']['CreateBrandStoryInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['BrandStoryCreate']; + }; + }; + }; + /** @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 story + * @description Update an existing brand story with new information. + */ + 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_story_update */ + requestBody: { + content: { + /** + * @example { + * "tool": "brand_story_update", + * "arguments": { + * "previousModelId": "example_id_123", + * "prompt": "string" + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'brand_story_update'; + arguments: components['schemas']['UpdateBrandStoryInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['BrandStoryUpdate']; + }; + }; + }; + /** @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 story + * @description Delete a brand story. + */ + 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_story_delete */ + requestBody: { + content: { + /** + * @example { + * "tool": "brand_story_delete", + * "arguments": { + * "brandStoryId": "example_id_123" + * } + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'brand_story_delete'; + arguments: components['schemas']['DeleteBrandStoryInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['BrandStoryDelete']; + }; + }; + }; + /** @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 stories + * @description List all brand stories with optional filtering by brand agent. + */ + 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 brand_story_list */ + requestBody: { + content: { + /** + * @example { + * "tool": "brand_story_list", + * "arguments": {} + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'brand_story_list'; + arguments: components['schemas']['ListBrandStoriesInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['BrandStoryList']; + }; + }; + }; + /** @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 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']; + }; + }; }; }; - 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. + * Assign creative + * @description Assign a creative to a tactic or media buy. */ - mcp_initialize: { + creative_assign: { 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 creative_assign */ requestBody: { content: { + /** + * @example { + * "tool": "creative_assign", + * "arguments": { + * "creative_id": "example_id_123", + * "campaign_id": "example_id_123" + * } + * } + */ '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: 'creative_assign'; + arguments: components['schemas']['AssignCreativeInput']; }; }; }; 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']['AssignCreativeOutput']; }; }; }; + /** @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. + * Create creative + * @description Create a new creative with assets, copy, and targeting specifications. */ - brand_agent_list: { + 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 brand_agent_list */ + /** @description Request body for creative_create */ requestBody: { content: { /** * @example { - * "tool": "brand_agent_list", - * "arguments": {} + * "tool": "creative_create", + * "arguments": { + * "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: 'brand_agent_list'; - arguments: components['schemas']['ListBrandAgentsInput']; + tool: 'creative_create'; + arguments: components['schemas']['CreativeCreateInput']; }; }; }; @@ -2702,7 +12147,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandAgentList']; + structuredContent: components['schemas']['CreativeGetOutput']; }; }; }; @@ -2727,31 +12172,31 @@ export interface operations { }; }; /** - * Get brand agent - * @description Get detailed information about a specific brand agent (advertiser account) by ID. + * Update creative + * @description Update an existing creative with new assets, copy, or specifications. */ - brand_agent_get: { + 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 brand_agent_get */ + /** @description Request body for creative_update */ requestBody: { content: { /** * @example { - * "tool": "brand_agent_get", + * "tool": "creative_update", * "arguments": { - * "brandAgentId": 100 + * "creative_id": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_agent_get'; - arguments: components['schemas']['GetBrandAgentInput']; + tool: 'creative_update'; + arguments: components['schemas']['CreativeUpdateInput']; }; }; }; @@ -2761,7 +12206,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandAgentUpdateOutput']; + structuredContent: components['schemas']['CreativeGetOutput']; }; }; }; @@ -2786,31 +12231,31 @@ 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. + * Delete creative + * @description Delete a creative and remove it from any associated tactics or media buys. */ - brand_agent_create: { + 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 brand_agent_create */ + /** @description Request body for creative_delete */ requestBody: { content: { /** * @example { - * "tool": "brand_agent_create", + * "tool": "creative_delete", * "arguments": { - * "name": "Example Name" + * "creative_id": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_agent_create'; - arguments: components['schemas']['CreateBrandAgentInput']; + tool: 'creative_delete'; + arguments: components['schemas']['DeleteCreativeInput']; }; }; }; @@ -2820,7 +12265,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandAgentUpdateOutput']; + structuredContent: components['schemas']['DeleteCreativeOutput']; }; }; }; @@ -2845,31 +12290,31 @@ export interface operations { }; }; /** - * Update brand agent - * @description Update an existing brand agent with new information. + * Get creative + * @description Get detailed information about a specific creative. */ - brand_agent_update: { + 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 brand_agent_update */ + /** @description Request body for creative_get */ requestBody: { content: { /** * @example { - * "tool": "brand_agent_update", + * "tool": "creative_get", * "arguments": { - * "brandAgentId": 100 + * "creative_id": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_agent_update'; - arguments: components['schemas']['UpdateBrandAgentInput']; + tool: 'creative_get'; + arguments: components['schemas']['GetCreativeInput']; }; }; }; @@ -2879,7 +12324,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandAgentUpdateOutput']; + structuredContent: components['schemas']['CreativeGetOutput']; }; }; }; @@ -2904,31 +12349,88 @@ export interface operations { }; }; /** - * Delete brand agent - * @description Delete a brand agent. This will also delete all associated campaigns, creatives, and other resources. + * List creatives + * @description List all creatives with optional filtering by brand agent or campaign. */ - brand_agent_delete: { + 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_agent_delete */ + /** @description Request body for creative_list */ requestBody: { content: { /** * @example { - * "tool": "brand_agent_delete", + * "tool": "creative_list", + * "arguments": {} + * } + */ + 'application/json': { + /** @enum {string} */ + tool: 'creative_list'; + arguments: components['schemas']['ListCreativesInput']; + }; + }; + }; + responses: { + /** @description Successful response */ + 200: { + content: { + 'application/json': { + content: components['schemas']['MCPContent'][]; + structuredContent: components['schemas']['ListCreativesOutput']; + }; + }; + }; + /** @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']; + }; + }; + }; + }; + /** + * Sync creatives to sales agents + * @description Synchronize creatives to connected sales agents (DSPs, publisher platforms). + */ + 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 creative_sync_sales_agents */ + requestBody: { + content: { + /** + * @example { + * "tool": "creative_sync_sales_agents", * "arguments": { - * "brandAgentId": 100 + * "creative_id": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_agent_delete'; - arguments: components['schemas']['DeleteBrandAgentInput']; + tool: 'creative_sync_sales_agents'; + arguments: components['schemas']['SyncSalesAgentsInput']; }; }; }; @@ -2938,7 +12440,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandAgentDelete']; + structuredContent: components['schemas']['SyncSalesAgentsOutput']; }; }; }; @@ -2963,29 +12465,37 @@ export interface operations { }; }; /** - * List campaigns - * @description List all campaigns with optional filtering by brand agent. + * Create media buy + * @description Create a new media buy with budget, targeting, and creative specifications. */ - campaign_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 campaign_list */ + /** @description Request body for media_buy_create */ requestBody: { content: { /** * @example { - * "tool": "campaign_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: 'campaign_list'; - arguments: components['schemas']['ListCampaignsInput']; + tool: 'media_buy_create'; + arguments: components['schemas']['MediaBuyCreateInput']; }; }; }; @@ -2995,7 +12505,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CampaignList']; + structuredContent: components['schemas']['MediaBuyGetOutput']; }; }; }; @@ -3020,32 +12530,31 @@ 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. + * Update media buy + * @description Update an existing media buy with new budget, targeting, or creative assignments. */ - campaign_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 campaign_create */ + /** @description Request body for media_buy_update */ requestBody: { content: { /** * @example { - * "tool": "campaign_create", + * "tool": "media_buy_update", * "arguments": { - * "brandAgentId": 100, - * "prompt": "string" + * "media_buy_id": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'campaign_create'; - arguments: components['schemas']['CreateCampaignInput']; + tool: 'media_buy_update'; + arguments: components['schemas']['UpdateMediaBuyInput']; }; }; }; @@ -3055,7 +12564,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CampaignUpdateOutput']; + structuredContent: components['schemas']['UpdateMediaBuyOutput']; }; }; }; @@ -3080,31 +12589,32 @@ export interface operations { }; }; /** - * Get campaign - * @description Get detailed information about a specific campaign. + * Delete media buy + * @description Delete a media buy and cancel any active placements. */ - campaign_get: { + 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 campaign_get */ + /** @description Request body for media_buy_delete */ requestBody: { content: { /** * @example { - * "tool": "campaign_get", + * "tool": "media_buy_delete", * "arguments": { - * "campaignId": "example_id_123" + * "media_buy_id": "example_id_123", + * "confirm": true * } * } */ 'application/json': { /** @enum {string} */ - tool: 'campaign_get'; - arguments: components['schemas']['GetCampaignInput']; + tool: 'media_buy_delete'; + arguments: components['schemas']['DeleteMediaBuyInput']; }; }; }; @@ -3114,7 +12624,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CampaignUpdateOutput']; + structuredContent: components['schemas']['DeleteMediaBuyOutput']; }; }; }; @@ -3139,31 +12649,31 @@ export interface operations { }; }; /** - * Update campaign - * @description Update an existing campaign with new information. + * Execute media buy + * @description Execute a media buy, sending it to the configured sales agents for placement. */ - campaign_update: { + 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 campaign_update */ + /** @description Request body for media_buy_execute */ requestBody: { content: { /** * @example { - * "tool": "campaign_update", + * "tool": "media_buy_execute", * "arguments": { - * "campaignId": "example_id_123" + * "media_buy_id": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'campaign_update'; - arguments: components['schemas']['UpdateCampaignInput']; + tool: 'media_buy_execute'; + arguments: components['schemas']['ExecuteMediaBuyInput']; }; }; }; @@ -3173,7 +12683,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CampaignUpdateOutput']; + structuredContent: components['schemas']['ExecuteMediaBuyOutput']; }; }; }; @@ -3198,31 +12708,31 @@ export interface operations { }; }; /** - * Delete campaign - * @description Delete a campaign and all associated resources. + * Get media buy + * @description Get detailed information about a specific media buy. */ - campaign_delete: { + 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 campaign_delete */ + /** @description Request body for media_buy_get */ requestBody: { content: { /** * @example { - * "tool": "campaign_delete", + * "tool": "media_buy_get", * "arguments": { - * "campaignId": "example_id_123" + * "media_buy_id": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'campaign_delete'; - arguments: components['schemas']['DeleteCampaignInput']; + tool: 'media_buy_get'; + arguments: components['schemas']['GetMediaBuyInput']; }; }; }; @@ -3232,7 +12742,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CampaignDelete']; + structuredContent: components['schemas']['MediaBuyGetOutput']; }; }; }; @@ -3257,31 +12767,29 @@ export interface operations { }; }; /** - * Get campaign summary - * @description Get a high-level summary of a campaign including key metrics and status. + * List media buys + * @description List all media buys with optional filtering by brand agent, campaign, or status. */ - campaign_get_summary: { + 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 campaign_get_summary */ + /** @description Request body for media_buy_list */ requestBody: { content: { /** * @example { - * "tool": "campaign_get_summary", - * "arguments": { - * "campaignId": "example_id_123" - * } + * "tool": "media_buy_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'campaign_get_summary'; - arguments: components['schemas']['GetCampaignSummaryInput']; + tool: 'media_buy_list'; + arguments: components['schemas']['ListMediaBuysInput']; }; }; }; @@ -3291,7 +12799,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CampaignGetSummary']; + structuredContent: components['schemas']['ListMediaBuysOutput']; }; }; }; @@ -3316,31 +12824,32 @@ export interface operations { }; }; /** - * List campaign tactics - * @description List all tactics associated with a specific campaign. + * Discover media products + * @description Discover available media products from connected sales agents based on targeting criteria. */ - campaign_list_tactics: { + 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 campaign_list_tactics */ + /** @description Request body for media_product_discover */ requestBody: { content: { /** * @example { - * "tool": "campaign_list_tactics", + * "tool": "media_product_discover", * "arguments": { - * "campaignId": "example_id_123" + * "brief": "string", + * "brandManifestUrl": "https://example.com" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'campaign_list_tactics'; - arguments: components['schemas']['ListCampaignTacticsInput']; + tool: 'media_product_discover'; + arguments: components['schemas']['DiscoverProductsInput']; }; }; }; @@ -3350,7 +12859,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CampaignListTactics']; + structuredContent: components['schemas']['MediaProductDiscover']; }; }; }; @@ -3375,31 +12884,29 @@ export interface operations { }; }; /** - * Validate campaign brief - * @description Validate a campaign brief to ensure it contains all necessary information for campaign creation. + * List media products + * @description List saved media products with optional filtering. */ - campaign_validate_brief: { + 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 campaign_validate_brief */ + /** @description Request body for media_product_list */ requestBody: { content: { /** * @example { - * "tool": "campaign_validate_brief", - * "arguments": { - * "brief": "string" - * } + * "tool": "media_product_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'campaign_validate_brief'; - arguments: components['schemas']['ValidateBriefInput']; + tool: 'media_product_list'; + arguments: components['schemas']['ListProductsInput']; }; }; }; @@ -3409,7 +12916,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CampaignValidateBrief']; + structuredContent: components['schemas']['MediaProductList']; }; }; }; @@ -3434,29 +12941,31 @@ export interface operations { }; }; /** - * List assets - * @description List all uploaded assets with optional filtering by brand agent. + * Get agent + * @description Get detailed information about a specific agent (SALES or OUTCOME type). Type is automatically inferred from the agent ID. */ - asset_list: { + 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 asset_list */ + /** @description Request body for agent_get */ requestBody: { content: { /** * @example { - * "tool": "asset_list", - * "arguments": {} + * "tool": "agent_get", + * "arguments": { + * "agentId": "example_id_123" + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'asset_list'; - arguments: components['schemas']['ListAssetsInput']; + tool: 'agent_get'; + arguments: components['schemas']['GetAgentInput']; }; }; }; @@ -3466,7 +12975,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['AssetList']; + structuredContent: components['schemas']['AgentGet']; }; }; }; @@ -3491,32 +13000,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 agents + * @description List all registered agents with comprehensive filtering. Supports filtering by type (SALES/OUTCOME), status, organization, relationship (SELF/SCOPE3/MARKETPLACE), and name. */ - brand_standards_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 brand_standards_create */ + /** @description Request body for agent_list */ requestBody: { content: { /** * @example { - * "tool": "brand_standards_create", - * "arguments": { - * "brandAgentId": 100, - * "prompt": "string" - * } + * "tool": "agent_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_standards_create'; - arguments: components['schemas']['CreateBrandStandardInput']; + tool: 'agent_list'; + arguments: components['schemas']['ListAgentsInput']; }; }; }; @@ -3526,7 +13032,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandStandardsCreateOutput']; + structuredContent: components['schemas']['AgentList']; }; }; }; @@ -3551,31 +13057,31 @@ export interface operations { }; }; /** - * Delete brand standards - * @description Delete brand standards for a brand agent. + * List agent accounts + * @description List all your accounts registered with a specific agent. Only SALES agents support accounts. */ - brand_standards_delete: { + 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 brand_standards_delete */ + /** @description Request body for agent_account_list */ requestBody: { content: { /** * @example { - * "tool": "brand_standards_delete", + * "tool": "agent_account_list", * "arguments": { - * "brandStandardId": "example_id_123" + * "agentId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_standards_delete'; - arguments: components['schemas']['DeleteBrandStandardInput']; + tool: 'agent_account_list'; + arguments: components['schemas']['ListAgentAccountsInput']; }; }; }; @@ -3585,7 +13091,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandStandardsDelete']; + structuredContent: components['schemas']['AgentAccountList']; }; }; }; @@ -3610,29 +13116,32 @@ export interface operations { }; }; /** - * List brand standards - * @description List all brand standards with optional filtering by brand agent. + * Register agent account + * @description Register your account with a SALES agent to access their products. Provide account credentials for authentication with the agent. */ - brand_standards_list: { + 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 brand_standards_list */ + /** @description Request body for agent_account_register */ requestBody: { content: { /** * @example { - * "tool": "brand_standards_list", - * "arguments": {} + * "tool": "agent_account_register", + * "arguments": { + * "agentId": "example_id_123", + * "accountIdentifier": "example_id_123" + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_standards_list'; - arguments: components['schemas']['ListBrandStandardsInput']; + tool: 'agent_account_register'; + arguments: components['schemas']['RegisterAgentAccountInput']; }; }; }; @@ -3642,7 +13151,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandStandardsList']; + structuredContent: components['schemas']['AgentAccountRegister']; }; }; }; @@ -3667,33 +13176,32 @@ export interface operations { }; }; /** - * Create brand story - * @description Create a brand story containing the narrative, history, values, and key messaging for a brand agent. + * Unregister agent account + * @description Unregister your account from a SALES agent. This deactivates your access to the agent but does not affect other customers. */ - brand_story_create: { + 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 brand_story_create */ + /** @description Request body for agent_account_unregister */ requestBody: { content: { /** * @example { - * "tool": "brand_story_create", + * "tool": "agent_account_unregister", * "arguments": { - * "brandAgentId": null, - * "name": "Example Name", - * "languages": [] + * "agentId": "example_id_123", + * "confirm": true * } * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_story_create'; - arguments: components['schemas']['CreateBrandStoryInput']; + tool: 'agent_account_unregister'; + arguments: components['schemas']['UnregisterAgentAccountInput']; }; }; }; @@ -3703,7 +13211,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandStoryCreate']; + structuredContent: components['schemas']['AgentAccountUnregister']; }; }; }; @@ -3728,32 +13236,33 @@ export interface operations { }; }; /** - * Update brand story - * @description Update an existing brand story with new information. + * Update agent account + * @description Update authentication credentials for your account with a SALES agent. */ - brand_story_update: { + 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 brand_story_update */ + /** @description Request body for agent_account_update */ requestBody: { content: { /** * @example { - * "tool": "brand_story_update", + * "tool": "agent_account_update", * "arguments": { - * "brandStoryId": "example_id_123", - * "prompt": "string" + * "agentId": "example_id_123", + * "accountIdentifier": "example_id_123", + * "auth": null * } * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_story_update'; - arguments: components['schemas']['UpdateBrandStoryInput']; + tool: 'agent_account_update'; + arguments: components['schemas']['UpdateAgentAccountInput']; }; }; }; @@ -3763,7 +13272,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandStoryUpdate']; + structuredContent: components['schemas']['AgentAccountUpdate']; }; }; }; @@ -3788,31 +13297,32 @@ export interface operations { }; }; /** - * Delete brand story - * @description Delete a brand story. + * Create tactic + * @description Create a new tactic defining how to achieve campaign objectives. */ - brand_story_delete: { + 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 brand_story_delete */ + /** @description Request body for tactic_create */ requestBody: { content: { /** * @example { - * "tool": "brand_story_delete", + * "tool": "tactic_create", * "arguments": { - * "brandStoryId": "example_id_123" + * "campaignId": "example_id_123", + * "name": "Example Name" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_story_delete'; - arguments: components['schemas']['DeleteBrandStoryInput']; + tool: 'tactic_create'; + arguments: components['schemas']['CreateTacticInput']; }; }; }; @@ -3822,7 +13332,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandStoryDelete']; + structuredContent: components['schemas']['TacticCreate']; }; }; }; @@ -3847,29 +13357,31 @@ export interface operations { }; }; /** - * List brand stories - * @description List all brand stories with optional filtering by brand agent. + * Update tactic + * @description Update an existing tactic with new targeting, budget, or creative requirements. */ - brand_story_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 brand_story_list */ + /** @description Request body for tactic_update */ requestBody: { content: { /** * @example { - * "tool": "brand_story_list", - * "arguments": {} + * "tool": "tactic_update", + * "arguments": { + * "tacticId": 100 + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'brand_story_list'; - arguments: components['schemas']['ListBrandStoriesInput']; + tool: 'tactic_update'; + arguments: components['schemas']['UpdateTacticInput']; }; }; }; @@ -3879,7 +13391,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['BrandStoryList']; + structuredContent: components['schemas']['TacticGetOutput']; }; }; }; @@ -3904,29 +13416,32 @@ export interface operations { }; }; /** - * List channels - * @description List all available advertising channels and platforms. + * Delete tactic + * @description Delete a tactic and all associated media buys. */ - channel_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 channel_list */ + /** @description Request body for tactic_delete */ requestBody: { content: { /** * @example { - * "tool": "channel_list", - * "arguments": {} + * "tool": "tactic_delete", + * "arguments": { + * "tacticId": 100, + * "confirm": true + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'channel_list'; - arguments: components['schemas']['ListChannelsInput']; + tool: 'tactic_delete'; + arguments: components['schemas']['DeleteTacticInput']; }; }; }; @@ -3936,7 +13451,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['ChannelList']; + structuredContent: components['schemas']['TacticDelete']; }; }; }; @@ -3961,29 +13476,31 @@ export interface operations { }; }; /** - * List countries - * @description Get all available countries for targeting. Use this to get valid country codes before creating brand agents. + * Get tactic + * @description Get detailed information about a specific tactic. */ - country_list: { + 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 country_list */ + /** @description Request body for tactic_get */ requestBody: { content: { /** * @example { - * "tool": "country_list", - * "arguments": {} + * "tool": "tactic_get", + * "arguments": { + * "tacticId": 100 + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'country_list'; - arguments: components['schemas']['ListCountriesInput']; + tool: 'tactic_get'; + arguments: components['schemas']['GetTacticInput']; }; }; }; @@ -3993,7 +13510,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CountryList']; + structuredContent: components['schemas']['TacticGetOutput']; }; }; }; @@ -4018,29 +13535,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 tactics + * @description List all tactics with optional filtering by brand agent or campaign. */ - language_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 language_list */ + /** @description Request body for tactic_list */ requestBody: { content: { /** * @example { - * "tool": "language_list", + * "tool": "tactic_list", * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'language_list'; - arguments: components['schemas']['ListLanguagesInput']; + tool: 'tactic_list'; + arguments: components['schemas']['ListTacticsInput']; }; }; }; @@ -4050,7 +13567,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['LanguageList']; + structuredContent: components['schemas']['TacticList']; }; }; }; @@ -4075,32 +13592,32 @@ export interface operations { }; }; /** - * Assign creative - * @description Assign a creative to a tactic or media buy. + * Link tactic to campaign + * @description Link a tactic to a campaign. */ - creative_assign: { + 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 creative_assign */ + /** @description Request body for tactic_link_campaign */ requestBody: { content: { /** * @example { - * "tool": "creative_assign", + * "tool": "tactic_link_campaign", * "arguments": { - * "creativeId": "example_id_123", + * "tacticId": 100, * "campaignId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'creative_assign'; - arguments: components['schemas']['AssignCreativeInput']; + tool: 'tactic_link_campaign'; + arguments: components['schemas']['LinkCampaignToTacticInput']; }; }; }; @@ -4110,7 +13627,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeAssign']; + structuredContent: components['schemas']['TacticLinkCampaign']; }; }; }; @@ -4135,32 +13652,32 @@ export interface operations { }; }; /** - * Create creative - * @description Create a new creative with assets, copy, and targeting specifications. + * Unlink tactic from campaign + * @description Unlink a tactic from a campaign. */ - creative_create: { + 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 creative_create */ + /** @description Request body for tactic_unlink_campaign */ requestBody: { content: { /** * @example { - * "tool": "creative_create", + * "tool": "tactic_unlink_campaign", * "arguments": { - * "brandAgentId": 100, - * "name": "Example Name" + * "tacticId": 100, + * "campaignId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'creative_create'; - arguments: components['schemas']['CreateCreativeInput']; + tool: 'tactic_unlink_campaign'; + arguments: components['schemas']['UnlinkCampaignFromTacticInput']; }; }; }; @@ -4170,7 +13687,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeGetOutput']; + structuredContent: components['schemas']['TacticUnlinkCampaign']; }; }; }; @@ -4195,31 +13712,31 @@ export interface operations { }; }; /** - * Update creative - * @description Update an existing creative with new assets, copy, or specifications. + * 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. */ - creative_update: { + outcomes_agent_get_proposals: { 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 outcomes_agent_get_proposals */ requestBody: { content: { /** * @example { - * "tool": "creative_update", + * "tool": "outcomes_agent_get_proposals", * "arguments": { - * "creativeId": "example_id_123" + * "campaignId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'creative_update'; - arguments: components['schemas']['UpdateCreativeInput']; + tool: 'outcomes_agent_get_proposals'; + arguments: components['schemas']['OutcomesAgentGetProposalsInput']; }; }; }; @@ -4229,7 +13746,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeGetOutput']; + structuredContent: components['schemas']['OutcomesAgentGetProposals']; }; }; }; @@ -4254,31 +13771,31 @@ export interface operations { }; }; /** - * Delete creative - * @description Delete a creative and remove it from any associated tactics or media buys. + * Accept outcome agent proposal + * @description Accept a proposal from an outcome agent, creating a tactic and assigning it to the agent for management. */ - creative_delete: { + outcomes_agent_accept_proposal: { 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 outcomes_agent_accept_proposal */ requestBody: { content: { /** * @example { - * "tool": "creative_delete", + * "tool": "outcomes_agent_accept_proposal", * "arguments": { - * "creativeId": "example_id_123" + * "proposalId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'creative_delete'; - arguments: components['schemas']['DeleteCreativeInput']; + tool: 'outcomes_agent_accept_proposal'; + arguments: components['schemas']['OutcomesAgentAcceptProposalInput']; }; }; }; @@ -4288,7 +13805,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeDelete']; + structuredContent: components['schemas']['OutcomesAgentAcceptProposal']; }; }; }; @@ -4313,31 +13830,31 @@ export interface operations { }; }; /** - * Get creative - * @description Get detailed information about a specific creative. + * List tactics by outcome agent + * @description List all tactics managed by a specific outcome agent. */ - creative_get: { + outcomes_agent_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 creative_get */ + /** @description Request body for outcomes_agent_list_tactics */ requestBody: { content: { /** * @example { - * "tool": "creative_get", + * "tool": "outcomes_agent_list_tactics", * "arguments": { - * "creativeId": "example_id_123" + * "outcomeAgentId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'creative_get'; - arguments: components['schemas']['GetCreativeInput']; + tool: 'outcomes_agent_list_tactics'; + arguments: components['schemas']['OutcomesAgentListTacticsInput']; }; }; }; @@ -4347,7 +13864,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeGetOutput']; + structuredContent: components['schemas']['OutcomesAgentListTactics']; }; }; }; @@ -4372,29 +13889,31 @@ export interface operations { }; }; /** - * List creatives - * @description List all creatives 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. */ - creative_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 creative_list */ + /** @description Request body for service_token_create */ requestBody: { content: { /** * @example { - * "tool": "creative_list", - * "arguments": {} + * "tool": "service_token_create", + * "arguments": { + * "name": "Example Name" + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'creative_list'; - arguments: components['schemas']['ListCreativesInput']; + tool: 'service_token_create'; + arguments: components['schemas']['CreateServiceTokenInput']; }; }; }; @@ -4404,7 +13923,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreativeList']; + structuredContent: components['schemas']['CreateServiceTokenOutput']; }; }; }; @@ -4429,31 +13948,29 @@ export interface operations { }; }; /** - * Get media buy - * @description Get detailed information about a specific media buy. + * List service tokens + * @description List all service tokens for the authenticated customer. Secrets are never returned, only metadata. */ - media_buy_get: { + 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 media_buy_get */ + /** @description Request body for service_token_list */ requestBody: { content: { /** * @example { - * "tool": "media_buy_get", - * "arguments": { - * "mediaBuyId": "example_id_123" - * } + * "tool": "service_token_list", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'media_buy_get'; - arguments: components['schemas']['GetMediaBuyInput']; + tool: 'service_token_list'; + arguments: components['schemas']['ListServiceTokensInput']; }; }; }; @@ -4463,7 +13980,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyGetOutput']; + structuredContent: components['schemas']['ListServiceTokensOutput']; }; }; }; @@ -4488,29 +14005,31 @@ export interface operations { }; }; /** - * List media buys - * @description List all media buys with optional filtering by brand agent, campaign, or status. + * Get service token + * @description Get detailed information about a specific service token. The secret is never returned. */ - media_buy_list: { + 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 media_buy_list */ + /** @description Request body for service_token_get */ requestBody: { content: { /** * @example { - * "tool": "media_buy_list", - * "arguments": {} + * "tool": "service_token_get", + * "arguments": { + * "id": "1234567890" + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'media_buy_list'; - arguments: components['schemas']['ListMediaBuysInput']; + tool: 'service_token_get'; + arguments: components['schemas']['GetServiceTokenInput']; }; }; }; @@ -4520,7 +14039,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaBuyList']; + structuredContent: components['schemas']['GetServiceTokenOutput']; }; }; }; @@ -4545,29 +14064,31 @@ export interface operations { }; }; /** - * List media products - * @description List saved media products with optional filtering. + * Update service token + * @description Update a service token. Only name, description, and expiration can be modified. */ - media_product_list: { + 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 media_product_list */ + /** @description Request body for service_token_update */ requestBody: { content: { /** * @example { - * "tool": "media_product_list", - * "arguments": {} + * "tool": "service_token_update", + * "arguments": { + * "id": "1234567890" + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'media_product_list'; - arguments: components['schemas']['ListProductsInput']; + tool: 'service_token_update'; + arguments: components['schemas']['UpdateServiceTokenInput']; }; }; }; @@ -4577,7 +14098,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['MediaProductList']; + structuredContent: components['schemas']['UpdateServiceTokenOutput']; }; }; }; @@ -4602,31 +14123,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. + * Archive service token + * @description Archive (soft delete) a service token. This immediately invalidates the token for authentication. */ - agent_get: { + 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 agent_get */ + /** @description Request body for service_token_archive */ requestBody: { content: { /** * @example { - * "tool": "agent_get", + * "tool": "service_token_archive", * "arguments": { - * "agentId": "example_id_123" + * "id": "1234567890" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'agent_get'; - arguments: components['schemas']['GetAgentInput']; + tool: 'service_token_archive'; + arguments: components['schemas']['ArchiveServiceTokenInput']; }; }; }; @@ -4636,7 +14157,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['AgentGet']; + structuredContent: components['schemas']['ArchiveServiceTokenOutput']; }; }; }; @@ -4661,29 +14182,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. + * Get customer info + * @description Get detailed information about a customer from the core database. */ - agent_list: { + 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 agent_list */ + /** @description Request body for customer_get */ requestBody: { content: { /** * @example { - * "tool": "agent_list", + * "tool": "customer_get", * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'agent_list'; - arguments: components['schemas']['ListAgentsInput']; + tool: 'customer_get'; + arguments: components['schemas']['GetCustomerInput']; }; }; }; @@ -4693,7 +14214,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['AgentList']; + structuredContent: components['schemas']['GetCustomerOutput']; }; }; }; @@ -4718,31 +14239,29 @@ export interface operations { }; }; /** - * Get tactic - * @description Get detailed information about a specific tactic. + * Get customer seats + * @description Get all seats associated with a customer from the core database. */ - tactic_get: { + 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 tactic_get */ + /** @description Request body for customer_get_seats */ requestBody: { content: { /** * @example { - * "tool": "tactic_get", - * "arguments": { - * "tacticId": 100 - * } + * "tool": "customer_get_seats", + * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'tactic_get'; - arguments: components['schemas']['GetTacticInput']; + tool: 'customer_get_seats'; + arguments: components['schemas']['GetCustomerSeatsInput']; }; }; }; @@ -4752,7 +14271,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['TacticGetOutput']; + structuredContent: components['schemas']['GetCustomerSeatsOutput']; }; }; }; @@ -4777,29 +14296,29 @@ export interface operations { }; }; /** - * List tactics - * @description List all tactics with optional filtering by brand agent or campaign. + * List seats + * @description List all seats the authenticated user has access to, including seat members, agents, and brand agents. */ - tactic_list: { + seat_details_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_list */ + /** @description Request body for seat_details_list */ requestBody: { content: { /** * @example { - * "tool": "tactic_list", + * "tool": "seat_details_list", * "arguments": {} * } */ 'application/json': { /** @enum {string} */ - tool: 'tactic_list'; - arguments: components['schemas']['ListTacticsInput']; + tool: 'seat_details_list'; + arguments: components['schemas']['ListSeatsInput']; }; }; }; @@ -4809,7 +14328,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['TacticList']; + structuredContent: components['schemas']['ListSeatsOutput']; }; }; }; @@ -4834,31 +14353,31 @@ export interface operations { }; }; /** - * 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. + * Get seat details + * @description Get detailed information about a specific seat including members, agents, and brand agents. */ - outcomes_agent_get_proposals: { + seat_details_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 outcomes_agent_get_proposals */ + /** @description Request body for seat_details_get */ requestBody: { content: { /** * @example { - * "tool": "outcomes_agent_get_proposals", + * "tool": "seat_details_get", * "arguments": { - * "campaignId": "example_id_123" + * "seatId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'outcomes_agent_get_proposals'; - arguments: components['schemas']['OutcomesAgentGetProposalsInput']; + tool: 'seat_details_get'; + arguments: components['schemas']['GetSeatInput']; }; }; }; @@ -4868,7 +14387,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['OutcomesAgentGetProposals']; + structuredContent: components['schemas']['GetSeatOutput']; }; }; }; @@ -4893,31 +14412,32 @@ export interface operations { }; }; /** - * Accept outcome agent proposal - * @description Accept a proposal from an outcome agent, creating a tactic and assigning it to the agent for management. + * Create seat + * @description Create a new seat under the authenticated user's customer. Requires ADMIN or SUPER_ADMIN role. */ - outcomes_agent_accept_proposal: { + seat_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 outcomes_agent_accept_proposal */ + /** @description Request body for seat_create */ requestBody: { content: { /** * @example { - * "tool": "outcomes_agent_accept_proposal", + * "tool": "seat_create", * "arguments": { - * "proposalId": "example_id_123" + * "name": "Example Name", + * "type": "BUYER" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'outcomes_agent_accept_proposal'; - arguments: components['schemas']['OutcomesAgentAcceptProposalInput']; + tool: 'seat_create'; + arguments: components['schemas']['CreateSeatInput']; }; }; }; @@ -4927,7 +14447,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['OutcomesAgentAcceptProposal']; + structuredContent: components['schemas']['CreateSeatOutput']; }; }; }; @@ -4952,31 +14472,32 @@ export interface operations { }; }; /** - * List tactics by outcome agent - * @description List all tactics managed by a specific outcome agent. + * Update seat + * @description Update an existing seat. Requires ADMIN role on the seat or SUPER_ADMIN. */ - outcomes_agent_list_tactics: { + seat_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 outcomes_agent_list_tactics */ + /** @description Request body for seat_update */ requestBody: { content: { /** * @example { - * "tool": "outcomes_agent_list_tactics", + * "tool": "seat_update", * "arguments": { - * "outcomeAgentId": "example_id_123" + * "seatId": "example_id_123", + * "name": "Example Name" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'outcomes_agent_list_tactics'; - arguments: components['schemas']['OutcomesAgentListTacticsInput']; + tool: 'seat_update'; + arguments: components['schemas']['UpdateSeatInput']; }; }; }; @@ -4986,7 +14507,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['OutcomesAgentListTactics']; + structuredContent: components['schemas']['UpdateSeatOutput']; }; }; }; @@ -5011,31 +14532,31 @@ 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. + * Delete seat + * @description Delete a seat. Requires ADMIN role on the seat or SUPER_ADMIN. This operation cannot be undone. */ - service_token_create: { + seat_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_create */ + /** @description Request body for seat_delete */ requestBody: { content: { /** * @example { - * "tool": "service_token_create", + * "tool": "seat_delete", * "arguments": { - * "name": "Example Name" + * "seatId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'service_token_create'; - arguments: components['schemas']['CreateServiceTokenInput']; + tool: 'seat_delete'; + arguments: components['schemas']['DeleteSeatInput']; }; }; }; @@ -5045,7 +14566,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['CreateServiceTokenOutput']; + structuredContent: components['schemas']['DeleteSeatOutput']; }; }; }; @@ -5070,29 +14591,33 @@ export interface operations { }; }; /** - * List service tokens - * @description List all service tokens for the authenticated customer. Secrets are never returned, only metadata. + * Add seat member + * @description Add a user as a member to a seat with a specified role (ADMIN, READ_WRITE, or READ). Requires ADMIN role on the seat or SUPER_ADMIN. */ - service_token_list: { + seat_member_add: { 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 seat_member_add */ requestBody: { content: { /** * @example { - * "tool": "service_token_list", - * "arguments": {} + * "tool": "seat_member_add", + * "arguments": { + * "seatId": "example_id_123", + * "userId": "example_id_123", + * "role": "ADMIN" + * } * } */ 'application/json': { /** @enum {string} */ - tool: 'service_token_list'; - arguments: components['schemas']['ListServiceTokensInput']; + tool: 'seat_member_add'; + arguments: components['schemas']['AddSeatMemberInput']; }; }; }; @@ -5102,7 +14627,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['ListServiceTokensOutput']; + structuredContent: components['schemas']['AddSeatMemberOutput']; }; }; }; @@ -5127,31 +14652,33 @@ export interface operations { }; }; /** - * Get service token - * @description Get detailed information about a specific service token. The secret is never returned. + * Update seat member role + * @description Update the role of a seat member. Requires ADMIN role on the seat or SUPER_ADMIN. */ - service_token_get: { + seat_member_update_role: { 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 seat_member_update_role */ requestBody: { content: { /** * @example { - * "tool": "service_token_get", + * "tool": "seat_member_update_role", * "arguments": { - * "id": "1234567890" + * "seatId": "example_id_123", + * "userId": "example_id_123", + * "role": "ADMIN" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'service_token_get'; - arguments: components['schemas']['GetServiceTokenInput']; + tool: 'seat_member_update_role'; + arguments: components['schemas']['UpdateSeatMemberRoleInput']; }; }; }; @@ -5161,7 +14688,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['GetServiceTokenOutput']; + structuredContent: components['schemas']['UpdateSeatMemberRoleOutput']; }; }; }; @@ -5186,31 +14713,32 @@ export interface operations { }; }; /** - * Update service token - * @description Update a service token. Only name, description, and expiration can be modified. + * Remove seat member + * @description Remove a user from a seat. Requires ADMIN role on the seat or SUPER_ADMIN. */ - service_token_update: { + seat_member_remove: { 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 seat_member_remove */ requestBody: { content: { /** * @example { - * "tool": "service_token_update", + * "tool": "seat_member_remove", * "arguments": { - * "id": "1234567890" + * "seatId": "example_id_123", + * "userId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'service_token_update'; - arguments: components['schemas']['UpdateServiceTokenInput']; + tool: 'seat_member_remove'; + arguments: components['schemas']['RemoveSeatMemberInput']; }; }; }; @@ -5220,7 +14748,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['UpdateServiceTokenOutput']; + structuredContent: components['schemas']['RemoveSeatMemberOutput']; }; }; }; @@ -5245,31 +14773,31 @@ export interface operations { }; }; /** - * Archive service token - * @description Archive (soft delete) a service token. This immediately invalidates the token for authentication. + * Get signal details + * @description Get detailed information about a specific signal including its access configurations and regions. */ - service_token_archive: { + 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_archive */ + /** @description Request body for signal_get */ requestBody: { content: { /** * @example { - * "tool": "service_token_archive", + * "tool": "signal_get", * "arguments": { - * "id": "1234567890" + * "signalId": "example_id_123" * } * } */ 'application/json': { /** @enum {string} */ - tool: 'service_token_archive'; - arguments: components['schemas']['ArchiveServiceTokenInput']; + tool: 'signal_get'; + arguments: components['schemas']['GetSignalInput']; }; }; }; @@ -5279,7 +14807,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['ArchiveServiceTokenOutput']; + structuredContent: components['schemas']['SignalGet']; }; }; }; @@ -5304,29 +14832,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']; }; }; }; @@ -5336,7 +14864,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['GetCustomerOutput']; + structuredContent: components['schemas']['SignalList']; }; }; }; @@ -5361,29 +14889,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']; }; }; }; @@ -5393,7 +14921,7 @@ export interface operations { content: { 'application/json': { content: components['schemas']['MCPContent'][]; - structuredContent: components['schemas']['GetCustomerSeatsOutput']; + structuredContent: components['schemas']['SignalDiscover']; }; }; };