diff --git a/fern/apis/api/openapi.json b/fern/apis/api/openapi.json index a9d9bf02c..1d5109f64 100644 --- a/fern/apis/api/openapi.json +++ b/fern/apis/api/openapi.json @@ -328,6 +328,19 @@ "operationId": "SquadController_findAll", "summary": "List Squads", "parameters": [ + { + "name": "idAny", + "required": false, + "in": "query", + "description": "Return only squads matching the provided ids", + "schema": { + "format": "uuid", + "type": "array", + "items": { + "type": "string" + } + } + }, { "name": "limit", "required": false, @@ -597,6 +610,12 @@ } } } + }, + "400": { + "description": "Client/policy failure (limits, validation, missing resources)" + }, + "500": { + "description": "System failure (database, queue, or internal infra)" } }, "tags": [ @@ -1219,402 +1238,411 @@ } }, { - "name": "page", - "required": false, - "in": "query", - "description": "This is the page number to return. Defaults to 1.", - "schema": { - "minimum": 1, - "type": "number" - } - }, - { - "name": "sortOrder", - "required": false, - "in": "query", - "description": "This is the sort order for pagination. Defaults to 'DESC'.", - "schema": { - "enum": [ - "ASC", - "DESC" - ], - "type": "string" - } - }, - { - "name": "sortBy", - "required": false, - "in": "query", - "description": "This is the column to sort by. Defaults to 'createdAt'.", - "schema": { - "enum": [ - "createdAt", - "duration", - "cost" - ], - "type": "string" - } - }, - { - "name": "limit", - "required": false, - "in": "query", - "description": "This is the maximum number of items to return. Defaults to 100.", - "schema": { - "minimum": 0, - "maximum": 1000, - "type": "number" - } - }, - { - "name": "createdAtGt", - "required": false, - "in": "query", - "description": "This will return items where the createdAt is greater than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "name": "createdAtLt", - "required": false, - "in": "query", - "description": "This will return items where the createdAt is less than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "name": "createdAtGe", - "required": false, - "in": "query", - "description": "This will return items where the createdAt is greater than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "name": "createdAtLe", - "required": false, - "in": "query", - "description": "This will return items where the createdAt is less than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "name": "updatedAtGt", - "required": false, - "in": "query", - "description": "This will return items where the updatedAt is greater than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "name": "updatedAtLt", - "required": false, - "in": "query", - "description": "This will return items where the updatedAt is less than the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "name": "updatedAtGe", + "name": "idAny", "required": false, "in": "query", - "description": "This will return items where the updatedAt is greater than or equal to the specified value.", + "description": "Filter by multiple chat IDs. Provide as comma-separated values.", "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "name": "updatedAtLe", - "required": false, - "in": "query", - "description": "This will return items where the updatedAt is less than or equal to the specified value.", - "schema": { - "format": "date-time", - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ChatPaginatedResponse" - } - } - } - } - }, - "tags": [ - "Chats" - ], - "security": [ - { - "bearer": [] - } - ] - }, - "post": { - "operationId": "ChatController_createChat", - "summary": "Create Chat", - "description": "Creates a new chat with optional SMS delivery via transport field. Requires at least one of: assistantId/assistant, sessionId, or previousChatId. Note: sessionId and previousChatId are mutually exclusive. Transport field enables SMS delivery with two modes: (1) New conversation - provide transport.phoneNumberId and transport.customer to create a new session, (2) Existing conversation - provide sessionId to use existing session data. Cannot specify both sessionId and transport fields together. The transport.useLLMGeneratedMessageForOutbound flag controls whether input is processed by LLM (true, default) or forwarded directly as SMS (false).", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateChatDTO" - } - } - } - }, - "responses": { - "200": { - "description": "Chat response - either non-streaming chat or streaming", - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/Chat" - }, - { - "$ref": "#/components/schemas/CreateChatStreamResponse" - } - ] - } - } - } - }, - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - } - }, - "tags": [ - "Chats" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/chat/{id}": { - "get": { - "operationId": "ChatController_getChat", - "summary": "Get Chat", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Chat" - } - } - } - } - }, - "tags": [ - "Chats" - ], - "security": [ - { - "bearer": [] - } - ] - }, - "delete": { - "operationId": "ChatController_deleteChat", - "summary": "Delete Chat", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Chat" - } - } - } - } - }, - "tags": [ - "Chats" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/chat/responses": { - "post": { - "operationId": "ChatController_createOpenAIChat", - "summary": "Create Chat (OpenAI Compatible)", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAIResponsesRequest" - } - } - } - }, - "responses": { - "200": { - "description": "OpenAI Responses API format - either non-streaming or streaming", - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/ResponseObject" - }, - { - "$ref": "#/components/schemas/ResponseTextDeltaEvent" - }, - { - "$ref": "#/components/schemas/ResponseTextDoneEvent" - }, - { - "$ref": "#/components/schemas/ResponseCompletedEvent" - }, - { - "$ref": "#/components/schemas/ResponseErrorEvent" - } - ] - } - } - } - }, - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - } - }, - "tags": [ - "Chats" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/campaign": { - "post": { - "operationId": "CampaignController_create", - "summary": "Create Campaign", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateCampaignDTO" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Campaign" - } - } - } - } - }, - "tags": [ - "Campaigns" - ], - "security": [ - { - "bearer": [] - } - ] - }, - "get": { - "operationId": "CampaignController_findAll", - "summary": "List Campaigns", - "parameters": [ - { - "name": "id", - "required": false, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "status", - "required": false, - "in": "query", - "schema": { - "enum": [ - "scheduled", - "in-progress", - "ended", - "cancelled", - "archived" - ], + "type": "string" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "description": "This is the page number to return. Defaults to 1.", + "schema": { + "minimum": 1, + "type": "number" + } + }, + { + "name": "sortOrder", + "required": false, + "in": "query", + "description": "This is the sort order for pagination. Defaults to 'DESC'.", + "schema": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + }, + { + "name": "sortBy", + "required": false, + "in": "query", + "description": "This is the column to sort by. Defaults to 'createdAt'.", + "schema": { + "enum": [ + "createdAt", + "duration", + "cost" + ], + "type": "string" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "This is the maximum number of items to return. Defaults to 100.", + "schema": { + "minimum": 0, + "maximum": 1000, + "type": "number" + } + }, + { + "name": "createdAtGt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtLt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtGe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtLe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtGt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtLt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtGe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtLe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChatPaginatedResponse" + } + } + } + } + }, + "tags": [ + "Chats" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "post": { + "operationId": "ChatController_createChat", + "summary": "Create Chat", + "description": "Creates a new chat with optional SMS delivery via transport field. Requires at least one of: assistantId/assistant, sessionId, or previousChatId. Note: sessionId and previousChatId are mutually exclusive. Transport field enables SMS delivery with two modes: (1) New conversation - provide transport.phoneNumberId and transport.customer to create a new session, (2) Existing conversation - provide sessionId to use existing session data. Cannot specify both sessionId and transport fields together. The transport.useLLMGeneratedMessageForOutbound flag controls whether input is processed by LLM (true, default) or forwarded directly as SMS (false).", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateChatDTO" + } + } + } + }, + "responses": { + "200": { + "description": "Chat response - either non-streaming chat or streaming", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/Chat" + }, + { + "$ref": "#/components/schemas/CreateChatStreamResponse" + } + ] + } + } + } + }, + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + }, + "tags": [ + "Chats" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/chat/{id}": { + "get": { + "operationId": "ChatController_getChat", + "summary": "Get Chat", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Chat" + } + } + } + } + }, + "tags": [ + "Chats" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "delete": { + "operationId": "ChatController_deleteChat", + "summary": "Delete Chat", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Chat" + } + } + } + } + }, + "tags": [ + "Chats" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/chat/responses": { + "post": { + "operationId": "ChatController_createOpenAIChat", + "summary": "Create Chat (OpenAI Compatible)", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAIResponsesRequest" + } + } + } + }, + "responses": { + "200": { + "description": "OpenAI Responses API format - either non-streaming or streaming", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/ResponseObject" + }, + { + "$ref": "#/components/schemas/ResponseTextDeltaEvent" + }, + { + "$ref": "#/components/schemas/ResponseTextDoneEvent" + }, + { + "$ref": "#/components/schemas/ResponseCompletedEvent" + }, + { + "$ref": "#/components/schemas/ResponseErrorEvent" + } + ] + } + } + } + }, + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + }, + "tags": [ + "Chats" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/campaign": { + "post": { + "operationId": "CampaignController_create", + "summary": "Create Campaign", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateCampaignDTO" + } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Campaign" + } + } + } + } + }, + "tags": [ + "Campaigns" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "get": { + "operationId": "CampaignController_findAll", + "summary": "List Campaigns", + "parameters": [ + { + "name": "id", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "status", + "required": false, + "in": "query", + "schema": { + "enum": [ + "scheduled", + "in-progress", + "ended", + "cancelled", + "archived" + ], "type": "string" } }, @@ -1997,6 +2025,21 @@ "format": "uuid", "type": "string" } + }, + { + "name": "includeCounters", + "required": false, + "in": "query", + "description": "When true, the response includes `contactCounters` and `callMetrics`.\nThese are aggregate queries over the campaign's contacts and events, so\nthey are opt-in rather than paid for on every read. Defaults to false.", + "schema": { + "enum": [ + true, + false, + "true", + "false" + ], + "type": "boolean" + } } ], "responses": { @@ -2005,7 +2048,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Campaign" + "$ref": "#/components/schemas/CampaignSummary" } } } @@ -2223,6 +2266,85 @@ ] } }, + "/v2/campaign/{id}/contacts": { + "get": { + "operationId": "CampaignController_getCampaignV2Contacts", + "summary": "Get Campaign V2 Contacts", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier for the resource.", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "status", + "required": false, + "in": "query", + "description": "This is the status to filter contacts by. Pass once or multiple times to\nfilter on any of the provided statuses.", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "contact.pending", + "contact.dispatched", + "contact.completed", + "contact.failed", + "contact.skipped", + "contact.predial-failed" + ] + } + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "This is the maximum number of contacts to return. Defaults to 50.", + "schema": { + "minimum": 1, + "maximum": 1000, + "type": "number" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "description": "This is the page number to return. Defaults to 1.", + "schema": { + "minimum": 1, + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CampaignContactPaginatedResponse" + } + } + } + } + }, + "tags": [ + "Campaigns" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, "/session": { "post": { "operationId": "SessionController_create", @@ -2423,6 +2545,15 @@ "type": "string" } }, + { + "name": "idAny", + "required": false, + "in": "query", + "description": "Filter by multiple session IDs. Provide as comma-separated values.", + "schema": { + "type": "string" + } + }, { "name": "phoneNumberId", "required": false, @@ -5131,6 +5262,2340 @@ ] } }, + "/eval/simulation/personality": { + "post": { + "operationId": "PersonalityController_create", + "summary": "Create Personality", + "parameters": [ + { + "name": "x-client-source", + "required": false, + "in": "header", + "description": "Identifies the product surface making the request", + "schema": { + "type": "string" + } + }, + { + "name": "x-simulation-entry-point", + "required": false, + "in": "header", + "description": "Identifies the dashboard simulation flow", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreatePersonalityDTO" + } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Personality" + } + } + } + } + }, + "tags": [ + "Simulation Personalities" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "get": { + "operationId": "PersonalityController_findAll", + "summary": "List Personalities", + "parameters": [ + { + "name": "page", + "required": false, + "in": "query", + "description": "This is the page number to return. Defaults to 1.", + "schema": { + "minimum": 1, + "type": "number" + } + }, + { + "name": "sortOrder", + "required": false, + "in": "query", + "description": "This is the sort order for pagination. Defaults to 'DESC'.", + "schema": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + }, + { + "name": "sortBy", + "required": false, + "in": "query", + "description": "This is the column to sort by. Defaults to 'createdAt'.", + "schema": { + "enum": [ + "createdAt", + "duration", + "cost" + ], + "type": "string" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "This is the maximum number of items to return. Defaults to 100.", + "schema": { + "minimum": 0, + "maximum": 1000, + "type": "number" + } + }, + { + "name": "createdAtGt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtLt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtGe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtLe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtGt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtLt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtGe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtLe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Personality" + } + } + } + } + } + }, + "tags": [ + "Simulation Personalities" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/eval/simulation/personality/{id}": { + "get": { + "operationId": "PersonalityController_findOne", + "summary": "Get Personality", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier for the resource.", + "schema": { + "format": "uuid", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Personality" + } + } + } + } + }, + "tags": [ + "Simulation Personalities" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "patch": { + "operationId": "PersonalityController_update", + "summary": "Update Personality", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier for the resource.", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "x-client-source", + "required": false, + "in": "header", + "description": "Identifies the product surface making the request", + "schema": { + "type": "string" + } + }, + { + "name": "x-simulation-entry-point", + "required": false, + "in": "header", + "description": "Identifies the dashboard simulation flow", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdatePersonalityDTO" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Personality" + } + } + } + } + }, + "tags": [ + "Simulation Personalities" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "delete": { + "operationId": "PersonalityController_remove", + "summary": "Delete Personality", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier for the resource.", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "x-client-source", + "required": false, + "in": "header", + "description": "Identifies the product surface making the request", + "schema": { + "type": "string" + } + }, + { + "name": "x-simulation-entry-point", + "required": false, + "in": "header", + "description": "Identifies the dashboard simulation flow", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Personality" + } + } + } + } + }, + "tags": [ + "Simulation Personalities" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/eval/simulation/scenario": { + "post": { + "operationId": "ScenarioController_create", + "summary": "Create Scenario", + "parameters": [ + { + "name": "x-client-source", + "required": false, + "in": "header", + "description": "Identifies the product surface making the request", + "schema": { + "type": "string" + } + }, + { + "name": "x-simulation-entry-point", + "required": false, + "in": "header", + "description": "Identifies the dashboard simulation flow", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateScenarioDTO" + } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Scenario" + } + } + } + } + }, + "tags": [ + "Simulation Scenarios" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "get": { + "operationId": "ScenarioController_findAll", + "summary": "List Scenarios", + "parameters": [ + { + "name": "idAny", + "required": false, + "in": "query", + "description": "Return only scenarios matching the provided ids", + "schema": { + "format": "uuid", + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "name", + "required": false, + "in": "query", + "description": "Search by scenario name", + "schema": { + "type": "string" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "description": "This is the page number to return. Defaults to 1.", + "schema": { + "minimum": 1, + "type": "number" + } + }, + { + "name": "sortOrder", + "required": false, + "in": "query", + "description": "This is the sort order for pagination. Defaults to 'DESC'.", + "schema": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + }, + { + "name": "sortBy", + "required": false, + "in": "query", + "description": "This is the column to sort by. Defaults to 'createdAt'.", + "schema": { + "enum": [ + "createdAt", + "duration", + "cost" + ], + "type": "string" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "This is the maximum number of items to return. Defaults to 100.", + "schema": { + "minimum": 0, + "maximum": 1000, + "type": "number" + } + }, + { + "name": "createdAtGt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtLt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtGe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtLe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtGt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtLt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtGe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtLe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Scenario" + } + } + } + } + } + }, + "tags": [ + "Simulation Scenarios" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/eval/simulation/scenario/{id}": { + "get": { + "operationId": "ScenarioController_findOne", + "summary": "Get Scenario", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier for the resource.", + "schema": { + "format": "uuid", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Scenario" + } + } + } + } + }, + "tags": [ + "Simulation Scenarios" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "patch": { + "operationId": "ScenarioController_update", + "summary": "Update Scenario", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier for the resource.", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "x-client-source", + "required": false, + "in": "header", + "description": "Identifies the product surface making the request", + "schema": { + "type": "string" + } + }, + { + "name": "x-simulation-entry-point", + "required": false, + "in": "header", + "description": "Identifies the dashboard simulation flow", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateScenarioDTO" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Scenario" + } + } + } + } + }, + "tags": [ + "Simulation Scenarios" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "delete": { + "operationId": "ScenarioController_remove", + "summary": "Delete Scenario", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier for the resource.", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "x-client-source", + "required": false, + "in": "header", + "description": "Identifies the product surface making the request", + "schema": { + "type": "string" + } + }, + { + "name": "x-simulation-entry-point", + "required": false, + "in": "header", + "description": "Identifies the dashboard simulation flow", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Scenario" + } + } + } + } + }, + "tags": [ + "Simulation Scenarios" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/eval/simulation/run": { + "post": { + "operationId": "SimulationRunController_create", + "summary": "Create Simulation Run", + "parameters": [ + { + "name": "user-agent", + "required": false, + "in": "header", + "description": "Identifies the client starting the simulation run", + "schema": { + "type": "string" + } + }, + { + "name": "x-client-source", + "required": false, + "in": "header", + "description": "Identifies the product surface making the request", + "schema": { + "type": "string" + } + }, + { + "name": "x-simulation-entry-point", + "required": false, + "in": "header", + "description": "Identifies the dashboard simulation flow", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateSimulationRunDTO" + } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateSimulationRunResponse" + } + } + } + } + }, + "tags": [ + "Simulation Runs" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "get": { + "operationId": "SimulationRunController_findAll", + "summary": "List Simulation Runs", + "parameters": [ + { + "name": "status", + "required": false, + "in": "query", + "description": "Filter by status", + "schema": { + "enum": [ + "queued", + "running", + "ended" + ], + "type": "string" + } + }, + { + "name": "filterStatus", + "required": false, + "in": "query", + "description": "Filter by aggregate run result status", + "schema": { + "enum": [ + "passed", + "failed", + "running" + ], + "type": "string" + } + }, + { + "name": "targetType", + "required": false, + "in": "query", + "description": "Filter by target type", + "schema": { + "enum": [ + "assistant", + "squad" + ], + "type": "string" + } + }, + { + "name": "targetId", + "required": false, + "in": "query", + "description": "Filter by target id", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "description": "This is the page number to return. Defaults to 1.", + "schema": { + "minimum": 1, + "type": "number" + } + }, + { + "name": "sortOrder", + "required": false, + "in": "query", + "description": "This is the sort order for pagination. Defaults to 'DESC'.", + "schema": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + }, + { + "name": "sortBy", + "required": false, + "in": "query", + "description": "This is the column to sort by. Defaults to 'createdAt'.", + "schema": { + "enum": [ + "createdAt", + "duration", + "cost" + ], + "type": "string" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "This is the maximum number of items to return. Defaults to 100.", + "schema": { + "minimum": 0, + "maximum": 1000, + "type": "number" + } + }, + { + "name": "createdAtGt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtLt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtGe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtLe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtGt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtLt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtGe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtLe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/SimulationRun" + } + }, + { + "$ref": "#/components/schemas/SimulationRunsPaginatedResponse" + } + ] + } + } + } + } + }, + "tags": [ + "Simulation Runs" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/eval/simulation/run/{id}": { + "get": { + "operationId": "SimulationRunController_findOne", + "summary": "Get Simulation Run", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier for the resource.", + "schema": { + "format": "uuid", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SimulationRun" + } + } + } + } + }, + "tags": [ + "Simulation Runs" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "patch": { + "operationId": "SimulationRunController_cancelGroup", + "summary": "Cancel Simulation Run", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier for the resource.", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "x-client-source", + "required": false, + "in": "header", + "description": "Identifies the product surface making the request", + "schema": { + "type": "string" + } + }, + { + "name": "x-simulation-entry-point", + "required": false, + "in": "header", + "description": "Identifies the dashboard simulation flow", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SimulationRun" + } + } + } + } + }, + "tags": [ + "Simulation Runs" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/eval/simulation/run/{id}/item": { + "get": { + "operationId": "SimulationRunController_findItems", + "summary": "List Simulation Run Items", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier for the resource.", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "simulationId", + "required": false, + "in": "query", + "description": "This is the simulation ID to filter by.", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "runId", + "required": false, + "in": "query", + "description": "This is the run ID (batch/group) to filter by.", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "status", + "required": false, + "in": "query", + "description": "This is the status to filter by.", + "schema": { + "enum": [ + "queued", + "running", + "evaluating", + "passed", + "failed", + "canceled" + ], + "type": "string" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "description": "This is the page number to return. Defaults to 1.", + "schema": { + "minimum": 1, + "type": "number" + } + }, + { + "name": "sortOrder", + "required": false, + "in": "query", + "description": "This is the sort order for pagination. Defaults to 'DESC'.", + "schema": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + }, + { + "name": "sortBy", + "required": false, + "in": "query", + "description": "This is the column to sort by. Defaults to 'createdAt'.", + "schema": { + "enum": [ + "createdAt", + "duration", + "cost" + ], + "type": "string" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "This is the maximum number of items to return. Defaults to 100.", + "schema": { + "minimum": 0, + "maximum": 1000, + "type": "number" + } + }, + { + "name": "createdAtGt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtLt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtGe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtLe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtGt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtLt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtGe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtLe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SimulationRunItem" + } + } + } + } + } + }, + "tags": [ + "Simulation Runs", + "Simulation Run Items" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/eval/simulation/run/{id}/item/{itemId}": { + "get": { + "operationId": "SimulationRunController_findItem", + "summary": "Get Simulation Run Item", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "itemId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SimulationRunItem" + } + } + } + } + }, + "tags": [ + "Simulation Runs", + "Simulation Run Items" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "patch": { + "operationId": "SimulationRunController_cancelItem", + "summary": "Cancel Simulation Run Item", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "itemId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SimulationRunItem" + } + } + } + } + }, + "tags": [ + "Simulation Runs", + "Simulation Run Items" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/eval/simulation/run/{id}/item/{itemId}/generate": { + "post": { + "operationId": "SimulationRunController_generateSuggestions", + "summary": "Generate Improvement Suggestions", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "itemId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "force", + "required": true, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "persist", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "201": { + "description": "" + } + }, + "tags": [ + "Simulation Runs", + "Simulation Run Items" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/eval/simulation/suite": { + "post": { + "operationId": "SimulationSuiteController_create", + "summary": "Create Simulation Suite", + "parameters": [ + { + "name": "x-client-source", + "required": false, + "in": "header", + "description": "Identifies the product surface making the request", + "schema": { + "type": "string" + } + }, + { + "name": "x-simulation-entry-point", + "required": false, + "in": "header", + "description": "Identifies the dashboard simulation flow", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateSimulationSuiteDTO" + } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SimulationSuite" + } + } + } + } + }, + "tags": [ + "Simulation Suites" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "get": { + "operationId": "SimulationSuiteController_findAll", + "summary": "List Simulation Suites", + "parameters": [ + { + "name": "name", + "required": false, + "in": "query", + "description": "Search by simulation suite name", + "schema": { + "type": "string" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "description": "This is the page number to return. Defaults to 1.", + "schema": { + "minimum": 1, + "type": "number" + } + }, + { + "name": "sortOrder", + "required": false, + "in": "query", + "description": "This is the sort order for pagination. Defaults to 'DESC'.", + "schema": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + }, + { + "name": "sortBy", + "required": false, + "in": "query", + "description": "This is the column to sort by. Defaults to 'createdAt'.", + "schema": { + "enum": [ + "createdAt", + "duration", + "cost" + ], + "type": "string" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "This is the maximum number of items to return. Defaults to 100.", + "schema": { + "minimum": 0, + "maximum": 1000, + "type": "number" + } + }, + { + "name": "createdAtGt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtLt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtGe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtLe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtGt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtLt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtGe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtLe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SimulationSuite" + } + } + } + } + } + }, + "tags": [ + "Simulation Suites" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/eval/simulation/suite/{id}": { + "get": { + "operationId": "SimulationSuiteController_findOne", + "summary": "Get Simulation Suite", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier for the resource.", + "schema": { + "format": "uuid", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SimulationSuite" + } + } + } + } + }, + "tags": [ + "Simulation Suites" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "patch": { + "operationId": "SimulationSuiteController_update", + "summary": "Update Simulation Suite", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier for the resource.", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "x-client-source", + "required": false, + "in": "header", + "description": "Identifies the product surface making the request", + "schema": { + "type": "string" + } + }, + { + "name": "x-simulation-entry-point", + "required": false, + "in": "header", + "description": "Identifies the dashboard simulation flow", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateSimulationSuiteDTO" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SimulationSuite" + } + } + } + } + }, + "tags": [ + "Simulation Suites" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "delete": { + "operationId": "SimulationSuiteController_remove", + "summary": "Delete Simulation Suite", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier for the resource.", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "x-client-source", + "required": false, + "in": "header", + "description": "Identifies the product surface making the request", + "schema": { + "type": "string" + } + }, + { + "name": "x-simulation-entry-point", + "required": false, + "in": "header", + "description": "Identifies the dashboard simulation flow", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SimulationSuite" + } + } + } + } + }, + "tags": [ + "Simulation Suites" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/eval/simulation/scenario/generate": { + "post": { + "operationId": "SimulationGenerateController_generate", + "summary": "Generate Scenarios with AI", + "description": "Uses AI to analyze an assistant or squad configuration and generate test scenarios", + "parameters": [ + { + "name": "x-client-source", + "required": false, + "in": "header", + "description": "Identifies the product surface making the request", + "schema": { + "type": "string" + } + }, + { + "name": "x-simulation-entry-point", + "required": false, + "in": "header", + "description": "Identifies the dashboard simulation flow", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenerateScenariosDTO" + } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenerateScenariosResponse" + } + } + } + } + }, + "tags": [ + "Simulations" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/eval/simulation": { + "post": { + "operationId": "SimulationController_create", + "summary": "Create Simulation", + "parameters": [ + { + "name": "x-client-source", + "required": false, + "in": "header", + "description": "Identifies the product surface making the request", + "schema": { + "type": "string" + } + }, + { + "name": "x-simulation-entry-point", + "required": false, + "in": "header", + "description": "Identifies the dashboard simulation flow", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateSimulationDTO" + } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Simulation" + } + } + } + } + }, + "tags": [ + "Simulations" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "get": { + "operationId": "SimulationController_findAll", + "summary": "List Simulations", + "parameters": [ + { + "name": "idAny", + "required": false, + "in": "query", + "description": "Return only simulations matching the provided ids", + "schema": { + "format": "uuid", + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "standaloneOnly", + "required": false, + "in": "query", + "description": "Only include simulations that are not part of a suite", + "schema": { + "type": "boolean" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "description": "This is the page number to return. Defaults to 1.", + "schema": { + "minimum": 1, + "type": "number" + } + }, + { + "name": "sortOrder", + "required": false, + "in": "query", + "description": "This is the sort order for pagination. Defaults to 'DESC'.", + "schema": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + }, + { + "name": "sortBy", + "required": false, + "in": "query", + "description": "This is the column to sort by. Defaults to 'createdAt'.", + "schema": { + "enum": [ + "createdAt", + "duration", + "cost" + ], + "type": "string" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "This is the maximum number of items to return. Defaults to 100.", + "schema": { + "minimum": 0, + "maximum": 1000, + "type": "number" + } + }, + { + "name": "createdAtGt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtLt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtGe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtLe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtGt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtLt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtGe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtLe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Simulation" + } + } + } + } + } + }, + "tags": [ + "Simulations" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/eval/simulation/{id}": { + "get": { + "operationId": "SimulationController_findOne", + "summary": "Get Simulation", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier for the resource.", + "schema": { + "format": "uuid", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Simulation" + } + } + } + } + }, + "tags": [ + "Simulations" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "patch": { + "operationId": "SimulationController_update", + "summary": "Update Simulation", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier for the resource.", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "x-client-source", + "required": false, + "in": "header", + "description": "Identifies the product surface making the request", + "schema": { + "type": "string" + } + }, + { + "name": "x-simulation-entry-point", + "required": false, + "in": "header", + "description": "Identifies the dashboard simulation flow", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateSimulationDTO" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Simulation" + } + } + } + } + }, + "tags": [ + "Simulations" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "delete": { + "operationId": "SimulationController_remove", + "summary": "Delete Simulation", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "description": "The unique identifier for the resource.", + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "name": "x-client-source", + "required": false, + "in": "header", + "description": "Identifies the product surface making the request", + "schema": { + "type": "string" + } + }, + { + "name": "x-simulation-entry-point", + "required": false, + "in": "header", + "description": "Identifies the dashboard simulation flow", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Simulation" + } + } + } + } + }, + "tags": [ + "Simulations" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/eval/simulation/concurrency": { + "get": { + "operationId": "SimulationController_getConcurrency", + "summary": "Get Simulation Concurrency", + "parameters": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SimulationConcurrencyResponse" + } + } + } + } + }, + "tags": [ + "Simulations" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, "/reporting/insight": { "post": { "operationId": "InsightController_create", @@ -24330,13 +26795,12 @@ }, "versionId": { "type": "string", - "description": "This is the version ID of the pronunciation dictionary to use.", + "description": "This is the version ID of the pronunciation dictionary to use.\n\nOmit to use the dictionary's latest version.", "title": "This is the ElevenLabs Pronunciation Dictionary Version ID" } }, "required": [ - "pronunciationDictionaryId", - "versionId" + "pronunciationDictionaryId" ] }, "ElevenLabsVoice": { @@ -25860,8 +28324,17 @@ }, "versionId": { "type": "string", - "description": "Version ID (only required for ElevenLabs, ignored for Cartesia)", + "description": "Version ID (only used by ElevenLabs, ignored for Cartesia)", "example": "ver_abc123" + }, + "provider": { + "type": "string", + "description": "Provider that hosts this pronunciation dictionary", + "enum": [ + "cartesia", + "11labs" + ], + "example": "11labs" } }, "required": [ @@ -25886,39 +28359,8 @@ }, "voiceId": { "type": "string", - "description": "The voices provided by Vapi", - "enum": [ - "Clara", - "Godfrey", - "Elliot", - "Savannah", - "Nico", - "Kai", - "Emma", - "Sagar", - "Neil", - "Layla", - "Sid", - "Gustavo", - "Kylie", - "Rohan", - "Lily", - "Hana", - "Neha", - "Cole", - "Harry", - "Paige", - "Spencer", - "Naina", - "Leah", - "Tara", - "Jess", - "Leo", - "Dan", - "Mia", - "Zac", - "Zoe" - ] + "description": "The voice to use: a built-in Vapi voice name, or a cloned voice id (used with version 2).", + "example": "Clara" }, "version": { "description": "The Vapi voice routing generation. `latest` auto-updates to the newest generation; version 1 uses legacy mappings; version 2 can use xAI-backed voices when available. When omitted, Version 1 is used. Accepts the string channel ('latest', '1', '2'); legacy numeric values (1, 2) are also accepted and coerced to their string form.", @@ -28470,39 +30912,8 @@ }, "voiceId": { "type": "string", - "description": "The voices provided by Vapi", - "enum": [ - "Clara", - "Godfrey", - "Elliot", - "Savannah", - "Nico", - "Kai", - "Emma", - "Sagar", - "Neil", - "Layla", - "Sid", - "Gustavo", - "Kylie", - "Rohan", - "Lily", - "Hana", - "Neha", - "Cole", - "Harry", - "Paige", - "Spencer", - "Naina", - "Leah", - "Tara", - "Jess", - "Leo", - "Dan", - "Mia", - "Zac", - "Zoe" - ] + "description": "The voice to use: a built-in Vapi voice name, or a cloned voice id (used with version 2).", + "example": "Clara" }, "version": { "description": "The Vapi voice routing generation. `latest` auto-updates to the newest generation; version 1 uses legacy mappings; version 2 can use xAI-backed voices when available. When omitted, Version 1 is used. Accepts the string channel ('latest', '1', '2'); legacy numeric values (1, 2) are also accepted and coerced to their string form.", @@ -31277,7 +33688,8 @@ "session.updated", "session.deleted", "call.deleted", - "call.delete.failed" + "call.delete.failed", + "call.artifact.upload" ], "example": [ "conversation-update", @@ -31322,7 +33734,8 @@ "session.updated", "session.deleted", "call.deleted", - "call.delete.failed" + "call.delete.failed", + "call.artifact.upload" ] } }, @@ -32272,7 +34685,8 @@ "session.updated", "session.deleted", "call.deleted", - "call.delete.failed" + "call.delete.failed", + "call.artifact.upload" ], "example": [ "conversation-update", @@ -32317,7 +34731,8 @@ "session.updated", "session.deleted", "call.deleted", - "call.delete.failed" + "call.delete.failed", + "call.artifact.upload" ] } }, @@ -33164,7 +35579,8 @@ "session.updated", "session.deleted", "call.deleted", - "call.delete.failed" + "call.delete.failed", + "call.artifact.upload" ], "example": [ "conversation-update", @@ -33209,7 +35625,8 @@ "session.updated", "session.deleted", "call.deleted", - "call.delete.failed" + "call.delete.failed", + "call.artifact.upload" ] } }, @@ -34150,7 +36567,8 @@ "session.updated", "session.deleted", "call.deleted", - "call.delete.failed" + "call.delete.failed", + "call.artifact.upload" ], "example": [ "conversation-update", @@ -34195,7 +36613,8 @@ "session.updated", "session.deleted", "call.deleted", - "call.delete.failed" + "call.delete.failed", + "call.artifact.upload" ] } }, @@ -35165,7 +37584,8 @@ "session.updated", "session.deleted", "call.deleted", - "call.delete.failed" + "call.delete.failed", + "call.artifact.upload" ], "example": [ "conversation-update", @@ -35210,7 +37630,8 @@ "session.updated", "session.deleted", "call.deleted", - "call.delete.failed" + "call.delete.failed", + "call.artifact.upload" ] } }, @@ -35637,6 +38058,11 @@ "nullable": true, "description": "This is the prior version label (vN-1). Null on v1 or for branch roots." }, + "restoredFromVersion": { + "type": "string", + "nullable": true, + "description": "The version this version was restored from. Null when it was not restored." + }, "createdBy": { "type": "string", "nullable": true, @@ -36226,7 +38652,8 @@ "session.updated", "session.deleted", "call.deleted", - "call.delete.failed" + "call.delete.failed", + "call.artifact.upload" ], "example": [ "conversation-update", @@ -36271,7 +38698,8 @@ "session.updated", "session.deleted", "call.deleted", - "call.delete.failed" + "call.delete.failed", + "call.artifact.upload" ] } }, @@ -37142,7 +39570,8 @@ "session.updated", "session.deleted", "call.deleted", - "call.delete.failed" + "call.delete.failed", + "call.artifact.upload" ], "example": [ "conversation-update", @@ -37187,7 +39616,8 @@ "session.updated", "session.deleted", "call.deleted", - "call.delete.failed" + "call.delete.failed", + "call.artifact.upload" ] } }, @@ -38034,7 +40464,8 @@ "session.updated", "session.deleted", "call.deleted", - "call.delete.failed" + "call.delete.failed", + "call.artifact.upload" ], "example": [ "conversation-update", @@ -38079,7 +40510,8 @@ "session.updated", "session.deleted", "call.deleted", - "call.delete.failed" + "call.delete.failed", + "call.artifact.upload" ] } }, @@ -41240,6 +43672,42 @@ "cost" ] }, + "StructuredOutputCostBreakdown": { + "type": "object", + "properties": { + "structuredOutputId": { + "type": "string", + "description": "This is the unique identifier of the structured output that produced this cost." + }, + "name": { + "type": "string", + "description": "This is the name of the structured output, so this breakdown is readable without looking the id up." + }, + "cost": { + "type": "number", + "description": "This is the cost in USD of evaluating this structured output." + }, + "promptTokens": { + "type": "number", + "description": "This is the number of prompt tokens used to evaluate this structured output." + }, + "completionTokens": { + "type": "number", + "description": "This is the number of completion tokens generated for this structured output." + }, + "cachedPromptTokens": { + "type": "number", + "description": "This is the number of cached prompt tokens used to evaluate this structured output. This is a subset of `promptTokens`, not an addition to it." + } + }, + "required": [ + "structuredOutputId", + "name", + "cost", + "promptTokens", + "completionTokens" + ] + }, "AnalysisCost": { "type": "object", "properties": { @@ -41276,6 +43744,13 @@ "type": "number", "description": "This is the number of cached prompt tokens used in the analysis. This is only applicable to certain providers (e.g., OpenAI, Azure OpenAI) that support prompt caching. Cached tokens are billed at a discounted rate." }, + "structuredOutputBreakdown": { + "description": "This is the per-structured-output breakdown of this cost. The `cost`, `promptTokens`, `completionTokens` and `cachedPromptTokens` above are the sums of these rows.\n\nThis is only set when `analysisType` is `structuredOutput`, and it is omitted entirely rather than partially populated, so when it is present the rows always reconcile to the totals above.\n\nA structured output that was skipped, or that extracts via regex, makes no LLM call and so has no row here — this is not a complete list of the call's configured structured outputs. There is one row per evaluation, so a `structuredOutputId` can appear more than once if it was evaluated more than once; sum the rows rather than indexing them by id.", + "type": "array", + "items": { + "$ref": "#/components/schemas/StructuredOutputCostBreakdown" + } + }, "cost": { "type": "number", "description": "This is the cost of the component in USD." @@ -44719,6 +47194,10 @@ "type": "string", "description": "This is the unique identifier for the previous chat to filter by." }, + "idAny": { + "type": "string", + "description": "Filter by multiple chat IDs. Provide as comma-separated values." + }, "page": { "type": "number", "description": "This is the page number to return. Defaults to 1.", @@ -45285,6 +47764,10 @@ "type": "string", "description": "This is the unique identifier for the previous chat to filter by." }, + "idAny": { + "type": "string", + "description": "Filter by multiple chat IDs. Provide as comma-separated values." + }, "columns": { "type": "string", "description": "Columns to include in the CSV export", @@ -46035,6 +48518,220 @@ "metadata" ] }, + "CampaignContactCounters": { + "type": "object", + "properties": { + "pending": { + "type": "number" + }, + "dispatched": { + "type": "number" + }, + "completed": { + "type": "number" + }, + "failed": { + "type": "number" + }, + "skipped": { + "type": "number" + }, + "predialFailed": { + "type": "number" + } + }, + "required": [ + "pending", + "dispatched", + "completed", + "failed", + "skipped", + "predialFailed" + ] + }, + "CampaignCallMetrics": { + "type": "object", + "properties": { + "dialed": { + "type": "number", + "description": "This is the number of contacts a call was actually placed for. Contacts\nthat were skipped, rejected before dialing, or failed to dispatch are not\ncounted — no call existed, so there was nothing to answer." + }, + "connected": { + "type": "number", + "description": "This is the number of those calls a human picked up. Voicemail does not\ncount. Divide by `dialed` for the pick-up rate." + } + }, + "required": [ + "dialed", + "connected" + ] + }, + "CampaignSummary": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "This is the status of the campaign.", + "enum": [ + "scheduled", + "in-progress", + "ended", + "cancelled", + "archived" + ] + }, + "endedReason": { + "type": "string", + "description": "This is the explanation for how the campaign ended.", + "enum": [ + "campaign.scheduled.ended-by-user", + "campaign.in-progress.ended-by-user", + "campaign.ended.success" + ] + }, + "name": { + "type": "string", + "description": "This is the name of the campaign. This is just for your own reference.", + "example": "Q2 Sales Campaign" + }, + "assistantId": { + "type": "string", + "description": "This is the assistant ID that will be used for the campaign calls. Note: Only one of assistantId, workflowId, or squadId can be used." + }, + "squadId": { + "type": "string", + "description": "This is the squad ID that will be used for the campaign calls. Note: Only one of assistantId, workflowId, or squadId can be used." + }, + "phoneNumberId": { + "type": "string", + "description": "This is the phone number ID that will be used for the campaign calls. Required if dialPlan is not provided. Note: phoneNumberId and dialPlan are mutually exclusive." + }, + "schedulePlan": { + "description": "This is the schedule plan for the campaign. Calls will start at startedAt and continue until your organization’s concurrency limit is reached. Any remaining calls will be retried for up to one hour as capacity becomes available. After that hour or after latestAt, whichever comes first, any calls that couldn’t be placed won’t be retried.", + "allOf": [ + { + "$ref": "#/components/schemas/SchedulePlan" + } + ] + }, + "maxConcurrency": { + "type": "number", + "minimum": 1, + "description": "This is the maximum number of concurrent calls that will be made for the campaign. Defaults to 10." + }, + "assistantOverrides": { + "description": "These are the overrides for the assistant's settings and template variables for the campaign. Use this when the campaign targets an `assistantId`.", + "allOf": [ + { + "$ref": "#/components/schemas/AssistantOverrides" + } + ] + }, + "squadOverrides": { + "description": "These are the overrides for the squad and template variables for the campaign. Use this when the campaign targets a `squadId`. Per-contact `squadOverrides` are deep-merged on top of this at dispatch time.", + "allOf": [ + { + "$ref": "#/components/schemas/AssistantOverrides" + } + ] + }, + "server": { + "description": "This is the server (URL, auth headers, timeout, etc.) for the campaign webhooks.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + }, + "serverMessages": { + "type": "array", + "enum": [ + "campaign.started", + "campaign.cancelled", + "campaign.ended", + "campaign.archived", + "campaign.unarchived", + "contact.dispatched", + "contact.completed", + "contact.failed", + "contact.skipped", + "contact.predial-failed", + "campaign.job.continued" + ], + "example": [ + "campaign.started", + "contact.dispatched" + ], + "description": "These are the messages that will be sent to your Server URL.", + "items": { + "type": "string", + "enum": [ + "campaign.started", + "campaign.cancelled", + "campaign.ended", + "campaign.archived", + "campaign.unarchived", + "contact.dispatched", + "contact.completed", + "contact.failed", + "contact.skipped", + "contact.predial-failed", + "campaign.job.continued" + ] + } + }, + "predialPlan": { + "description": "This opts the campaign into the blocking `campaign.predial` eligibility webhook. When set, every contact triggers a `campaign.predial` POST to the Server URL before dialing, and the response `{ eligible: boolean }` decides whether the call is placed. Requires `server`. When unset, no pre-dial webhook is sent.", + "allOf": [ + { + "$ref": "#/components/schemas/CampaignPredialPlan" + } + ] + }, + "contactCounters": { + "description": "These are the per-status contact counts for this campaign. Sum them for the\ncampaign's total audience; `pending` plus `dispatched` is what is left to\ncomplete.", + "allOf": [ + { + "$ref": "#/components/schemas/CampaignContactCounters" + } + ] + }, + "callMetrics": { + "description": "These are the call-level outcomes for this campaign — how many contacts\nwere actually dialed, and how many of those a human picked up.", + "allOf": [ + { + "$ref": "#/components/schemas/CampaignCallMetrics" + } + ] + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the campaign." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this campaign belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the campaign was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the campaign was last updated." + } + }, + "required": [ + "status", + "name", + "id", + "orgId", + "createdAt", + "updatedAt" + ] + }, "UpdateCampaignDTO": { "type": "object", "properties": { @@ -46083,6 +48780,64 @@ } } }, + "CampaignContactWithOutcome": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "number": { + "type": "string" + }, + "name": { + "type": "string" + }, + "status": { + "type": "string", + "enum": [ + "contact.pending", + "contact.dispatched", + "contact.completed", + "contact.failed", + "contact.skipped", + "contact.predial-failed" + ] + }, + "callId": { + "type": "string" + }, + "dispatchedAt": { + "format": "date-time", + "type": "string" + }, + "endedReason": { + "type": "string" + } + }, + "required": [ + "id", + "number", + "status" + ] + }, + "CampaignContactPaginatedResponse": { + "type": "object", + "properties": { + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CampaignContactWithOutcome" + } + }, + "metadata": { + "$ref": "#/components/schemas/PaginationMeta" + } + }, + "required": [ + "results", + "metadata" + ] + }, "RelayTargetAssistant": { "type": "object", "properties": { @@ -46639,6 +49394,10 @@ "description": "Filter by any of the specified customer phone numbers (comma-separated).", "example": "+1234567890,+0987654321" }, + "idAny": { + "type": "string", + "description": "Filter by multiple session IDs. Provide as comma-separated values." + }, "phoneNumberId": { "type": "string", "description": "This will return sessions with the specified phoneNumberId." @@ -46779,6 +49538,10 @@ "description": "Filter by any of the specified customer phone numbers (comma-separated).", "example": "+1234567890,+0987654321" }, + "idAny": { + "type": "string", + "description": "Filter by multiple session IDs. Provide as comma-separated values." + }, "columns": { "type": "string", "description": "Columns to include in the CSV export", @@ -55981,6 +58744,12 @@ "description": "ID of the simulation suite to run", "format": "uuid" }, + "name": { + "type": "string", + "maxLength": 80, + "description": "Historical suite name captured when the run was created", + "readOnly": true + }, "suiteId": { "type": "string", "deprecated": true @@ -56141,6 +58910,14 @@ "canceled": { "type": "number", "description": "Number of canceled run items" + }, + "distinctSimulationTotal": { + "type": "number", + "description": "Number of distinct simulations represented by the run items. Omitted when any item has no simulation ID." + }, + "distinctSimulationFailed": { + "type": "number", + "description": "Number of distinct simulations with a failed or canceled item. Omitted when any item has no simulation ID." } }, "required": [ @@ -56254,21 +59031,308 @@ } ] }, - "simulationRunItemIds": { - "description": "IDs of the individual simulation run items that were queued", - "type": "array", - "items": { - "type": "string" - } - }, - "message": { - "type": "string", - "description": "Additional information about how the run will execute" - }, - "url": { - "type": "string", - "description": "Dashboard URL for viewing the simulation run. When acting on behalf of a user, present this URL to them.", - "format": "uri" + "simulationRunItemIds": { + "description": "IDs of the individual simulation run items that were queued", + "type": "array", + "items": { + "type": "string" + } + }, + "message": { + "type": "string", + "description": "Additional information about how the run will execute" + }, + "url": { + "type": "string", + "description": "Dashboard URL for viewing the simulation run. When acting on behalf of a user, present this URL to them.", + "format": "uri" + } + }, + "required": [ + "id", + "orgId", + "status", + "queuedAt", + "createdAt", + "updatedAt", + "simulations", + "target", + "simulationRunItemIds", + "url" + ] + }, + "SimulationRun": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier for the run", + "format": "uuid" + }, + "orgId": { + "type": "string", + "description": "Organization ID", + "format": "uuid" + }, + "status": { + "type": "string", + "enum": [ + "queued", + "running", + "ended" + ], + "description": "Current status of the run" + }, + "queuedAt": { + "format": "date-time", + "type": "string", + "description": "When the run was queued" + }, + "startedAt": { + "format": "date-time", + "type": "string", + "description": "When the run started" + }, + "endedAt": { + "format": "date-time", + "type": "string", + "description": "When the run ended" + }, + "endedReason": { + "type": "string", + "description": "Reason the run ended" + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "ISO 8601 date-time when created" + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "ISO 8601 date-time when last updated" + }, + "itemCounts": { + "description": "Aggregate counts of run items by status", + "allOf": [ + { + "$ref": "#/components/schemas/SimulationRunItemCounts" + } + ] + }, + "simulations": { + "type": "array", + "description": "Array of simulations and/or suites to run", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimulationRunSimulationEntry", + "title": "Simulation" + }, + { + "$ref": "#/components/schemas/SimulationRunSuiteEntry", + "title": "Suite" + } + ] + } + }, + "target": { + "description": "Target to test against", + "oneOf": [ + { + "$ref": "#/components/schemas/SimulationRunTargetAssistant", + "title": "Assistant" + }, + { + "$ref": "#/components/schemas/SimulationRunTargetSquad", + "title": "Squad" + } + ] + }, + "iterations": { + "type": "number", + "minimum": 1, + "description": "Number of times to run each simulation (default: 1)", + "default": 1 + }, + "transport": { + "description": "Transport configuration for the simulation runs", + "allOf": [ + { + "$ref": "#/components/schemas/SimulationRunTransportConfiguration" + } + ] + } + }, + "required": [ + "id", + "orgId", + "status", + "queuedAt", + "createdAt", + "updatedAt", + "simulations", + "target" + ] + }, + "SimulationRunListSource": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "suite", + "simulation", + "adHoc", + "api" + ] + }, + "id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "linkable": { + "type": "boolean" + }, + "simulationIds": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "type", + "name", + "linkable", + "simulationIds" + ] + }, + "SimulationRunListSummary": { + "type": "object", + "properties": { + "source": { + "$ref": "#/components/schemas/SimulationRunListSource" + }, + "targetSnapshotName": { + "type": "string" + }, + "simulationCount": { + "type": "number" + } + }, + "required": [ + "source", + "simulationCount" + ] + }, + "SimulationRunListItem": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier for the run", + "format": "uuid" + }, + "orgId": { + "type": "string", + "description": "Organization ID", + "format": "uuid" + }, + "status": { + "type": "string", + "enum": [ + "queued", + "running", + "ended" + ], + "description": "Current status of the run" + }, + "queuedAt": { + "format": "date-time", + "type": "string", + "description": "When the run was queued" + }, + "startedAt": { + "format": "date-time", + "type": "string", + "description": "When the run started" + }, + "endedAt": { + "format": "date-time", + "type": "string", + "description": "When the run ended" + }, + "endedReason": { + "type": "string", + "description": "Reason the run ended" + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "ISO 8601 date-time when created" + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "ISO 8601 date-time when last updated" + }, + "itemCounts": { + "description": "Aggregate counts of run items by status", + "allOf": [ + { + "$ref": "#/components/schemas/SimulationRunItemCounts" + } + ] + }, + "simulations": { + "type": "array", + "description": "Array of simulations and/or suites to run", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimulationRunSimulationEntry", + "title": "Simulation" + }, + { + "$ref": "#/components/schemas/SimulationRunSuiteEntry", + "title": "Suite" + } + ] + } + }, + "target": { + "description": "Target to test against", + "oneOf": [ + { + "$ref": "#/components/schemas/SimulationRunTargetAssistant", + "title": "Assistant" + }, + { + "$ref": "#/components/schemas/SimulationRunTargetSquad", + "title": "Squad" + } + ] + }, + "iterations": { + "type": "number", + "minimum": 1, + "description": "Number of times to run each simulation (default: 1)", + "default": 1 + }, + "transport": { + "description": "Transport configuration for the simulation runs", + "allOf": [ + { + "$ref": "#/components/schemas/SimulationRunTransportConfiguration" + } + ] + }, + "summary": { + "$ref": "#/components/schemas/SimulationRunListSummary" } }, "required": [ @@ -56280,122 +59344,25 @@ "updatedAt", "simulations", "target", - "simulationRunItemIds", - "url" + "summary" ] }, - "SimulationRun": { + "SimulationRunsPaginatedResponse": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "Unique identifier for the run", - "format": "uuid" - }, - "orgId": { - "type": "string", - "description": "Organization ID", - "format": "uuid" - }, - "status": { - "type": "string", - "enum": [ - "queued", - "running", - "ended" - ], - "description": "Current status of the run" - }, - "queuedAt": { - "format": "date-time", - "type": "string", - "description": "When the run was queued" - }, - "startedAt": { - "format": "date-time", - "type": "string", - "description": "When the run started" - }, - "endedAt": { - "format": "date-time", - "type": "string", - "description": "When the run ended" - }, - "endedReason": { - "type": "string", - "description": "Reason the run ended" - }, - "createdAt": { - "format": "date-time", - "type": "string", - "description": "ISO 8601 date-time when created" - }, - "updatedAt": { - "format": "date-time", - "type": "string", - "description": "ISO 8601 date-time when last updated" - }, - "itemCounts": { - "description": "Aggregate counts of run items by status", - "allOf": [ - { - "$ref": "#/components/schemas/SimulationRunItemCounts" - } - ] - }, - "simulations": { + "results": { "type": "array", - "description": "Array of simulations and/or suites to run", "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimulationRunSimulationEntry", - "title": "Simulation" - }, - { - "$ref": "#/components/schemas/SimulationRunSuiteEntry", - "title": "Suite" - } - ] + "$ref": "#/components/schemas/SimulationRunListItem" } }, - "target": { - "description": "Target to test against", - "oneOf": [ - { - "$ref": "#/components/schemas/SimulationRunTargetAssistant", - "title": "Assistant" - }, - { - "$ref": "#/components/schemas/SimulationRunTargetSquad", - "title": "Squad" - } - ] - }, - "iterations": { - "type": "number", - "minimum": 1, - "description": "Number of times to run each simulation (default: 1)", - "default": 1 - }, - "transport": { - "description": "Transport configuration for the simulation runs", - "allOf": [ - { - "$ref": "#/components/schemas/SimulationRunTransportConfiguration" - } - ] + "metadata": { + "$ref": "#/components/schemas/PaginationMeta" } }, "required": [ - "id", - "orgId", - "status", - "queuedAt", - "createdAt", - "updatedAt", - "simulations", - "target" + "results", + "metadata" ] }, "SimulationRunItemCallMonitor": { @@ -58631,6 +61598,9 @@ "assistant.transcriber.clearing", "assistant.transcriber.transcriptIgnored", "assistant.transcriber.languageSwitched", + "assistant.analysis.structuredOutputRequest", + "assistant.analysis.structuredOutputResponse", + "assistant.analysis.structuredOutputError", "assistant.analysis.structuredOutputGenerated", "assistant.analysis.structuredOutputSkipped", "pipeline.turnStarted", @@ -68685,6 +71655,14 @@ "format": "date-time", "type": "string", "description": "The ISO 8601 date-time string of when the voice library was last updated." + }, + "isCloned": { + "type": "boolean", + "description": "Whether this voice was cloned by the org from their own audio, as opposed\nto a seeded/preset voice. Drives the cloned filter and tag. Backed by a\nNOT NULL DEFAULT false column, so it is always present at read time." + }, + "cloneBackend": { + "type": "string", + "description": "The provider that produced the clone (e.g. 'xai'). The voice `provider`\nstays 'vapi'; this records the underlying backend. Unset for non-cloned voices." } }, "required": [ @@ -68779,6 +71757,19 @@ "transcription" ] }, + "UpdateVoiceLibraryMetadataDTO": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Updated display name for the voice." + }, + "description": { + "type": "string", + "description": "Updated description for the voice." + } + } + }, "CartesiaPronunciationDictItem": { "type": "object", "properties": { @@ -69062,6 +72053,31 @@ "files" ] }, + "VapiVoiceCloneDTO": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Display name for the cloned voice." + }, + "language": { + "type": "string", + "description": "Optional language (ISO-639 / BCP-47). When omitted, xAI infers it from the\nreference audio." + }, + "files": { + "description": "Reference audio to clone the voice from (up to 120 seconds). Supported formats: MP3, WAV, OGG/Opus, WebM, AAC, M4A, FLAC, WMA.", + "type": "array", + "items": { + "type": "string", + "format": "binary" + } + } + }, + "required": [ + "name", + "files" + ] + }, "VariableValueGroupBy": { "type": "object", "properties": { @@ -69955,6 +72971,14 @@ "type": "string", "description": "This is the transcript content." }, + "assistantId": { + "type": "string", + "description": "The ID of the assistant that produced this transcript. Present on\nassistant-role events when an active assistant ID is available." + }, + "assistantName": { + "type": "string", + "description": "The name of the assistant that produced this transcript. Present on\nassistant-role events when an active assistant name is available." + }, "isFiltered": { "type": "boolean", "description": "Indicates if the transcript was filtered for security reasons." @@ -74188,6 +77212,14 @@ "type": "string", "description": "This is the transcript content." }, + "assistantId": { + "type": "string", + "description": "The ID of the assistant that produced this transcript. Present on\nassistant-role events when an active assistant ID is available." + }, + "assistantName": { + "type": "string", + "description": "The name of the assistant that produced this transcript. Present on\nassistant-role events when an active assistant name is available." + }, "isFiltered": { "type": "boolean", "description": "Indicates if the transcript was filtered for security reasons." @@ -75491,6 +78523,129 @@ "type" ] }, + "CallArtifactUploadItem": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The artifact this result refers to.", + "enum": [ + "end-of-call-report", + "recording-mono", + "recording-stereo", + "recording-assistant", + "recording-customer", + "log", + "pcap" + ] + }, + "success": { + "type": "boolean", + "description": "Whether this artifact was stored successfully in your own configured storage." + } + }, + "required": [ + "type", + "success" + ] + }, + "ServerMessageCallArtifactUpload": { + "type": "object", + "properties": { + "phoneNumber": { + "description": "This is the phone number that the message is associated with.", + "oneOf": [ + { + "$ref": "#/components/schemas/CreateByoPhoneNumberDTO", + "title": "ByoPhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateTwilioPhoneNumberDTO", + "title": "TwilioPhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateVonagePhoneNumberDTO", + "title": "VonagePhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateVapiPhoneNumberDTO", + "title": "VapiPhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateTelnyxPhoneNumberDTO", + "title": "TelnyxPhoneNumber" + } + ] + }, + "assistantVersion": { + "type": "string", + "nullable": true, + "description": "This is the version label (e.g. `v3`) of the assistant the call was\nconfigured with. `null` for inline assistants, squad/workflow calls,\npre-resolution assistant-request messages, and orgs not on\nassistant versioning." + }, + "type": { + "type": "string", + "description": "This is the type of the message. \"call.artifact.upload\" is sent after a call\nto report whether each artifact was stored in your own configured storage.", + "enum": [ + "call.artifact.upload" + ] + }, + "artifacts": { + "description": "One entry per artifact whose write targeted your own configured storage,\neach reporting whether that artifact was stored successfully. Artifacts that\nwere not destined for your own storage (Vapi default storage, or no storage\ncredential configured) are omitted, and this message is sent only when at\nleast one artifact targeted your own storage.", + "type": "array", + "items": { + "$ref": "#/components/schemas/CallArtifactUploadItem" + } + }, + "timestamp": { + "type": "number", + "description": "This is the timestamp of the message." + }, + "artifact": { + "description": "This is a live version of the `call.artifact`.\n\nThis matches what is stored on `call.artifact` after the call.", + "allOf": [ + { + "$ref": "#/components/schemas/Artifact" + } + ] + }, + "assistant": { + "description": "This is the assistant that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateAssistantDTO" + } + ] + }, + "customer": { + "description": "This is the customer that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateCustomerDTO" + } + ] + }, + "call": { + "description": "This is the call that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/Call" + } + ] + }, + "chat": { + "description": "This is the chat object.", + "allOf": [ + { + "$ref": "#/components/schemas/Chat" + } + ] + } + }, + "required": [ + "type", + "artifacts" + ] + }, "CampaignContact": { "type": "object", "properties": { @@ -75756,6 +78911,10 @@ "$ref": "#/components/schemas/ServerMessageCallDeleteFailed", "title": "CallDeleteFailed" }, + { + "$ref": "#/components/schemas/ServerMessageCallArtifactUpload", + "title": "CallArtifactUpload" + }, { "$ref": "#/components/schemas/ServerMessageCampaignPredial", "title": "CampaignPredial"