From 8f093f6a037855599546c18924ec4decda844461 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 21 May 2025 23:34:34 +0000 Subject: [PATCH] chore: update OpenAPI specification --- fern/apis/api/openapi.json | 7580 +++++++++++++++++++++++++++--------- 1 file changed, 5766 insertions(+), 1814 deletions(-) diff --git a/fern/apis/api/openapi.json b/fern/apis/api/openapi.json index a270759b..47ce09cb 100644 --- a/fern/apis/api/openapi.json +++ b/fern/apis/api/openapi.json @@ -1142,12 +1142,28 @@ "title": "SlackSendMessageTool" }, { - "$ref": "#/components/schemas/CreateSmsSendToolDTO", + "$ref": "#/components/schemas/CreateSmsToolDTO", "title": "SmsSendTool" }, { "$ref": "#/components/schemas/CreateMcpToolDTO", "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" + }, + { + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" + }, + { + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" } ], "discriminator": { @@ -1168,8 +1184,12 @@ "google.sheets.row.append": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", "google.calendar.availability.check": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", "slack.message.send": "#/components/schemas/CreateSlackSendMessageToolDTO", - "sms": "#/components/schemas/CreateSmsSendToolDTO", - "mcp": "#/components/schemas/CreateMcpToolDTO" + "sms": "#/components/schemas/CreateSmsToolDTO", + "mcp": "#/components/schemas/CreateMcpToolDTO", + "gohighlevel.calendar.availability.check": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "gohighlevel.calendar.event.create": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "gohighlevel.contact.create": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "gohighlevel.contact.get": "#/components/schemas/CreateGoHighLevelContactGetToolDTO" } } } @@ -1244,12 +1264,28 @@ "title": "SlackSendMessageTool" }, { - "$ref": "#/components/schemas/SmsSendTool", + "$ref": "#/components/schemas/SmsTool", "title": "SmsSendTool" }, { "$ref": "#/components/schemas/McpTool", "title": "McpTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelCalendarAvailabilityTool", + "title": "GoHighLevelCalendarAvailabilityTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelCalendarEventCreateTool", + "title": "GoHighLevelCalendarEventCreateTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelContactCreateTool", + "title": "GoHighLevelContactCreateTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelContactGetTool", + "title": "GoHighLevelContactGetTool" } ], "discriminator": { @@ -1270,8 +1306,12 @@ "google.sheets.row.append": "#/components/schemas/GoogleSheetsRowAppendTool", "google.calendar.availability.check": "#/components/schemas/GoogleCalendarCheckAvailabilityTool", "slack.message.send": "#/components/schemas/SlackSendMessageTool", - "sms": "#/components/schemas/SmsSendTool", - "mcp": "#/components/schemas/McpTool" + "sms": "#/components/schemas/SmsTool", + "mcp": "#/components/schemas/McpTool", + "gohighlevel.calendar.availability.check": "#/components/schemas/GoHighLevelCalendarAvailabilityTool", + "gohighlevel.calendar.event.create": "#/components/schemas/GoHighLevelCalendarEventCreateTool", + "gohighlevel.contact.create": "#/components/schemas/GoHighLevelContactCreateTool", + "gohighlevel.contact.get": "#/components/schemas/GoHighLevelContactGetTool" } } } @@ -1454,12 +1494,28 @@ "title": "SlackSendMessageTool" }, { - "$ref": "#/components/schemas/SmsSendTool", + "$ref": "#/components/schemas/SmsTool", "title": "SmsSendTool" }, { "$ref": "#/components/schemas/McpTool", "title": "McpTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelCalendarAvailabilityTool", + "title": "GoHighLevelCalendarAvailabilityTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelCalendarEventCreateTool", + "title": "GoHighLevelCalendarEventCreateTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelContactCreateTool", + "title": "GoHighLevelContactCreateTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelContactGetTool", + "title": "GoHighLevelContactGetTool" } ], "discriminator": { @@ -1480,8 +1536,12 @@ "google.sheets.row.append": "#/components/schemas/GoogleSheetsRowAppendTool", "google.calendar.availability.check": "#/components/schemas/GoogleCalendarCheckAvailabilityTool", "slack.message.send": "#/components/schemas/SlackSendMessageTool", - "sms": "#/components/schemas/SmsSendTool", - "mcp": "#/components/schemas/McpTool" + "sms": "#/components/schemas/SmsTool", + "mcp": "#/components/schemas/McpTool", + "gohighlevel.calendar.availability.check": "#/components/schemas/GoHighLevelCalendarAvailabilityTool", + "gohighlevel.calendar.event.create": "#/components/schemas/GoHighLevelCalendarEventCreateTool", + "gohighlevel.contact.create": "#/components/schemas/GoHighLevelContactCreateTool", + "gohighlevel.contact.get": "#/components/schemas/GoHighLevelContactGetTool" } } } @@ -1582,12 +1642,28 @@ "title": "SlackSendMessageTool" }, { - "$ref": "#/components/schemas/SmsSendTool", + "$ref": "#/components/schemas/SmsTool", "title": "SmsSendTool" }, { "$ref": "#/components/schemas/McpTool", "title": "McpTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelCalendarAvailabilityTool", + "title": "GoHighLevelCalendarAvailabilityTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelCalendarEventCreateTool", + "title": "GoHighLevelCalendarEventCreateTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelContactCreateTool", + "title": "GoHighLevelContactCreateTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelContactGetTool", + "title": "GoHighLevelContactGetTool" } ], "discriminator": { @@ -1608,8 +1684,12 @@ "google.sheets.row.append": "#/components/schemas/GoogleSheetsRowAppendTool", "google.calendar.availability.check": "#/components/schemas/GoogleCalendarCheckAvailabilityTool", "slack.message.send": "#/components/schemas/SlackSendMessageTool", - "sms": "#/components/schemas/SmsSendTool", - "mcp": "#/components/schemas/McpTool" + "sms": "#/components/schemas/SmsTool", + "mcp": "#/components/schemas/McpTool", + "gohighlevel.calendar.availability.check": "#/components/schemas/GoHighLevelCalendarAvailabilityTool", + "gohighlevel.calendar.event.create": "#/components/schemas/GoHighLevelCalendarEventCreateTool", + "gohighlevel.contact.create": "#/components/schemas/GoHighLevelContactCreateTool", + "gohighlevel.contact.get": "#/components/schemas/GoHighLevelContactGetTool" } } } @@ -1706,12 +1786,28 @@ "title": "SlackSendMessageTool" }, { - "$ref": "#/components/schemas/UpdateSmsSendToolDTO", + "$ref": "#/components/schemas/UpdateSmsToolDTO", "title": "SmsSendTool" }, { "$ref": "#/components/schemas/UpdateMcpToolDTO", "title": "McpTool" + }, + { + "$ref": "#/components/schemas/UpdateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" + }, + { + "$ref": "#/components/schemas/UpdateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" + }, + { + "$ref": "#/components/schemas/UpdateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" + }, + { + "$ref": "#/components/schemas/UpdateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" } ], "discriminator": { @@ -1732,8 +1828,12 @@ "google.sheets.row.append": "#/components/schemas/UpdateGoogleSheetsRowAppendToolDTO", "google.calendar.availability.check": "#/components/schemas/UpdateGoogleCalendarCheckAvailabilityToolDTO", "slack.message.send": "#/components/schemas/UpdateSlackSendMessageToolDTO", - "sms": "#/components/schemas/UpdateSmsSendToolDTO", - "mcp": "#/components/schemas/UpdateMcpToolDTO" + "sms": "#/components/schemas/UpdateSmsToolDTO", + "mcp": "#/components/schemas/UpdateMcpToolDTO", + "gohighlevel.calendar.availability.check": "#/components/schemas/UpdateGoHighLevelCalendarAvailabilityToolDTO", + "gohighlevel.calendar.event.create": "#/components/schemas/UpdateGoHighLevelCalendarEventCreateToolDTO", + "gohighlevel.contact.create": "#/components/schemas/UpdateGoHighLevelContactCreateToolDTO", + "gohighlevel.contact.get": "#/components/schemas/UpdateGoHighLevelContactGetToolDTO" } } } @@ -1808,12 +1908,28 @@ "title": "SlackSendMessageTool" }, { - "$ref": "#/components/schemas/SmsSendTool", + "$ref": "#/components/schemas/SmsTool", "title": "SmsSendTool" }, { "$ref": "#/components/schemas/McpTool", "title": "McpTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelCalendarAvailabilityTool", + "title": "GoHighLevelCalendarAvailabilityTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelCalendarEventCreateTool", + "title": "GoHighLevelCalendarEventCreateTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelContactCreateTool", + "title": "GoHighLevelContactCreateTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelContactGetTool", + "title": "GoHighLevelContactGetTool" } ], "discriminator": { @@ -1834,8 +1950,12 @@ "google.sheets.row.append": "#/components/schemas/GoogleSheetsRowAppendTool", "google.calendar.availability.check": "#/components/schemas/GoogleCalendarCheckAvailabilityTool", "slack.message.send": "#/components/schemas/SlackSendMessageTool", - "sms": "#/components/schemas/SmsSendTool", - "mcp": "#/components/schemas/McpTool" + "sms": "#/components/schemas/SmsTool", + "mcp": "#/components/schemas/McpTool", + "gohighlevel.calendar.availability.check": "#/components/schemas/GoHighLevelCalendarAvailabilityTool", + "gohighlevel.calendar.event.create": "#/components/schemas/GoHighLevelCalendarEventCreateTool", + "gohighlevel.contact.create": "#/components/schemas/GoHighLevelContactCreateTool", + "gohighlevel.contact.get": "#/components/schemas/GoHighLevelContactGetTool" } } } @@ -1933,12 +2053,28 @@ "title": "SlackSendMessageTool" }, { - "$ref": "#/components/schemas/SmsSendTool", + "$ref": "#/components/schemas/SmsTool", "title": "SmsSendTool" }, { "$ref": "#/components/schemas/McpTool", "title": "McpTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelCalendarAvailabilityTool", + "title": "GoHighLevelCalendarAvailabilityTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelCalendarEventCreateTool", + "title": "GoHighLevelCalendarEventCreateTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelContactCreateTool", + "title": "GoHighLevelContactCreateTool" + }, + { + "$ref": "#/components/schemas/GoHighLevelContactGetTool", + "title": "GoHighLevelContactGetTool" } ], "discriminator": { @@ -1959,8 +2095,12 @@ "google.sheets.row.append": "#/components/schemas/GoogleSheetsRowAppendTool", "google.calendar.availability.check": "#/components/schemas/GoogleCalendarCheckAvailabilityTool", "slack.message.send": "#/components/schemas/SlackSendMessageTool", - "sms": "#/components/schemas/SmsSendTool", - "mcp": "#/components/schemas/McpTool" + "sms": "#/components/schemas/SmsTool", + "mcp": "#/components/schemas/McpTool", + "gohighlevel.calendar.availability.check": "#/components/schemas/GoHighLevelCalendarAvailabilityTool", + "gohighlevel.calendar.event.create": "#/components/schemas/GoHighLevelCalendarEventCreateTool", + "gohighlevel.contact.create": "#/components/schemas/GoHighLevelContactCreateTool", + "gohighlevel.contact.get": "#/components/schemas/GoHighLevelContactGetTool" } } } @@ -2546,7 +2686,7 @@ "/workflow": { "get": { "operationId": "WorkflowController_findAll", - "summary": "Get Workflows", + "summary": "[BETA] Get Workflows", "parameters": [], "responses": { "200": { @@ -2574,7 +2714,7 @@ }, "post": { "operationId": "WorkflowController_create", - "summary": "Create Workflow", + "summary": "[BETA] Create Workflow", "parameters": [], "requestBody": { "required": true, @@ -2611,7 +2751,7 @@ "/workflow/{id}": { "get": { "operationId": "WorkflowController_findOne", - "summary": "Get Workflow", + "summary": "[BETA] Get Workflow", "parameters": [ { "name": "id", @@ -2645,7 +2785,7 @@ }, "delete": { "operationId": "WorkflowController_delete", - "summary": "Delete Workflow", + "summary": "[BETA] Delete Workflow", "parameters": [ { "name": "id", @@ -2679,7 +2819,7 @@ }, "patch": { "operationId": "WorkflowController_update", - "summary": "Update Workflow", + "summary": "[BETA] Update Workflow", "parameters": [ { "name": "id", @@ -4615,6 +4755,48 @@ "role" ] }, + "Mono": { + "type": "object", + "properties": { + "combinedUrl": { + "type": "string", + "description": "This is the combined recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`." + }, + "assistantUrl": { + "type": "string", + "description": "This is the mono recording url for the assistant. To enable, set `assistant.artifactPlan.recordingEnabled`." + }, + "customerUrl": { + "type": "string", + "description": "This is the mono recording url for the customer. To enable, set `assistant.artifactPlan.recordingEnabled`." + } + } + }, + "Recording": { + "type": "object", + "properties": { + "stereoUrl": { + "type": "string", + "description": "This is the stereo recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`." + }, + "videoUrl": { + "type": "string", + "description": "This is the video recording url for the call. To enable, set `assistant.artifactPlan.videoRecordingEnabled`." + }, + "videoRecordingStartDelaySeconds": { + "type": "number", + "description": "This is video recording start delay in ms. To enable, set `assistant.artifactPlan.videoRecordingEnabled`. This can be used to align the playback of the recording with artifact.messages timestamps." + }, + "mono": { + "description": "This is the mono recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`.", + "allOf": [ + { + "$ref": "#/components/schemas/Mono" + } + ] + } + } + }, "Artifact": { "type": "object", "properties": { @@ -4655,19 +4837,31 @@ }, "recordingUrl": { "type": "string", - "description": "This is the recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`." + "description": "This is the recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`.", + "deprecated": true }, "stereoRecordingUrl": { "type": "string", - "description": "This is the stereo recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`." + "description": "This is the stereo recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`.", + "deprecated": true }, "videoRecordingUrl": { "type": "string", - "description": "This is video recording url for the call. To enable, set `assistant.artifactPlan.videoRecordingEnabled`." + "description": "This is video recording url for the call. To enable, set `assistant.artifactPlan.videoRecordingEnabled`.", + "deprecated": true }, "videoRecordingStartDelaySeconds": { "type": "number", - "description": "This is video recording start delay in ms. To enable, set `assistant.artifactPlan.videoRecordingEnabled`. This can be used to align the playback of the recording with artifact.messages timestamps." + "description": "This is video recording start delay in ms. To enable, set `assistant.artifactPlan.videoRecordingEnabled`. This can be used to align the playback of the recording with artifact.messages timestamps.", + "deprecated": true + }, + "recording": { + "description": "This is the recording url for the call. To enable, set `assistant.artifactPlan.recordingEnabled`.", + "allOf": [ + { + "$ref": "#/components/schemas/Recording" + } + ] }, "transcript": { "type": "string", @@ -4966,13 +5160,6 @@ "BackoffPlan": { "type": "object", "properties": { - "maxRetries": { - "type": "number", - "description": "This is the maximum number of retries to attempt if the request fails. Defaults to 0 (no retries).\n\n@default 0", - "minimum": 0, - "maximum": 10, - "example": 0 - }, "type": { "type": "object", "description": "This is the type of backoff plan to use. Defaults to fixed.\n\n@default fixed", @@ -4982,6 +5169,13 @@ ], "example": "fixed" }, + "maxRetries": { + "type": "number", + "description": "This is the maximum number of retries to attempt if the request fails. Defaults to 0 (no retries).\n\n@default 0", + "minimum": 0, + "maximum": 10, + "example": 0 + }, "baseDelaySeconds": { "type": "number", "description": "This is the base delay in seconds. For linear backoff, this is the delay between each retry. For exponential backoff, this is the initial delay.", @@ -4991,8 +5185,8 @@ } }, "required": [ - "maxRetries", "type", + "maxRetries", "baseDelaySeconds" ] }, @@ -5001,35 +5195,28 @@ "properties": { "timeoutSeconds": { "type": "number", - "description": "This is the timeout in seconds for the request to your server. Defaults to 20 seconds.\n\n@default 20", + "description": "This is the timeout in seconds for the request. Defaults to 20 seconds.\n\n@default 20", "minimum": 1, - "maximum": 120, + "maximum": 300, "example": 20 }, "url": { "type": "string", - "description": "API endpoint to send requests to." - }, - "secret": { - "type": "string", - "description": "This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.\n\nSame precedence logic as server." + "description": "This is where the request will be sent." }, "headers": { "type": "object", - "description": "These are the custom headers to include in the request sent to your server.\n\nEach key-value pair represents a header name and its value." + "description": "These are the headers to include in the request.\n\nEach key-value pair represents a header name and its value." }, "backoffPlan": { - "description": "This is the backoff plan to use if the request fails.", + "description": "This is the backoff plan if the request fails. Defaults to undefined (the request will not be retried).\n\n@default undefined (the request will not be retried)", "allOf": [ { "$ref": "#/components/schemas/BackoffPlan" } ] } - }, - "required": [ - "url" - ] + } }, "CustomTranscriber": { "type": "object", @@ -5109,7 +5296,8 @@ "base-finance", "base-conversationalai", "base-voicemail", - "base-video" + "base-video", + "whisper" ] }, { @@ -5121,7 +5309,11 @@ "type": "string", "description": "This is the language that will be set for the transcription. The list of languages Deepgram supports can be found here: https://developers.deepgram.com/docs/models-languages-overview", "enum": [ + "ar", + "az", + "ba", "bg", + "br", "ca", "cs", "da", @@ -5139,19 +5331,28 @@ "es-419", "es-LATAM", "et", + "eu", "fi", "fr", "fr-CA", + "ha", + "haw", + "he", "hi", "hi-Latn", "hu", "id", + "is", "it", "ja", + "jw", + "kn", "ko", "ko-KR", + "ln", "lt", "lv", + "mk", "ms", "multi", "nl", @@ -5163,6 +5364,11 @@ "ro", "ru", "sk", + "sl", + "sn", + "so", + "sr", + "su", "sv", "sv-SE", "ta", @@ -5170,8 +5376,11 @@ "th", "th-TH", "tr", + "tt", "uk", + "ur", "vi", + "yo", "zh", "zh-CN", "zh-HK", @@ -5878,6 +6087,8 @@ "type": "string", "description": "This is the model that will be used for the transcription.", "enum": [ + "gemini-2.5-pro-preview-05-06", + "gemini-2.5-flash-preview-04-17", "gemini-2.0-flash-thinking-exp", "gemini-2.0-pro-exp-02-05", "gemini-2.0-flash", @@ -6328,7 +6539,8 @@ "base-finance", "base-conversationalai", "base-voicemail", - "base-video" + "base-video", + "whisper" ] }, { @@ -6340,7 +6552,11 @@ "type": "string", "description": "This is the language that will be set for the transcription. The list of languages Deepgram supports can be found here: https://developers.deepgram.com/docs/models-languages-overview", "enum": [ + "ar", + "az", + "ba", "bg", + "br", "ca", "cs", "da", @@ -6358,19 +6574,28 @@ "es-419", "es-LATAM", "et", + "eu", "fi", "fr", "fr-CA", + "ha", + "haw", + "he", "hi", "hi-Latn", "hu", "id", + "is", "it", "ja", + "jw", + "kn", "ko", "ko-KR", + "ln", "lt", "lv", + "mk", "ms", "multi", "nl", @@ -6382,6 +6607,11 @@ "ro", "ru", "sk", + "sl", + "sn", + "so", + "sr", + "su", "sv", "sv-SE", "ta", @@ -6389,8 +6619,11 @@ "th", "th-TH", "tr", + "tt", "uk", + "ur", "vi", + "yo", "zh", "zh-CN", "zh-HK", @@ -7057,6 +7290,8 @@ "type": "string", "description": "This is the model that will be used for the transcription.", "enum": [ + "gemini-2.5-pro-preview-05-06", + "gemini-2.5-flash-preview-04-17", "gemini-2.0-flash-thinking-exp", "gemini-2.0-pro-exp-02-05", "gemini-2.0-flash", @@ -7464,7 +7699,7 @@ "maxLength": 1000 }, "value": { - "type": "object", + "type": "string", "description": "This is the value you want to compare against the parameter.", "maxLength": 1000 } @@ -7936,6 +8171,7 @@ }, "type": { "type": "string", + "deprecated": true, "enum": [ "voicemail" ], @@ -8248,11 +8484,11 @@ "assistantName" ] }, - "TransferDestinationStep": { + "TransferFallbackPlan": { "type": "object", "properties": { "message": { - "description": "This is spoken to the customer before connecting them to the destination.\n\nUsage:\n- If this is not provided and transfer tool messages is not provided, default is \"Transferring the call now\".\n- If set to \"\", nothing is spoken. This is useful when you want to silently transfer. This is especially useful when transferring between assistants in a squad. In this scenario, you likely also want to set `assistant.firstMessageMode=assistant-speaks-first-with-model-generated-message` for the destination assistant.\n\nThis accepts a string or a ToolMessageStart class. Latter is useful if you want to specify multiple messages for different languages through the `contents` field.", + "description": "This is the message the assistant will deliver to the customer if the transfer fails.", "oneOf": [ { "type": "string" @@ -8262,31 +8498,21 @@ } ] }, - "type": { - "type": "string", - "enum": [ - "step" - ] - }, - "stepName": { - "type": "string", - "description": "This is the step to transfer to." - }, - "description": { - "type": "string", - "description": "This is the description of the destination, used by the AI to choose when and how to transfer the call." + "endCallEnabled": { + "type": "boolean", + "description": "This controls what happens after delivering the failure message to the customer.\n- true: End the call after delivering the failure message (default)\n- false: Keep the assistant on the call to continue handling the customer's request\n\n@default true", + "default": true } }, "required": [ - "type", - "stepName" + "message" ] }, "SummaryPlan": { "type": "object", "properties": { "messages": { - "description": "These are the messages used to generate the summary.\n\n@default: ```\n[\n {\n \"role\": \"system\",\n \"content\": \"You are an expert note-taker. You will be given a transcript of a call. Summarize the call in 2-3 sentences. DO NOT return anything except the summary.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Here is the transcript:\\n\\n{{transcript}}\\n\\n\"\n }\n]```\n\nYou can customize by providing any messages you want.\n\nHere are the template variables available:\n- {{transcript}}: The transcript of the call from `call.artifact.transcript`- {{systemPrompt}}: The system prompt of the call from `assistant.model.messages[type=system].content`", + "description": "These are the messages used to generate the summary.\n\n@default: ```\n[\n {\n \"role\": \"system\",\n \"content\": \"You are an expert note-taker. You will be given a transcript of a call. Summarize the call in 2-3 sentences. DO NOT return anything except the summary.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Here is the transcript:\\n\\n{{transcript}}\\n\\n. Here is the ended reason of the call:\\n\\n{{endedReason}}\\n\\n\"\n }\n]```\n\nYou can customize by providing any messages you want.\n\nHere are the template variables available:\n- {{transcript}}: The transcript of the call from `call.artifact.transcript`- {{systemPrompt}}: The system prompt of the call from `assistant.model.messages[type=system].content`- {{endedReason}}: The ended reason of the call from `call.endedReason`", "type": "array", "items": { "type": "object" @@ -8309,7 +8535,7 @@ "properties": { "mode": { "type": "string", - "description": "This configures how transfer is executed and the experience of the destination party receiving the call.\n\nUsage:\n- `blind-transfer`: The assistant forwards the call to the destination without any message or summary.\n- `blind-transfer-add-summary-to-sip-header`: The assistant forwards the call to the destination and adds a SIP header X-Transfer-Summary to the call to include the summary.\n- `warm-transfer-say-message`: The assistant dials the destination, delivers the `message` to the destination party, connects the customer, and leaves the call.\n- `warm-transfer-say-summary`: The assistant dials the destination, provides a summary of the call to the destination party, connects the customer, and leaves the call.\n- `warm-transfer-wait-for-operator-to-speak-first-and-then-say-message`: The assistant dials the destination, waits for the operator to speak, delivers the `message` to the destination party, and then connects the customer.\n- `warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary`: The assistant dials the destination, waits for the operator to speak, provides a summary of the call to the destination party, and then connects the customer.\n- `warm-transfer-twiml`: The assistant dials the destination, executes the twiml instructions on the destination call leg, connects the customer, and leaves the call.\n\n@default 'blind-transfer'", + "description": "This configures how transfer is executed and the experience of the destination party receiving the call.\n\nUsage:\n- `blind-transfer`: The assistant forwards the call to the destination without any message or summary.\n- `blind-transfer-add-summary-to-sip-header`: The assistant forwards the call to the destination and adds a SIP header X-Transfer-Summary to the call to include the summary.\n- `warm-transfer-say-message`: The assistant dials the destination, delivers the `message` to the destination party, connects the customer, and leaves the call.\n- `warm-transfer-say-summary`: The assistant dials the destination, provides a summary of the call to the destination party, connects the customer, and leaves the call.\n- `warm-transfer-wait-for-operator-to-speak-first-and-then-say-message`: The assistant dials the destination, waits for the operator to speak, delivers the `message` to the destination party, and then connects the customer.\n- `warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary`: The assistant dials the destination, waits for the operator to speak, provides a summary of the call to the destination party, and then connects the customer.\n- `warm-transfer-twiml`: The assistant dials the destination, executes the twiml instructions on the destination call leg, connects the customer, and leaves the call.\n- `warm-transfer-experimental`: The assistant puts the customer on hold, dials the destination, and if the destination answers (and is human), delivers a message or summary before connecting the customer. If the destination is unreachable or not human (e.g., with voicemail detection), the assistant delivers the `fallbackMessage` to the customer and optionally ends the call.\n\n@default 'blind-transfer'", "enum": [ "blind-transfer", "blind-transfer-add-summary-to-sip-header", @@ -8317,11 +8543,12 @@ "warm-transfer-say-summary", "warm-transfer-twiml", "warm-transfer-wait-for-operator-to-speak-first-and-then-say-message", - "warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary" + "warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary", + "warm-transfer-experimental" ] }, "message": { - "description": "This is the message the assistant will deliver to the destination party before connecting the customer.\n\nUsage:\n- Used only when `mode` is `blind-transfer-add-summary-to-sip-header`, `warm-transfer-say-message` or `warm-transfer-wait-for-operator-to-speak-first-and-then-say-message`.", + "description": "This is the message the assistant will deliver to the destination party before connecting the customer.\n\nUsage:\n- Used only when `mode` is `blind-transfer-add-summary-to-sip-header`, `warm-transfer-say-message`, `warm-transfer-wait-for-operator-to-speak-first-and-then-say-message`, or `warm-transfer-experimental`.", "oneOf": [ { "type": "string" @@ -8341,18 +8568,34 @@ "dial" ] }, + "holdAudioUrl": { + "type": "string", + "description": "This is the URL to an audio file played while the customer is on hold during transfer.\n\nUsage:\n- Used only when `mode` is `warm-transfer-experimental`.\n- Used when transferring calls to play hold audio for the customer.\n- Must be a publicly accessible URL to an audio file.\n- Supported formats: MP3 and WAV.\n- If not provided, the default hold audio will be used." + }, "twiml": { "type": "string", "description": "This is the TwiML instructions to execute on the destination call leg before connecting the customer.\n\nUsage:\n- Used only when `mode` is `warm-transfer-twiml`.\n- Supports only `Play`, `Say`, `Gather`, `Hangup` and `Pause` verbs.\n- Maximum length is 4096 characters.\n\nExample:\n```\nHello, transferring a customer to you.\n\nThey called about billing questions.\n```", "maxLength": 4096 }, "summaryPlan": { - "description": "This is the plan for generating a summary of the call to present to the destination party.\n\nUsage:\n- Used only when `mode` is `blind-transfer-add-summary-to-sip-header` or `warm-transfer-say-summary` or `warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary`.", + "description": "This is the plan for generating a summary of the call to present to the destination party.\n\nUsage:\n- Used only when `mode` is `blind-transfer-add-summary-to-sip-header` or `warm-transfer-say-summary` or `warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary` or `warm-transfer-experimental`.", "allOf": [ { "$ref": "#/components/schemas/SummaryPlan" } ] + }, + "sipHeadersInReferToEnabled": { + "type": "boolean", + "description": "This flag includes the sipHeaders from above in the refer to sip uri as url encoded query params.\n\n@default false" + }, + "fallbackPlan": { + "description": "This configures the fallback plan when the transfer fails (destination unreachable, busy, or not human).\n\nUsage:\n- Used only when `mode` is `warm-transfer-experimental`.\n- If not provided when using `warm-transfer-experimental`, a default message will be used.", + "allOf": [ + { + "$ref": "#/components/schemas/TransferFallbackPlan" + } + ] } }, "required": [ @@ -8512,10 +8755,6 @@ "$ref": "#/components/schemas/TransferDestinationAssistant", "title": "Assistant" }, - { - "$ref": "#/components/schemas/TransferDestinationStep", - "title": "Step" - }, { "$ref": "#/components/schemas/TransferDestinationNumber", "title": "Number" @@ -8592,6 +8831,8 @@ "type": "string", "description": "The model to use for the knowledge base", "enum": [ + "gemini-2.5-pro-preview-05-06", + "gemini-2.5-flash-preview-04-17", "gemini-2.0-flash-thinking-exp", "gemini-2.0-pro-exp-02-05", "gemini-2.0-flash", @@ -8932,6 +9173,306 @@ "type" ] }, + "CreateMcpToolDTO": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "mcp" + ], + "description": "The type of tool. \"mcp\" for MCP tool." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type" + ] + }, + "CreateGoHighLevelCalendarAvailabilityToolDTO": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "gohighlevel.calendar.availability.check" + ], + "description": "The type of tool. \"gohighlevel.calendar.availability.check\" for GoHighLevel Calendar availability check tool." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type" + ] + }, + "CreateGoHighLevelCalendarEventCreateToolDTO": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "gohighlevel.calendar.event.create" + ], + "description": "The type of tool. \"gohighlevel.calendar.event.create\" for GoHighLevel Calendar event create tool." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type" + ] + }, + "CreateGoHighLevelContactCreateToolDTO": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "gohighlevel.contact.create" + ], + "description": "The type of tool. \"gohighlevel.contact.create\" for GoHighLevel contact create tool." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type" + ] + }, + "CreateGoHighLevelContactGetToolDTO": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "gohighlevel.contact.get" + ], + "description": "The type of tool. \"gohighlevel.contact.get\" for GoHighLevel contact get tool." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type" + ] + }, "AnyscaleModel": { "type": "object", "properties": { @@ -8947,6 +9488,18 @@ "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", "items": { "oneOf": [ + { + "$ref": "#/components/schemas/CreateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/CreateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/CreateComputerToolDTO", + "title": "ComputerTool" + }, { "$ref": "#/components/schemas/CreateDtmfToolDTO", "title": "DtmfTool" @@ -8955,29 +9508,29 @@ "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, - { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" - }, { "$ref": "#/components/schemas/CreateFunctionToolDTO", "title": "FunctionTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" }, { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" }, { - "$ref": "#/components/schemas/CreateQueryToolDTO", - "title": "QueryTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" }, { "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", @@ -8988,12 +9541,28 @@ "title": "GoogleSheetsRowAppendTool" }, { - "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", - "title": "GoogleCalendarCheckAvailabilityTool" + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" }, { "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateSmsToolDTO", + "title": "SmsTool" + }, + { + "$ref": "#/components/schemas/CreateTextEditorToolDTO", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" } ] } @@ -9091,6 +9660,18 @@ "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", "items": { "oneOf": [ + { + "$ref": "#/components/schemas/CreateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/CreateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/CreateComputerToolDTO", + "title": "ComputerTool" + }, { "$ref": "#/components/schemas/CreateDtmfToolDTO", "title": "DtmfTool" @@ -9099,29 +9680,29 @@ "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, - { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" - }, { "$ref": "#/components/schemas/CreateFunctionToolDTO", "title": "FunctionTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" }, { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" }, { - "$ref": "#/components/schemas/CreateQueryToolDTO", - "title": "QueryTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" }, { "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", @@ -9132,12 +9713,28 @@ "title": "GoogleSheetsRowAppendTool" }, { - "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", - "title": "GoogleCalendarCheckAvailabilityTool" + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" }, { "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateSmsToolDTO", + "title": "SmsTool" + }, + { + "$ref": "#/components/schemas/CreateTextEditorToolDTO", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" } ] } @@ -9232,6 +9829,18 @@ "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", "items": { "oneOf": [ + { + "$ref": "#/components/schemas/CreateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/CreateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/CreateComputerToolDTO", + "title": "ComputerTool" + }, { "$ref": "#/components/schemas/CreateDtmfToolDTO", "title": "DtmfTool" @@ -9240,29 +9849,29 @@ "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, - { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" - }, { "$ref": "#/components/schemas/CreateFunctionToolDTO", "title": "FunctionTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" }, { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" }, { - "$ref": "#/components/schemas/CreateQueryToolDTO", - "title": "QueryTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" }, { "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", @@ -9273,12 +9882,28 @@ "title": "GoogleSheetsRowAppendTool" }, { - "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", - "title": "GoogleCalendarCheckAvailabilityTool" + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" }, { "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateSmsToolDTO", + "title": "SmsTool" + }, + { + "$ref": "#/components/schemas/CreateTextEditorToolDTO", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" } ] } @@ -9359,6 +9984,18 @@ "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", "items": { "oneOf": [ + { + "$ref": "#/components/schemas/CreateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/CreateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/CreateComputerToolDTO", + "title": "ComputerTool" + }, { "$ref": "#/components/schemas/CreateDtmfToolDTO", "title": "DtmfTool" @@ -9367,29 +10004,29 @@ "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, - { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" - }, { "$ref": "#/components/schemas/CreateFunctionToolDTO", "title": "FunctionTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" }, { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" }, { - "$ref": "#/components/schemas/CreateQueryToolDTO", - "title": "QueryTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" }, { "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", @@ -9400,12 +10037,28 @@ "title": "GoogleSheetsRowAppendTool" }, { - "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", - "title": "GoogleCalendarCheckAvailabilityTool" + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" }, { "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateSmsToolDTO", + "title": "SmsTool" + }, + { + "$ref": "#/components/schemas/CreateTextEditorToolDTO", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" } ] } @@ -9503,6 +10156,18 @@ "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", "items": { "oneOf": [ + { + "$ref": "#/components/schemas/CreateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/CreateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/CreateComputerToolDTO", + "title": "ComputerTool" + }, { "$ref": "#/components/schemas/CreateDtmfToolDTO", "title": "DtmfTool" @@ -9511,29 +10176,29 @@ "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, - { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" - }, { "$ref": "#/components/schemas/CreateFunctionToolDTO", "title": "FunctionTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" }, { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" }, { - "$ref": "#/components/schemas/CreateQueryToolDTO", - "title": "QueryTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" }, { "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", @@ -9544,12 +10209,28 @@ "title": "GoogleSheetsRowAppendTool" }, { - "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", - "title": "GoogleCalendarCheckAvailabilityTool" + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" }, { "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateSmsToolDTO", + "title": "SmsTool" + }, + { + "$ref": "#/components/schemas/CreateTextEditorToolDTO", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" } ] } @@ -9626,6 +10307,18 @@ "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", "items": { "oneOf": [ + { + "$ref": "#/components/schemas/CreateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/CreateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/CreateComputerToolDTO", + "title": "ComputerTool" + }, { "$ref": "#/components/schemas/CreateDtmfToolDTO", "title": "DtmfTool" @@ -9634,29 +10327,29 @@ "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, - { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" - }, { "$ref": "#/components/schemas/CreateFunctionToolDTO", "title": "FunctionTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" }, { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" }, { - "$ref": "#/components/schemas/CreateQueryToolDTO", - "title": "QueryTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" }, { "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", @@ -9667,12 +10360,28 @@ "title": "GoogleSheetsRowAppendTool" }, { - "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", - "title": "GoogleCalendarCheckAvailabilityTool" + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" }, { "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateSmsToolDTO", + "title": "SmsTool" + }, + { + "$ref": "#/components/schemas/CreateTextEditorToolDTO", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" } ] } @@ -9822,6 +10531,18 @@ "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", "items": { "oneOf": [ + { + "$ref": "#/components/schemas/CreateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/CreateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/CreateComputerToolDTO", + "title": "ComputerTool" + }, { "$ref": "#/components/schemas/CreateDtmfToolDTO", "title": "DtmfTool" @@ -9830,29 +10551,29 @@ "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, - { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" - }, { "$ref": "#/components/schemas/CreateFunctionToolDTO", "title": "FunctionTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" }, { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" }, { - "$ref": "#/components/schemas/CreateQueryToolDTO", - "title": "QueryTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" }, { "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", @@ -9863,12 +10584,28 @@ "title": "GoogleSheetsRowAppendTool" }, { - "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", - "title": "GoogleCalendarCheckAvailabilityTool" + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" }, { "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateSmsToolDTO", + "title": "SmsTool" + }, + { + "$ref": "#/components/schemas/CreateTextEditorToolDTO", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" } ] } @@ -9897,6 +10634,8 @@ "type": "string", "description": "This is the Google model that will be used.", "enum": [ + "gemini-2.5-pro-preview-05-06", + "gemini-2.5-flash-preview-04-17", "gemini-2.0-flash-thinking-exp", "gemini-2.0-pro-exp-02-05", "gemini-2.0-flash", @@ -9967,6 +10706,18 @@ "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", "items": { "oneOf": [ + { + "$ref": "#/components/schemas/CreateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/CreateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/CreateComputerToolDTO", + "title": "ComputerTool" + }, { "$ref": "#/components/schemas/CreateDtmfToolDTO", "title": "DtmfTool" @@ -9975,29 +10726,29 @@ "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, - { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" - }, { "$ref": "#/components/schemas/CreateFunctionToolDTO", "title": "FunctionTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" }, { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" }, { - "$ref": "#/components/schemas/CreateQueryToolDTO", - "title": "QueryTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" }, { "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", @@ -10008,12 +10759,28 @@ "title": "GoogleSheetsRowAppendTool" }, { - "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", - "title": "GoogleCalendarCheckAvailabilityTool" + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" }, { "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateSmsToolDTO", + "title": "SmsTool" + }, + { + "$ref": "#/components/schemas/CreateTextEditorToolDTO", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" } ] } @@ -10045,12 +10812,15 @@ "deepseek-r1-distill-llama-70b", "llama-3.3-70b-versatile", "llama-3.1-405b-reasoning", - "llama-3.1-70b-versatile", "llama-3.1-8b-instant", - "mixtral-8x7b-32768", "llama3-8b-8192", "llama3-70b-8192", - "gemma2-9b-it" + "gemma2-9b-it", + "meta-llama/llama-4-maverick-17b-128e-instruct", + "meta-llama/llama-4-scout-17b-16e-instruct", + "mistral-saba-24b", + "compound-beta", + "compound-beta-mini" ] }, "provider": { @@ -10101,6 +10871,18 @@ "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", "items": { "oneOf": [ + { + "$ref": "#/components/schemas/CreateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/CreateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/CreateComputerToolDTO", + "title": "ComputerTool" + }, { "$ref": "#/components/schemas/CreateDtmfToolDTO", "title": "DtmfTool" @@ -10109,29 +10891,29 @@ "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, - { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" - }, { "$ref": "#/components/schemas/CreateFunctionToolDTO", "title": "FunctionTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" }, { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" }, { - "$ref": "#/components/schemas/CreateQueryToolDTO", - "title": "QueryTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" }, { "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", @@ -10142,12 +10924,28 @@ "title": "GoogleSheetsRowAppendTool" }, { - "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", - "title": "GoogleCalendarCheckAvailabilityTool" + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" }, { "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateSmsToolDTO", + "title": "SmsTool" + }, + { + "$ref": "#/components/schemas/CreateTextEditorToolDTO", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" } ] } @@ -10227,6 +11025,18 @@ "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", "items": { "oneOf": [ + { + "$ref": "#/components/schemas/CreateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/CreateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/CreateComputerToolDTO", + "title": "ComputerTool" + }, { "$ref": "#/components/schemas/CreateDtmfToolDTO", "title": "DtmfTool" @@ -10235,29 +11045,29 @@ "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, - { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" - }, { "$ref": "#/components/schemas/CreateFunctionToolDTO", "title": "FunctionTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" }, { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" }, { - "$ref": "#/components/schemas/CreateQueryToolDTO", - "title": "QueryTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" }, { "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", @@ -10268,12 +11078,28 @@ "title": "GoogleSheetsRowAppendTool" }, { - "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", - "title": "GoogleCalendarCheckAvailabilityTool" + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" }, { "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateSmsToolDTO", + "title": "SmsTool" + }, + { + "$ref": "#/components/schemas/CreateTextEditorToolDTO", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" } ] } @@ -10314,7 +11140,9 @@ "gpt-4.1-nano", "gpt-4.5-preview", "chatgpt-4o-latest", + "o3", "o3-mini", + "o4-mini", "o1-preview", "o1-preview-2024-09-12", "o1-mini", @@ -10351,7 +11179,9 @@ "gpt-4.1-nano", "gpt-4.5-preview", "chatgpt-4o-latest", + "o3", "o3-mini", + "o4-mini", "o1-preview", "o1-preview-2024-09-12", "o1-mini", @@ -10390,7 +11220,9 @@ "gpt-4.1-nano", "gpt-4.5-preview", "chatgpt-4o-latest", + "o3", "o3-mini", + "o4-mini", "o1-preview", "o1-preview-2024-09-12", "o1-mini", @@ -10461,6 +11293,18 @@ "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", "items": { "oneOf": [ + { + "$ref": "#/components/schemas/CreateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/CreateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/CreateComputerToolDTO", + "title": "ComputerTool" + }, { "$ref": "#/components/schemas/CreateDtmfToolDTO", "title": "DtmfTool" @@ -10469,29 +11313,29 @@ "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, - { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" - }, { "$ref": "#/components/schemas/CreateFunctionToolDTO", "title": "FunctionTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" }, { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" }, { - "$ref": "#/components/schemas/CreateQueryToolDTO", - "title": "QueryTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" }, { "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", @@ -10502,12 +11346,28 @@ "title": "GoogleSheetsRowAppendTool" }, { - "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", - "title": "GoogleCalendarCheckAvailabilityTool" + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" }, { "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateSmsToolDTO", + "title": "SmsTool" + }, + { + "$ref": "#/components/schemas/CreateTextEditorToolDTO", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" } ] } @@ -10584,6 +11444,18 @@ "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", "items": { "oneOf": [ + { + "$ref": "#/components/schemas/CreateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/CreateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/CreateComputerToolDTO", + "title": "ComputerTool" + }, { "$ref": "#/components/schemas/CreateDtmfToolDTO", "title": "DtmfTool" @@ -10592,29 +11464,29 @@ "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, - { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" - }, { "$ref": "#/components/schemas/CreateFunctionToolDTO", "title": "FunctionTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" }, { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" }, { - "$ref": "#/components/schemas/CreateQueryToolDTO", - "title": "QueryTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" }, { "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", @@ -10625,12 +11497,28 @@ "title": "GoogleSheetsRowAppendTool" }, { - "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", - "title": "GoogleCalendarCheckAvailabilityTool" + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" }, { "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateSmsToolDTO", + "title": "SmsTool" + }, + { + "$ref": "#/components/schemas/CreateTextEditorToolDTO", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" } ] } @@ -10707,6 +11595,18 @@ "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", "items": { "oneOf": [ + { + "$ref": "#/components/schemas/CreateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/CreateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/CreateComputerToolDTO", + "title": "ComputerTool" + }, { "$ref": "#/components/schemas/CreateDtmfToolDTO", "title": "DtmfTool" @@ -10715,29 +11615,29 @@ "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, - { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" - }, { "$ref": "#/components/schemas/CreateFunctionToolDTO", "title": "FunctionTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" }, { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" }, { - "$ref": "#/components/schemas/CreateQueryToolDTO", - "title": "QueryTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" }, { "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", @@ -10748,12 +11648,28 @@ "title": "GoogleSheetsRowAppendTool" }, { - "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", - "title": "GoogleCalendarCheckAvailabilityTool" + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" }, { "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateSmsToolDTO", + "title": "SmsTool" + }, + { + "$ref": "#/components/schemas/CreateTextEditorToolDTO", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" } ] } @@ -10815,6 +11731,501 @@ "model" ] }, + "HangupNode": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "hangup" + ] + }, + "name": { + "type": "string", + "maxLength": 80 + }, + "isStart": { + "type": "boolean", + "description": "This is whether or not the node is the start of the workflow." + }, + "metadata": { + "type": "object", + "description": "This is for metadata you want to store on the task." + } + }, + "required": [ + "type", + "name" + ] + }, + "WorkflowOpenAIModel": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "description": "This is the provider of the model (`openai`).", + "enum": [ + "openai" + ] + }, + "model": { + "type": "string", + "description": "This is the specific OpenAI model that will be used.", + "maxLength": 100, + "enum": [ + "gpt-4.1", + "gpt-4.1-mini", + "gpt-4.1-nano", + "gpt-4.5-preview", + "chatgpt-4o-latest", + "o3", + "o3-mini", + "o4-mini", + "o1-preview", + "o1-preview-2024-09-12", + "o1-mini", + "o1-mini-2024-09-12", + "gpt-4o-realtime-preview-2024-10-01", + "gpt-4o-realtime-preview-2024-12-17", + "gpt-4o-mini-realtime-preview-2024-12-17", + "gpt-4o-mini-2024-07-18", + "gpt-4o-mini", + "gpt-4o", + "gpt-4o-2024-05-13", + "gpt-4o-2024-08-06", + "gpt-4o-2024-11-20", + "gpt-4-turbo", + "gpt-4-turbo-2024-04-09", + "gpt-4-turbo-preview", + "gpt-4-0125-preview", + "gpt-4-1106-preview", + "gpt-4", + "gpt-4-0613", + "gpt-3.5-turbo", + "gpt-3.5-turbo-0125", + "gpt-3.5-turbo-1106", + "gpt-3.5-turbo-16k", + "gpt-3.5-turbo-0613" + ] + }, + "temperature": { + "type": "number", + "description": "This is the temperature of the model.", + "minimum": 0, + "maximum": 2 + }, + "maxTokens": { + "type": "number", + "description": "This is the max tokens of the model.", + "minimum": 50, + "maximum": 10000 + } + }, + "required": [ + "provider", + "model" + ] + }, + "WorkflowAnthropicModel": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "description": "This is the provider of the model (`anthropic`).", + "enum": [ + "anthropic" + ] + }, + "model": { + "type": "string", + "description": "This is the specific model that will be used.", + "maxLength": 100, + "enum": [ + "claude-3-opus-20240229", + "claude-3-sonnet-20240229", + "claude-3-haiku-20240307", + "claude-3-5-sonnet-20240620", + "claude-3-5-sonnet-20241022", + "claude-3-5-haiku-20241022", + "claude-3-7-sonnet-20250219" + ] + }, + "thinking": { + "description": "This is the optional configuration for Anthropic's thinking feature.\n\n- Only applicable for `claude-3-7-sonnet-20250219` model.\n- If provided, `maxTokens` must be greater than `thinking.budgetTokens`.", + "allOf": [ + { + "$ref": "#/components/schemas/AnthropicThinkingConfig" + } + ] + }, + "temperature": { + "type": "number", + "description": "This is the temperature of the model.", + "minimum": 0, + "maximum": 2 + }, + "maxTokens": { + "type": "number", + "description": "This is the max tokens of the model.", + "minimum": 50, + "maximum": 10000 + } + }, + "required": [ + "provider", + "model" + ] + }, + "GlobalNodePlan": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "This is the flag to determine if this node is a global node\n\n@default false", + "default": false + }, + "enterCondition": { + "type": "string", + "description": "This is the condition that will be checked to determine if the global node should be executed.\n\n@default ''", + "maxLength": 1000, + "default": "" + } + } + }, + "VariableExtractionSchema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "This is the type of output you'd like.\n\n`string`, `number`, `boolean` are primitive types.", + "enum": [ + "string", + "number", + "integer", + "boolean" + ] + }, + "title": { + "type": "string", + "description": "This is the title of the variable.\n\nIt can only contain letters, numbers, and underscores.", + "pattern": "/^[a-zA-Z0-9_]+$/" + }, + "description": { + "type": "string", + "description": "This is the description to help the model understand what it needs to output." + }, + "enum": { + "description": "This is the enum values to choose from. Only used if the type is `string`.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "type", + "title", + "description" + ] + }, + "VariableExtractionPlan": { + "type": "object", + "properties": { + "output": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VariableExtractionSchema" + } + } + }, + "required": [ + "output" + ] + }, + "ConversationNode": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "This is the Conversation node. This can be used to start a conversation with the customer.\n\nThe flow is:\n- Workflow starts the conversation node\n- Model is active with the `prompt` and global context.\n- Model will call a tool to exit this node.\n- Workflow will extract variables from the conversation.\n- Workflow continues.", + "enum": [ + "conversation" + ] + }, + "model": { + "description": "This is the model for the Conversation Task.", + "oneOf": [ + { + "$ref": "#/components/schemas/WorkflowOpenAIModel", + "title": "OpenAI" + }, + { + "$ref": "#/components/schemas/WorkflowAnthropicModel", + "title": "Anthropic" + } + ] + }, + "transcriber": { + "description": "These are the options for the assistant's transcriber.", + "oneOf": [ + { + "$ref": "#/components/schemas/AssemblyAITranscriber", + "title": "AssemblyAITranscriber" + }, + { + "$ref": "#/components/schemas/AzureSpeechTranscriber", + "title": "AzureSpeechTranscriber" + }, + { + "$ref": "#/components/schemas/CustomTranscriber", + "title": "CustomTranscriber" + }, + { + "$ref": "#/components/schemas/DeepgramTranscriber", + "title": "DeepgramTranscriber" + }, + { + "$ref": "#/components/schemas/ElevenLabsTranscriber", + "title": "ElevenLabsTranscriber" + }, + { + "$ref": "#/components/schemas/GladiaTranscriber", + "title": "GladiaTranscriber" + }, + { + "$ref": "#/components/schemas/GoogleTranscriber", + "title": "GoogleTranscriber" + }, + { + "$ref": "#/components/schemas/SpeechmaticsTranscriber", + "title": "SpeechmaticsTranscriber" + }, + { + "$ref": "#/components/schemas/TalkscriberTranscriber", + "title": "TalkscriberTranscriber" + }, + { + "$ref": "#/components/schemas/OpenAITranscriber", + "title": "OpenAITranscriber" + } + ] + }, + "voice": { + "description": "These are the options for the assistant's voice.", + "oneOf": [ + { + "$ref": "#/components/schemas/AzureVoice", + "title": "AzureVoice" + }, + { + "$ref": "#/components/schemas/CartesiaVoice", + "title": "CartesiaVoice" + }, + { + "$ref": "#/components/schemas/CustomVoice", + "title": "CustomVoice" + }, + { + "$ref": "#/components/schemas/DeepgramVoice", + "title": "DeepgramVoice" + }, + { + "$ref": "#/components/schemas/ElevenLabsVoice", + "title": "ElevenLabsVoice" + }, + { + "$ref": "#/components/schemas/HumeVoice", + "title": "HumeVoice" + }, + { + "$ref": "#/components/schemas/LMNTVoice", + "title": "LMNTVoice" + }, + { + "$ref": "#/components/schemas/NeuphonicVoice", + "title": "NeuphonicVoice" + }, + { + "$ref": "#/components/schemas/OpenAIVoice", + "title": "OpenAIVoice" + }, + { + "$ref": "#/components/schemas/PlayHTVoice", + "title": "PlayHTVoice" + }, + { + "$ref": "#/components/schemas/RimeAIVoice", + "title": "RimeAIVoice" + }, + { + "$ref": "#/components/schemas/SmallestAIVoice", + "title": "SmallestAIVoice" + }, + { + "$ref": "#/components/schemas/TavusVoice", + "title": "TavusVoice" + }, + { + "$ref": "#/components/schemas/VapiVoice", + "title": "VapiVoice" + }, + { + "$ref": "#/components/schemas/SesameVoice", + "title": "SesameVoice" + } + ] + }, + "prompt": { + "type": "string", + "maxLength": 5000 + }, + "globalNodePlan": { + "description": "This is the plan for the global node.", + "allOf": [ + { + "$ref": "#/components/schemas/GlobalNodePlan" + } + ] + }, + "variableExtractionPlan": { + "description": "This is the plan that controls the variable extraction from the user's response.", + "allOf": [ + { + "$ref": "#/components/schemas/VariableExtractionPlan" + } + ] + }, + "name": { + "type": "string", + "maxLength": 80 + }, + "isStart": { + "type": "boolean", + "description": "This is whether or not the node is the start of the workflow." + }, + "metadata": { + "type": "object", + "description": "This is for metadata you want to store on the task." + } + }, + "required": [ + "type", + "name" + ] + }, + "ToolNode": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "This is the Tool node. This can be used to call a tool in your workflow.\n\nThe flow is:\n- Workflow starts the tool node\n- Model is called to extract parameters needed by the tool from the conversation history\n- Tool is called with the parameters\n- Server returns a response\n- Workflow continues with the response", + "enum": [ + "tool" + ] + }, + "tool": { + "description": "This is the tool to call. To use an existing tool, send `toolId` instead.", + "oneOf": [ + { + "$ref": "#/components/schemas/CreateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/CreateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/CreateComputerToolDTO", + "title": "ComputerTool" + }, + { + "$ref": "#/components/schemas/CreateDtmfToolDTO", + "title": "DtmfTool" + }, + { + "$ref": "#/components/schemas/CreateEndCallToolDTO", + "title": "EndCallTool" + }, + { + "$ref": "#/components/schemas/CreateFunctionToolDTO", + "title": "FunctionTool" + }, + { + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" + }, + { + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" + }, + { + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", + "title": "GoogleCalendarCreateEventTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", + "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateSmsToolDTO", + "title": "SmsTool" + }, + { + "$ref": "#/components/schemas/CreateTextEditorToolDTO", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" + } + ] + }, + "toolId": { + "type": "string", + "description": "This is the tool to call. To use a transient tool, send `tool` instead." + }, + "name": { + "type": "string", + "maxLength": 80 + }, + "isStart": { + "type": "boolean", + "description": "This is whether or not the node is the start of the workflow." + }, + "metadata": { + "type": "object", + "description": "This is for metadata you want to store on the task." + } + }, + "required": [ + "type", + "name" + ] + }, "AIEdgeCondition": { "type": "object", "properties": { @@ -10846,7 +12257,7 @@ }, "liquid": { "type": "string", - "maxLength": 100 + "maxLength": 1000 } }, "required": [ @@ -10905,7 +12316,7 @@ "to" ] }, - "Workflow": { + "WorkflowUserEditable": { "type": "object", "properties": { "nodes": { @@ -10913,24 +12324,12 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/Say", - "title": "Say" + "$ref": "#/components/schemas/ConversationNode", + "title": "ConversationNode" }, { - "$ref": "#/components/schemas/Gather", - "title": "Gather" - }, - { - "$ref": "#/components/schemas/ApiRequest", - "title": "ApiRequest" - }, - { - "$ref": "#/components/schemas/Hangup", - "title": "Hangup" - }, - { - "$ref": "#/components/schemas/Transfer", - "title": "Transfer" + "$ref": "#/components/schemas/ToolNode", + "title": "ToolNode" } ] } @@ -10939,77 +12338,15 @@ "description": "These are the options for the workflow's LLM.", "oneOf": [ { - "$ref": "#/components/schemas/AnthropicModel", - "title": "Anthropic" - }, - { - "$ref": "#/components/schemas/AnyscaleModel", - "title": "Anyscale" + "$ref": "#/components/schemas/WorkflowOpenAIModel", + "title": "WorkflowOpenAIModel" }, { - "$ref": "#/components/schemas/CerebrasModel", - "title": "Cerebras" - }, - { - "$ref": "#/components/schemas/CustomLLMModel", - "title": "CustomLLM" - }, - { - "$ref": "#/components/schemas/DeepInfraModel", - "title": "DeepInfra" - }, - { - "$ref": "#/components/schemas/DeepSeekModel", - "title": "DeepSeek" - }, - { - "$ref": "#/components/schemas/GoogleModel", - "title": "Google" - }, - { - "$ref": "#/components/schemas/GroqModel", - "title": "Groq" - }, - { - "$ref": "#/components/schemas/InflectionAIModel", - "title": "InflectionAI" - }, - { - "$ref": "#/components/schemas/OpenAIModel", - "title": "OpenAI" - }, - { - "$ref": "#/components/schemas/OpenRouterModel", - "title": "OpenRouter" - }, - { - "$ref": "#/components/schemas/PerplexityAIModel", - "title": "PerplexityAI" - }, - { - "$ref": "#/components/schemas/TogetherAIModel", - "title": "Together" - }, - { - "$ref": "#/components/schemas/XaiModel", - "title": "XAI" + "$ref": "#/components/schemas/WorkflowAnthropicModel", + "title": "WorkflowAnthropicModel" } ] }, - "id": { - "type": "string" - }, - "orgId": { - "type": "string" - }, - "createdAt": { - "format": "date-time", - "type": "string" - }, - "updatedAt": { - "format": "date-time", - "type": "string" - }, "name": { "type": "string", "maxLength": 80 @@ -11023,10 +12360,6 @@ }, "required": [ "nodes", - "id", - "orgId", - "createdAt", - "updatedAt", "name", "edges" ] @@ -11046,6 +12379,18 @@ "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", "items": { "oneOf": [ + { + "$ref": "#/components/schemas/CreateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/CreateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/CreateComputerToolDTO", + "title": "ComputerTool" + }, { "$ref": "#/components/schemas/CreateDtmfToolDTO", "title": "DtmfTool" @@ -11054,29 +12399,29 @@ "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, - { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" - }, { "$ref": "#/components/schemas/CreateFunctionToolDTO", "title": "FunctionTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" }, { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" }, { - "$ref": "#/components/schemas/CreateQueryToolDTO", - "title": "QueryTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" }, { "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", @@ -11087,12 +12432,28 @@ "title": "GoogleSheetsRowAppendTool" }, { - "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", - "title": "GoogleCalendarCheckAvailabilityTool" + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" }, { "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateSmsToolDTO", + "title": "SmsTool" + }, + { + "$ref": "#/components/schemas/CreateTextEditorToolDTO", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" } ] } @@ -11131,7 +12492,7 @@ "description": "This is the workflow that will be used for the call. To use an existing workflow, use `workflowId` instead.", "allOf": [ { - "$ref": "#/components/schemas/Workflow" + "$ref": "#/components/schemas/WorkflowUserEditable" } ] }, @@ -11181,6 +12542,18 @@ "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", "items": { "oneOf": [ + { + "$ref": "#/components/schemas/CreateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/CreateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/CreateComputerToolDTO", + "title": "ComputerTool" + }, { "$ref": "#/components/schemas/CreateDtmfToolDTO", "title": "DtmfTool" @@ -11189,29 +12562,29 @@ "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, - { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" - }, { "$ref": "#/components/schemas/CreateFunctionToolDTO", "title": "FunctionTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" }, { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" }, { - "$ref": "#/components/schemas/CreateQueryToolDTO", - "title": "QueryTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" }, { "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", @@ -11222,12 +12595,28 @@ "title": "GoogleSheetsRowAppendTool" }, { - "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", - "title": "GoogleCalendarCheckAvailabilityTool" + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" }, { "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateSmsToolDTO", + "title": "SmsTool" + }, + { + "$ref": "#/components/schemas/CreateTextEditorToolDTO", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" } ] } @@ -11429,7 +12818,8 @@ "unit", "percentage", "phoneNumber", - "number" + "number", + "stripAsterisk" ], "items": { "type": "string", @@ -11449,7 +12839,8 @@ "unit", "percentage", "phoneNumber", - "number" + "number", + "stripAsterisk" ] } } @@ -11608,6 +12999,12 @@ "AzureVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -11718,6 +13115,12 @@ "CartesiaVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -11796,6 +13199,12 @@ "CustomVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used. Use `custom-voice` for providers that are not natively supported.", @@ -11836,6 +13245,12 @@ "DeepgramVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -11949,6 +13364,12 @@ "ElevenLabsVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -12078,6 +13499,12 @@ "HumeVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -12131,6 +13558,12 @@ "LMNTVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -12187,6 +13620,12 @@ "NeuphonicVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -12255,6 +13694,12 @@ "OpenAIVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -12329,6 +13774,12 @@ "PlayHTVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -12487,178 +13938,241 @@ }, "required": [ "provider", - "voiceId" + "voiceId" + ] + }, + "RimeAIVoice": { + "type": "object", + "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, + "provider": { + "type": "string", + "description": "This is the voice provider that will be used.", + "enum": [ + "rime-ai" + ] + }, + "voiceId": { + "description": "This is the provider-specific ID that will be used.", + "oneOf": [ + { + "type": "string", + "enum": [ + "abbie", + "allison", + "ally", + "alona", + "amber", + "ana", + "antoine", + "armon", + "brenda", + "brittany", + "carol", + "colin", + "courtney", + "elena", + "elliot", + "eva", + "geoff", + "gerald", + "hank", + "helen", + "hera", + "jen", + "joe", + "joy", + "juan", + "kendra", + "kendrick", + "kenneth", + "kevin", + "kris", + "linda", + "madison", + "marge", + "marina", + "marissa", + "marta", + "maya", + "nicholas", + "nyles", + "phil", + "reba", + "rex", + "rick", + "ritu", + "rob", + "rodney", + "rohan", + "rosco", + "samantha", + "sandy", + "selena", + "seth", + "sharon", + "stan", + "tamra", + "tanya", + "tibur", + "tj", + "tyler", + "viv", + "yadira", + "marsh", + "bayou", + "creek", + "brook", + "flower", + "spore", + "glacier", + "gulch", + "alpine", + "cove", + "lagoon", + "tundra", + "steppe", + "mesa", + "grove", + "rainforest", + "moraine", + "wildflower", + "peak", + "boulder", + "gypsum", + "zest" + ], + "title": "Preset Voice Options" + }, + { + "type": "string", + "title": "RimeAI Voice ID" + } + ] + }, + "model": { + "type": "string", + "description": "This is the model that will be used. Defaults to 'v1' when not specified.", + "enum": [ + "v1", + "mist", + "mistv2" + ], + "example": "mistv2" + }, + "speed": { + "type": "number", + "description": "This is the speed multiplier that will be used.", + "minimum": 0.1, + "example": null + }, + "pauseBetweenBrackets": { + "type": "boolean", + "description": "This is a flag that controls whether to add slight pauses using angle brackets. Example: \"Hi. <200> I'd love to have a conversation with you.\" adds a 200ms pause between the first and second sentences.", + "example": false + }, + "phonemizeBetweenBrackets": { + "type": "boolean", + "description": "This is a flag that controls whether text inside brackets should be phonemized (converted to phonetic pronunciation) - Example: \"{h'El.o} World\" will pronounce \"Hello\" as expected.", + "example": false + }, + "reduceLatency": { + "type": "boolean", + "description": "This is a flag that controls whether to optimize for reduced latency in streaming. https://docs.rime.ai/api-reference/endpoint/websockets#param-reduce-latency", + "example": false + }, + "inlineSpeedAlpha": { + "type": "string", + "description": "This is a string that allows inline speed control using alpha notation. https://docs.rime.ai/api-reference/endpoint/websockets#param-inline-speed-alpha", + "example": null + }, + "chunkPlan": { + "description": "This is the plan for chunking the model output before it is sent to the voice provider.", + "allOf": [ + { + "$ref": "#/components/schemas/ChunkPlan" + } + ] + }, + "fallbackPlan": { + "description": "This is the plan for voice provider fallbacks in the event that the primary voice provider fails.", + "allOf": [ + { + "$ref": "#/components/schemas/FallbackPlan" + } + ] + } + }, + "required": [ + "provider", + "voiceId" + ] + }, + "SesameVoice": { + "type": "object", + "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, + "provider": { + "type": "string", + "description": "This is the voice provider that will be used.", + "enum": [ + "sesame" + ] + }, + "voiceId": { + "type": "string", + "description": "This is the provider-specific ID that will be used.", + "title": "Sesame Voice ID. This should be either a name (a built-in voice) or a UUID (a custom voice)." + }, + "model": { + "type": "string", + "description": "This is the model that will be used.", + "enum": [ + "csm-1b" + ] + }, + "chunkPlan": { + "description": "This is the plan for chunking the model output before it is sent to the voice provider.", + "allOf": [ + { + "$ref": "#/components/schemas/ChunkPlan" + } + ] + }, + "fallbackPlan": { + "description": "This is the plan for voice provider fallbacks in the event that the primary voice provider fails.", + "allOf": [ + { + "$ref": "#/components/schemas/FallbackPlan" + } + ] + } + }, + "required": [ + "provider", + "voiceId", + "model" ] }, - "RimeAIVoice": { + "SmallestAIVoice": { "type": "object", "properties": { - "provider": { - "type": "string", - "description": "This is the voice provider that will be used.", - "enum": [ - "rime-ai" - ] - }, - "voiceId": { - "description": "This is the provider-specific ID that will be used.", - "oneOf": [ - { - "type": "string", - "enum": [ - "abbie", - "allison", - "ally", - "alona", - "amber", - "ana", - "antoine", - "armon", - "brenda", - "brittany", - "carol", - "colin", - "courtney", - "elena", - "elliot", - "eva", - "geoff", - "gerald", - "hank", - "helen", - "hera", - "jen", - "joe", - "joy", - "juan", - "kendra", - "kendrick", - "kenneth", - "kevin", - "kris", - "linda", - "madison", - "marge", - "marina", - "marissa", - "marta", - "maya", - "nicholas", - "nyles", - "phil", - "reba", - "rex", - "rick", - "ritu", - "rob", - "rodney", - "rohan", - "rosco", - "samantha", - "sandy", - "selena", - "seth", - "sharon", - "stan", - "tamra", - "tanya", - "tibur", - "tj", - "tyler", - "viv", - "yadira", - "marsh", - "bayou", - "creek", - "brook", - "flower", - "spore", - "glacier", - "gulch", - "alpine", - "cove", - "lagoon", - "tundra", - "steppe", - "mesa", - "grove", - "rainforest", - "moraine", - "wildflower", - "peak", - "boulder", - "gypsum", - "zest" - ], - "title": "Preset Voice Options" - }, - { - "type": "string", - "title": "RimeAI Voice ID" - } - ] - }, - "model": { - "type": "string", - "description": "This is the model that will be used. Defaults to 'v1' when not specified.", - "enum": [ - "v1", - "mist", - "mistv2" - ], - "example": "mistv2" - }, - "speed": { - "type": "number", - "description": "This is the speed multiplier that will be used.", - "minimum": 0.1, - "example": null - }, - "pauseBetweenBrackets": { - "type": "boolean", - "description": "This is a flag that controls whether to add slight pauses using angle brackets. Example: “Hi. <200> I’d love to have a conversation with you.” adds a 200ms pause between the first and second sentences.", - "example": false - }, - "phonemizeBetweenBrackets": { - "type": "boolean", - "description": "This is a flag that controls whether text inside brackets should be phonemized (converted to phonetic pronunciation) - Example: \"{h'El.o} World\" will pronounce \"Hello\" as expected.", - "example": false - }, - "reduceLatency": { + "cachingEnabled": { "type": "boolean", - "description": "This is a flag that controls whether to optimize for reduced latency in streaming. https://docs.rime.ai/api-reference/endpoint/websockets#param-reduce-latency", - "example": false - }, - "inlineSpeedAlpha": { - "type": "string", - "description": "This is a string that allows inline speed control using alpha notation. https://docs.rime.ai/api-reference/endpoint/websockets#param-inline-speed-alpha", - "example": null - }, - "chunkPlan": { - "description": "This is the plan for chunking the model output before it is sent to the voice provider.", - "allOf": [ - { - "$ref": "#/components/schemas/ChunkPlan" - } - ] + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true }, - "fallbackPlan": { - "description": "This is the plan for voice provider fallbacks in the event that the primary voice provider fails.", - "allOf": [ - { - "$ref": "#/components/schemas/FallbackPlan" - } - ] - } - }, - "required": [ - "provider", - "voiceId" - ] - }, - "SmallestAIVoice": { - "type": "object", - "properties": { "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -12788,6 +14302,12 @@ "TavusVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -12864,6 +14384,12 @@ "VapiVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -12876,6 +14402,7 @@ "description": "The voices provided by Vapi", "enum": [ "Elliot", + "Kylie", "Rohan", "Lily", "Savannah", @@ -12965,6 +14492,12 @@ "FallbackAzureVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -13013,6 +14546,12 @@ "FallbackCartesiaVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -13083,6 +14622,12 @@ "FallbackCustomVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used. Use `custom-voice` for providers that are not natively supported.", @@ -13115,6 +14660,12 @@ "FallbackDeepgramVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -13220,6 +14771,12 @@ "FallbackElevenLabsVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -13341,6 +14898,12 @@ "FallbackHumeVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -13386,6 +14949,12 @@ "FallbackLMNTVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -13434,6 +15003,12 @@ "FallbackNeuphonicVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -13494,6 +15069,12 @@ "FallbackOpenAIVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -13560,6 +15141,12 @@ "FallbackPlayHTVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -13716,6 +15303,12 @@ "FallbackRimeAIVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -13839,7 +15432,7 @@ }, "pauseBetweenBrackets": { "type": "boolean", - "description": "This is a flag that controls whether to add slight pauses using angle brackets. Example: “Hi. <200> I’d love to have a conversation with you.” adds a 200ms pause between the first and second sentences.", + "description": "This is a flag that controls whether to add slight pauses using angle brackets. Example: \"Hi. <200> I'd love to have a conversation with you.\" adds a 200ms pause between the first and second sentences.", "example": false }, "phonemizeBetweenBrackets": { @@ -13871,9 +15464,58 @@ "voiceId" ] }, + "FallbackSesameVoice": { + "type": "object", + "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, + "provider": { + "type": "string", + "description": "This is the voice provider that will be used.", + "enum": [ + "sesame" + ] + }, + "voiceId": { + "type": "string", + "description": "This is the provider-specific ID that will be used.", + "title": "Sesame Voice ID. This should be either a name (a built-in voice) or a UUID (a custom voice)." + }, + "model": { + "type": "string", + "description": "This is the model that will be used.", + "enum": [ + "csm-1b" + ] + }, + "chunkPlan": { + "description": "This is the plan for chunking the model output before it is sent to the voice provider.", + "allOf": [ + { + "$ref": "#/components/schemas/ChunkPlan" + } + ] + } + }, + "required": [ + "provider", + "voiceId", + "model" + ] + }, "FallbackSmallestAIVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -13950,6 +15592,12 @@ "FallbackTavusVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -14018,6 +15666,12 @@ "FallbackVapiVoice": { "type": "object", "properties": { + "cachingEnabled": { + "type": "boolean", + "description": "This is the flag to toggle voice caching for the assistant.", + "example": true, + "default": true + }, "provider": { "type": "string", "description": "This is the voice provider that will be used.", @@ -14030,6 +15684,7 @@ "description": "The voices provided by Vapi", "enum": [ "Elliot", + "Kylie", "Rohan", "Lily", "Savannah", @@ -14343,10 +15998,13 @@ "models": { "type": "array", "enum": [ + "gpt-4.1-2025-04-14", + "gpt-4.1-mini-2025-04-14", + "gpt-4.1-nano-2025-04-14", "gpt-4o-2024-11-20", "gpt-4o-2024-08-06", - "gpt-4o-mini-2024-07-18", "gpt-4o-2024-05-13", + "gpt-4o-mini-2024-07-18", "gpt-4-turbo-2024-04-09", "gpt-4-0125-preview", "gpt-4-1106-preview", @@ -14361,10 +16019,13 @@ "items": { "type": "string", "enum": [ + "gpt-4.1-2025-04-14", + "gpt-4.1-mini-2025-04-14", + "gpt-4.1-nano-2025-04-14", "gpt-4o-2024-11-20", "gpt-4o-2024-08-06", - "gpt-4o-mini-2024-07-18", "gpt-4o-2024-05-13", + "gpt-4o-mini-2024-07-18", "gpt-4-turbo-2024-04-09", "gpt-4-0125-preview", "gpt-4-1106-preview", @@ -15475,6 +17136,14 @@ "type": "string", "description": "This is not returned in the API." }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "apiSecret": { + "type": "string", + "description": "This is not returned in the API." + }, "accountSid": { "type": "string" }, @@ -15487,7 +17156,6 @@ }, "required": [ "provider", - "authToken", "accountSid" ] }, @@ -15699,9 +17367,265 @@ "type" ] }, + "FunctionCallAssistantHookAction": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "function" + ], + "description": "The type of tool. \"function\" for Function tool." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type" + ] + }, + "SayAssistantHookAction": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "This is the type of action - must be \"say\"", + "enum": [ + "say" + ] + }, + "exact": { + "type": "object", + "description": "This is the message to say" + } + }, + "required": [ + "type", + "exact" + ] + }, + "AssistantHookFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "This is the type of filter - currently only \"oneOf\" is supported", + "enum": [ + "oneOf" + ], + "maxLength": 1000 + }, + "key": { + "type": "string", + "description": "This is the key to filter on (e.g. \"call.endedReason\")", + "maxLength": 1000 + }, + "oneOf": { + "description": "This is the array of possible values to match against", + "type": "array", + "items": { + "type": "string", + "maxLength": 1000 + } + } + }, + "required": [ + "type", + "key", + "oneOf" + ] + }, + "AssistantHookCallEnding": { + "type": "object", + "properties": { + "on": { + "type": "string", + "description": "This is the event that triggers this hook", + "enum": [ + "call.ending" + ], + "maxLength": 1000 + }, + "do": { + "type": "array", + "description": "This is the set of actions to perform when the hook triggers", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/TransferAssistantHookAction", + "title": "TransferAssistantHookAction" + }, + { + "$ref": "#/components/schemas/FunctionCallAssistantHookAction", + "title": "FunctionCallAssistantHookAction" + } + ] + } + }, + "filters": { + "description": "This is the set of filters that must match for the hook to trigger", + "type": "array", + "items": { + "$ref": "#/components/schemas/AssistantHookFilter" + } + } + }, + "required": [ + "on", + "do" + ] + }, + "AssistantHookAssistantSpeechInterrupted": { + "type": "object", + "properties": { + "on": { + "type": "string", + "description": "This is the event that triggers this hook", + "enum": [ + "assistant.speech.interrupted" + ], + "maxLength": 1000 + }, + "do": { + "type": "array", + "description": "This is the set of actions to perform when the hook triggers", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/TransferAssistantHookAction", + "title": "TransferAssistantHookAction" + }, + { + "$ref": "#/components/schemas/FunctionCallAssistantHookAction", + "title": "FunctionCallAssistantHookAction" + }, + { + "$ref": "#/components/schemas/SayAssistantHookAction", + "title": "SayAssistantHookAction" + } + ] + } + } + }, + "required": [ + "on", + "do" + ] + }, + "AssistantHookCustomerSpeechInterrupted": { + "type": "object", + "properties": { + "on": { + "type": "string", + "description": "This is the event that triggers this hook", + "enum": [ + "customer.speech.interrupted" + ], + "maxLength": 1000 + }, + "do": { + "type": "array", + "description": "This is the set of actions to perform when the hook triggers", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/TransferAssistantHookAction", + "title": "TransferAssistantHookAction" + }, + { + "$ref": "#/components/schemas/FunctionCallAssistantHookAction", + "title": "FunctionCallAssistantHookAction" + }, + { + "$ref": "#/components/schemas/SayAssistantHookAction", + "title": "SayAssistantHookAction" + } + ] + } + } + }, + "required": [ + "on", + "do" + ] + }, + "VoicemailDetectionBackoffPlan": { + "type": "object", + "properties": { + "startAtSeconds": { + "type": "number", + "description": "This is the number of seconds to wait before starting the first retry attempt.", + "minimum": 0, + "default": 5 + }, + "frequencySeconds": { + "type": "number", + "description": "This is the interval in seconds between retry attempts.", + "minimum": 2.5, + "default": 5 + }, + "maxRetries": { + "type": "number", + "description": "This is the maximum number of retry attempts before giving up.", + "minimum": 1, + "maximum": 10, + "default": 6 + } + } + }, "GoogleVoicemailDetectionPlan": { "type": "object", "properties": { + "beepMaxAwaitSeconds": { + "type": "number", + "description": "This is the maximum duration from the start of the call that we will wait for a voicemail beep, before speaking our message\n\n- If we detect a voicemail beep before this, we will speak the message at that point.\n\n- Setting too low a value means that the bot will start speaking its voicemail message too early. If it does so before the actual beep, it will get cut off. You should definitely tune this to your use case.\n\n@default 30\n@min 0\n@max 60", + "minimum": 0, + "maximum": 30, + "default": 30 + }, "provider": { "type": "string", "description": "This is the provider to use for voicemail detection.", @@ -15709,22 +17633,29 @@ "google" ] }, - "voicemailExpectedDurationSeconds": { - "type": "number", - "description": "This is how long should we listen in order to determine if we were sent to voicemail or not?\n\n@default 15", - "minimum": 5, - "maximum": 60, - "default": 25 + "backoffPlan": { + "description": "This is the backoff plan for the voicemail detection.", + "allOf": [ + { + "$ref": "#/components/schemas/VoicemailDetectionBackoffPlan" + } + ] } }, "required": [ - "provider", - "voicemailExpectedDurationSeconds" + "provider" ] }, "OpenAIVoicemailDetectionPlan": { "type": "object", "properties": { + "beepMaxAwaitSeconds": { + "type": "number", + "description": "This is the maximum duration from the start of the call that we will wait for a voicemail beep, before speaking our message\n\n- If we detect a voicemail beep before this, we will speak the message at that point.\n\n- Setting too low a value means that the bot will start speaking its voicemail message too early. If it does so before the actual beep, it will get cut off. You should definitely tune this to your use case.\n\n@default 30\n@min 0\n@max 60", + "minimum": 0, + "maximum": 30, + "default": 30 + }, "provider": { "type": "string", "description": "This is the provider to use for voicemail detection.", @@ -15732,17 +17663,17 @@ "openai" ] }, - "voicemailExpectedDurationSeconds": { - "type": "number", - "description": "This is how long should we listen in order to determine if we were sent to voicemail or not?\n\n@default 15", - "minimum": 5, - "maximum": 60, - "default": 25 + "backoffPlan": { + "description": "This is the backoff plan for the voicemail detection.", + "allOf": [ + { + "$ref": "#/components/schemas/VoicemailDetectionBackoffPlan" + } + ] } }, "required": [ - "provider", - "voicemailExpectedDurationSeconds" + "provider" ] }, "TwilioVoicemailDetectionPlan": { @@ -15817,6 +17748,36 @@ "provider" ] }, + "VapiVoicemailDetectionPlan": { + "type": "object", + "properties": { + "beepMaxAwaitSeconds": { + "type": "number", + "description": "This is the maximum duration from the start of the call that we will wait for a voicemail beep, before speaking our message\n\n- If we detect a voicemail beep before this, we will speak the message at that point.\n\n- Setting too low a value means that the bot will start speaking its voicemail message too early. If it does so before the actual beep, it will get cut off. You should definitely tune this to your use case.\n\n@default 30\n@min 0\n@max 60", + "minimum": 0, + "maximum": 30, + "default": 30 + }, + "provider": { + "type": "string", + "description": "This is the provider to use for voicemail detection.", + "enum": [ + "vapi" + ] + }, + "backoffPlan": { + "description": "This is the backoff plan for the voicemail detection.", + "allOf": [ + { + "$ref": "#/components/schemas/VoicemailDetectionBackoffPlan" + } + ] + } + }, + "required": [ + "provider" + ] + }, "CompliancePlan": { "type": "object", "properties": { @@ -15840,7 +17801,7 @@ "type": "object", "properties": { "messages": { - "description": "These are the messages used to generate the structured data.\n\n@default: ```\n[\n {\n \"role\": \"system\",\n \"content\": \"You are an expert data extractor. You will be given a transcript of a call. Extract structured data per the JSON Schema. DO NOT return anything except the structured data.\\n\\nJson Schema:\\\\n{{schema}}\\n\\nOnly respond with the JSON.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Here is the transcript:\\n\\n{{transcript}}\\n\\n\"\n }\n]```\n\nYou can customize by providing any messages you want.\n\nHere are the template variables available:\n- {{transcript}}: the transcript of the call from `call.artifact.transcript`- {{systemPrompt}}: the system prompt of the call from `assistant.model.messages[type=system].content`- {{schema}}: the schema of the structured data from `structuredDataPlan.schema`", + "description": "These are the messages used to generate the structured data.\n\n@default: ```\n[\n {\n \"role\": \"system\",\n \"content\": \"You are an expert data extractor. You will be given a transcript of a call. Extract structured data per the JSON Schema. DO NOT return anything except the structured data.\\n\\nJson Schema:\\\\n{{schema}}\\n\\nOnly respond with the JSON.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Here is the transcript:\\n\\n{{transcript}}\\n\\n. Here is the ended reason of the call:\\n\\n{{endedReason}}\\n\\n\"\n }\n]```\n\nYou can customize by providing any messages you want.\n\nHere are the template variables available:\n- {{transcript}}: the transcript of the call from `call.artifact.transcript`- {{systemPrompt}}: the system prompt of the call from `assistant.model.messages[type=system].content`- {{schema}}: the schema of the structured data from `structuredDataPlan.schema`- {{endedReason}}: the ended reason of the call from `call.endedReason`", "type": "array", "items": { "type": "object" @@ -15905,7 +17866,7 @@ "description": "This enforces the rubric of the evaluation. The output is stored in `call.analysis.successEvaluation`.\n\nOptions include:\n- 'NumericScale': A scale of 1 to 10.\n- 'DescriptiveScale': A scale of Excellent, Good, Fair, Poor.\n- 'Checklist': A checklist of criteria and their status.\n- 'Matrix': A grid that evaluates multiple criteria across different performance levels.\n- 'PercentageScale': A scale of 0% to 100%.\n- 'LikertScale': A scale of Strongly Agree, Agree, Neutral, Disagree, Strongly Disagree.\n- 'AutomaticRubric': Automatically break down evaluation into several criteria, each with its own score.\n- 'PassFail': A simple 'true' if call passed, 'false' if not.\n\nDefault is 'PassFail'." }, "messages": { - "description": "These are the messages used to generate the success evaluation.\n\n@default: ```\n[\n {\n \"role\": \"system\",\n \"content\": \"You are an expert call evaluator. You will be given a transcript of a call and the system prompt of the AI participant. Determine if the call was successful based on the objectives inferred from the system prompt. DO NOT return anything except the result.\\n\\nRubric:\\\\n{{rubric}}\\n\\nOnly respond with the result.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Here is the transcript:\\n\\n{{transcript}}\\n\\n\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Here was the system prompt of the call:\\n\\n{{systemPrompt}}\\n\\n\"\n }\n]```\n\nYou can customize by providing any messages you want.\n\nHere are the template variables available:\n- {{transcript}}: the transcript of the call from `call.artifact.transcript`- {{systemPrompt}}: the system prompt of the call from `assistant.model.messages[type=system].content`- {{rubric}}: the rubric of the success evaluation from `successEvaluationPlan.rubric`", + "description": "These are the messages used to generate the success evaluation.\n\n@default: ```\n[\n {\n \"role\": \"system\",\n \"content\": \"You are an expert call evaluator. You will be given a transcript of a call and the system prompt of the AI participant. Determine if the call was successful based on the objectives inferred from the system prompt. DO NOT return anything except the result.\\n\\nRubric:\\\\n{{rubric}}\\n\\nOnly respond with the result.\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Here is the transcript:\\n\\n{{transcript}}\\n\\n\"\n },\n {\n \"role\": \"user\",\n \"content\": \"Here was the system prompt of the call:\\n\\n{{systemPrompt}}\\n\\n. Here is the ended reason of the call:\\n\\n{{endedReason}}\\n\\n\"\n }\n]```\n\nYou can customize by providing any messages you want.\n\nHere are the template variables available:\n- {{transcript}}: the transcript of the call from `call.artifact.transcript`- {{systemPrompt}}: the system prompt of the call from `assistant.model.messages[type=system].content`- {{rubric}}: the rubric of the success evaluation from `successEvaluationPlan.rubric`- {{endedReason}}: the ended reason of the call from `call.endedReason`", "type": "array", "items": { "type": "object" @@ -16137,7 +18098,7 @@ }, "waitFunction": { "type": "string", - "description": "This expression describes how long the bot will wait to start speaking based on the likelihood that the user has reached an endpoint.\n\nThis is a millisecond valued function. It maps probabilities (real numbers on [0,1]) to milliseconds that the bot should wait before speaking ([0, \\infty]). Any negative values that are returned are set to zero (the bot can't start talking in the past).\n\nA probability of zero represents very high confidence that the caller has stopped speaking, and would like the bot to speak to them. A probability of one represents very high confidence that the caller is still speaking.\n\nUnder the hood, this is parsed into a mathjs expression. Whatever you use to write your expression needs to be valid with respect to mathjs\n\n@default \"70 + 4000 * x\"", + "description": "This expression describes how long the bot will wait to start speaking based on the likelihood that the user has reached an endpoint.\n\nThis is a millisecond valued function. It maps probabilities (real numbers on [0,1]) to milliseconds that the bot should wait before speaking ([0, \\infty]). Any negative values that are returned are set to zero (the bot can't start talking in the past).\n\nA probability of zero represents very high confidence that the caller has stopped speaking, and would like the bot to speak to them. A probability of one represents very high confidence that the caller is still speaking.\n\nUnder the hood, this is parsed into a mathjs expression. Whatever you use to write your expression needs to be valid with respect to mathjs\n\n@default \"20 + 500 * sqrt(x) + 2500 * x^3\"", "examples": [ "70 + 4000 * x", "200 + 8000 * x", @@ -16186,9 +18147,19 @@ "example": 0.4 }, "smartEndpointingEnabled": { - "type": "object", "example": false, - "deprecated": true + "deprecated": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "string", + "enum": [ + "livekit" + ] + } + ] }, "smartEndpointingPlan": { "description": "This is the plan for smart endpointing. Pick between Vapi smart endpointing or LiveKit smart endpointing (or nothing). We strongly recommend using livekit endpointing when working in English. LiveKit endpointing is not supported in other languages, yet.\n\nIf this is set, it will override and take precedence over `transcriptionEndpointingPlan`.\nThis plan will still be overridden by any matching `customEndpointingRules`.", @@ -16375,78 +18346,22 @@ "description": "This determines whether the assistant's calls allow live listening. Defaults to true.\n\nFetch `call.monitor.listenUrl` to get the live listening URL.\n\n@default true", "example": false }, + "listenAuthenticationEnabled": { + "type": "boolean", + "description": "This enables authentication on the `call.monitor.listenUrl`.\n\nIf `listenAuthenticationEnabled` is `true`, the `call.monitor.listenUrl` will require an `Authorization: Bearer ` header.\n\n@default false", + "example": false + }, "controlEnabled": { "type": "boolean", "description": "This determines whether the assistant's calls allow live control. Defaults to true.\n\nFetch `call.monitor.controlUrl` to get the live control URL.\n\nTo use, send any control message via a POST request to `call.monitor.controlUrl`. Here are the types of controls supported: https://docs.vapi.ai/api-reference/messages/client-inbound-message\n\n@default true", "example": false - } - } - }, - "AssistantHookFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "This is the type of filter - currently only \"oneOf\" is supported", - "enum": [ - "oneOf" - ], - "maxLength": 1000 - }, - "key": { - "type": "string", - "description": "This is the key to filter on (e.g. \"call.endedReason\")", - "maxLength": 1000 - }, - "oneOf": { - "description": "This is the array of possible values to match against", - "type": "array", - "items": { - "type": "string", - "maxLength": 1000 - } - } - }, - "required": [ - "type", - "key", - "oneOf" - ] - }, - "AssistantHookActionBase": { - "type": "object", - "properties": {} - }, - "AssistantHooks": { - "type": "object", - "properties": { - "on": { - "type": "string", - "description": "This is the event that triggers this hook", - "enum": [ - "call.ending" - ], - "maxLength": 1000 - }, - "filters": { - "description": "This is the set of filters that must match for the hook to trigger", - "type": "array", - "items": { - "$ref": "#/components/schemas/AssistantHookFilter" - } }, - "do": { - "description": "This is the set of actions to perform when the hook triggers", - "type": "array", - "items": { - "$ref": "#/components/schemas/AssistantHookActionBase" - } + "controlAuthenticationEnabled": { + "type": "boolean", + "description": "This enables authentication on the `call.monitor.controlUrl`.\n\nIf `controlAuthenticationEnabled` is `true`, the `call.monitor.controlUrl` will require an `Authorization: Bearer ` header.\n\n@default false", + "example": false } - }, - "required": [ - "on", - "do" - ] + } }, "KeypadInputPlan": { "type": "object", @@ -16480,11 +18395,11 @@ "oneOf": [ { "$ref": "#/components/schemas/AssemblyAITranscriber", - "title": "AssemblyAI" + "title": "AssemblyAITranscriber" }, { "$ref": "#/components/schemas/AzureSpeechTranscriber", - "title": "Azure" + "title": "AzureSpeechTranscriber" }, { "$ref": "#/components/schemas/CustomTranscriber", @@ -16492,45 +18407,45 @@ }, { "$ref": "#/components/schemas/DeepgramTranscriber", - "title": "Deepgram" + "title": "DeepgramTranscriber" }, { "$ref": "#/components/schemas/ElevenLabsTranscriber", - "title": "ElevenLabs" + "title": "ElevenLabsTranscriber" }, { "$ref": "#/components/schemas/GladiaTranscriber", - "title": "Gladia" + "title": "GladiaTranscriber" }, { - "$ref": "#/components/schemas/SpeechmaticsTranscriber", - "title": "Speechmatics" + "$ref": "#/components/schemas/GoogleTranscriber", + "title": "GoogleTranscriber" }, { - "$ref": "#/components/schemas/TalkscriberTranscriber", - "title": "Talkscriber" + "$ref": "#/components/schemas/SpeechmaticsTranscriber", + "title": "SpeechmaticsTranscriber" }, { - "$ref": "#/components/schemas/GoogleTranscriber", - "title": "Google" + "$ref": "#/components/schemas/TalkscriberTranscriber", + "title": "TalkscriberTranscriber" }, { "$ref": "#/components/schemas/OpenAITranscriber", - "title": "OpenAI" + "title": "OpenAITranscriber" } ] }, "model": { "description": "These are the options for the assistant's LLM.", "oneOf": [ - { - "$ref": "#/components/schemas/AnyscaleModel", - "title": "Anyscale" - }, { "$ref": "#/components/schemas/AnthropicModel", "title": "Anthropic" }, + { + "$ref": "#/components/schemas/AnyscaleModel", + "title": "Anyscale" + }, { "$ref": "#/components/schemas/CerebrasModel", "title": "Cerebras" @@ -16575,10 +18490,6 @@ "$ref": "#/components/schemas/TogetherAIModel", "title": "Together" }, - { - "$ref": "#/components/schemas/VapiModel", - "title": "Vapi" - }, { "$ref": "#/components/schemas/XaiModel", "title": "XAI" @@ -16590,11 +18501,11 @@ "oneOf": [ { "$ref": "#/components/schemas/AzureVoice", - "title": "Azure" + "title": "AzureVoice" }, { "$ref": "#/components/schemas/CartesiaVoice", - "title": "Cartesia" + "title": "CartesiaVoice" }, { "$ref": "#/components/schemas/CustomVoice", @@ -16602,39 +18513,39 @@ }, { "$ref": "#/components/schemas/DeepgramVoice", - "title": "Deepgram" + "title": "DeepgramVoice" }, { "$ref": "#/components/schemas/ElevenLabsVoice", - "title": "ElevenLabs" + "title": "ElevenLabsVoice" }, { "$ref": "#/components/schemas/HumeVoice", - "title": "Hume" + "title": "HumeVoice" }, { "$ref": "#/components/schemas/LMNTVoice", - "title": "LMNT" + "title": "LMNTVoice" }, { "$ref": "#/components/schemas/NeuphonicVoice", - "title": "Neuphonic" + "title": "NeuphonicVoice" }, { "$ref": "#/components/schemas/OpenAIVoice", - "title": "OpenAI" + "title": "OpenAIVoice" }, { "$ref": "#/components/schemas/PlayHTVoice", - "title": "PlayHT" + "title": "PlayHTVoice" }, { "$ref": "#/components/schemas/RimeAIVoice", - "title": "RimeAI" + "title": "RimeAIVoice" }, { "$ref": "#/components/schemas/SmallestAIVoice", - "title": "SmallestAI" + "title": "SmallestAIVoice" }, { "$ref": "#/components/schemas/TavusVoice", @@ -16642,13 +18553,13 @@ }, { "$ref": "#/components/schemas/VapiVoice", - "title": "Vapi" + "title": "VapiVoice" + }, + { + "$ref": "#/components/schemas/SesameVoice", + "title": "SesameVoice" } - ], - "default": { - "provider": "playht", - "voiceId": "jennifer" - } + ] }, "firstMessage": { "type": "string", @@ -16683,6 +18594,10 @@ { "$ref": "#/components/schemas/TwilioVoicemailDetectionPlan", "title": "Twilio" + }, + { + "$ref": "#/components/schemas/VapiVoicemailDetectionPlan", + "title": "Vapi" } ] }, @@ -16701,6 +18616,7 @@ "transcript", "tool-calls", "tool-calls-result", + "tool.completed", "transfer-update", "user-interrupted", "voice-input", @@ -16736,6 +18652,7 @@ "transcript", "tool-calls", "tool-calls-result", + "tool.completed", "transfer-update", "user-interrupted", "voice-input", @@ -16815,7 +18732,6 @@ }, "backgroundSound": { "description": "This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.\nYou can also provide a custom sound by providing a URL to an audio file.", - "maxLength": 1000, "oneOf": [ { "type": "enum", @@ -17060,6 +18976,10 @@ { "$ref": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO", "title": "SlackOAuth2AuthorizationCredential" + }, + { + "$ref": "#/components/schemas/CreateGoHighLevelMCPCredentialDTO", + "title": "GoHighLevelMCPCredential" } ], "discriminator": { @@ -17111,11 +19031,32 @@ "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", - "slack.oauth2-authorization": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO" + "slack.oauth2-authorization": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO", + "ghl.oauth2-authorization": "#/components/schemas/CreateGoHighLevelMCPCredentialDTO" } } } }, + "hooks": { + "type": "array", + "description": "This is a set of actions that will be performed on certain events.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AssistantHookCallEnding", + "title": "AssistantHookCallEnding" + }, + { + "$ref": "#/components/schemas/AssistantHookAssistantSpeechInterrupted", + "title": "AssistantHookAssistantSpeechInterrupted" + }, + { + "$ref": "#/components/schemas/AssistantHookCustomerSpeechInterrupted", + "title": "AssistantHookCustomerSpeechInterrupted" + } + ] + } + }, "name": { "type": "string", "description": "This is the name of the assistant.\n\nThis is required when you want to transfer between assistants in a call.", @@ -17210,13 +19151,6 @@ } ] }, - "hooks": { - "description": "This is a set of actions that will be performed on certain events.", - "type": "array", - "items": { - "$ref": "#/components/schemas/AssistantHooks" - } - }, "keypadInputPlan": { "$ref": "#/components/schemas/KeypadInputPlan" } @@ -17230,11 +19164,11 @@ "oneOf": [ { "$ref": "#/components/schemas/AssemblyAITranscriber", - "title": "AssemblyAI" + "title": "AssemblyAITranscriber" }, { "$ref": "#/components/schemas/AzureSpeechTranscriber", - "title": "Azure" + "title": "AzureSpeechTranscriber" }, { "$ref": "#/components/schemas/CustomTranscriber", @@ -17242,45 +19176,45 @@ }, { "$ref": "#/components/schemas/DeepgramTranscriber", - "title": "Deepgram" + "title": "DeepgramTranscriber" }, { "$ref": "#/components/schemas/ElevenLabsTranscriber", - "title": "ElevenLabs" + "title": "ElevenLabsTranscriber" }, { "$ref": "#/components/schemas/GladiaTranscriber", - "title": "Gladia" + "title": "GladiaTranscriber" }, { - "$ref": "#/components/schemas/SpeechmaticsTranscriber", - "title": "Speechmatics" + "$ref": "#/components/schemas/GoogleTranscriber", + "title": "GoogleTranscriber" }, { - "$ref": "#/components/schemas/TalkscriberTranscriber", - "title": "Talkscriber" + "$ref": "#/components/schemas/SpeechmaticsTranscriber", + "title": "SpeechmaticsTranscriber" }, { - "$ref": "#/components/schemas/GoogleTranscriber", - "title": "Google" + "$ref": "#/components/schemas/TalkscriberTranscriber", + "title": "TalkscriberTranscriber" }, { "$ref": "#/components/schemas/OpenAITranscriber", - "title": "OpenAI" + "title": "OpenAITranscriber" } ] }, "model": { "description": "These are the options for the assistant's LLM.", "oneOf": [ - { - "$ref": "#/components/schemas/AnyscaleModel", - "title": "Anyscale" - }, { "$ref": "#/components/schemas/AnthropicModel", "title": "Anthropic" }, + { + "$ref": "#/components/schemas/AnyscaleModel", + "title": "Anyscale" + }, { "$ref": "#/components/schemas/CerebrasModel", "title": "Cerebras" @@ -17325,10 +19259,6 @@ "$ref": "#/components/schemas/TogetherAIModel", "title": "Together" }, - { - "$ref": "#/components/schemas/VapiModel", - "title": "Vapi" - }, { "$ref": "#/components/schemas/XaiModel", "title": "XAI" @@ -17340,11 +19270,11 @@ "oneOf": [ { "$ref": "#/components/schemas/AzureVoice", - "title": "Azure" + "title": "AzureVoice" }, { "$ref": "#/components/schemas/CartesiaVoice", - "title": "Cartesia" + "title": "CartesiaVoice" }, { "$ref": "#/components/schemas/CustomVoice", @@ -17352,39 +19282,39 @@ }, { "$ref": "#/components/schemas/DeepgramVoice", - "title": "Deepgram" + "title": "DeepgramVoice" }, { "$ref": "#/components/schemas/ElevenLabsVoice", - "title": "ElevenLabs" + "title": "ElevenLabsVoice" }, { "$ref": "#/components/schemas/HumeVoice", - "title": "Hume" + "title": "HumeVoice" }, { "$ref": "#/components/schemas/LMNTVoice", - "title": "LMNT" + "title": "LMNTVoice" }, { "$ref": "#/components/schemas/NeuphonicVoice", - "title": "Neuphonic" + "title": "NeuphonicVoice" }, { "$ref": "#/components/schemas/OpenAIVoice", - "title": "OpenAI" + "title": "OpenAIVoice" }, { "$ref": "#/components/schemas/PlayHTVoice", - "title": "PlayHT" + "title": "PlayHTVoice" }, { "$ref": "#/components/schemas/RimeAIVoice", - "title": "RimeAI" + "title": "RimeAIVoice" }, { "$ref": "#/components/schemas/SmallestAIVoice", - "title": "SmallestAI" + "title": "SmallestAIVoice" }, { "$ref": "#/components/schemas/TavusVoice", @@ -17392,13 +19322,13 @@ }, { "$ref": "#/components/schemas/VapiVoice", - "title": "Vapi" + "title": "VapiVoice" + }, + { + "$ref": "#/components/schemas/SesameVoice", + "title": "SesameVoice" } - ], - "default": { - "provider": "playht", - "voiceId": "jennifer" - } + ] }, "firstMessage": { "type": "string", @@ -17433,6 +19363,10 @@ { "$ref": "#/components/schemas/TwilioVoicemailDetectionPlan", "title": "Twilio" + }, + { + "$ref": "#/components/schemas/VapiVoicemailDetectionPlan", + "title": "Vapi" } ] }, @@ -17451,6 +19385,7 @@ "transcript", "tool-calls", "tool-calls-result", + "tool.completed", "transfer-update", "user-interrupted", "voice-input", @@ -17486,6 +19421,7 @@ "transcript", "tool-calls", "tool-calls-result", + "tool.completed", "transfer-update", "user-interrupted", "voice-input", @@ -17565,7 +19501,6 @@ }, "backgroundSound": { "description": "This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.\nYou can also provide a custom sound by providing a URL to an audio file.", - "maxLength": 1000, "oneOf": [ { "type": "enum", @@ -17810,6 +19745,10 @@ { "$ref": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO", "title": "SlackOAuth2AuthorizationCredential" + }, + { + "$ref": "#/components/schemas/CreateGoHighLevelMCPCredentialDTO", + "title": "GoHighLevelMCPCredential" } ], "discriminator": { @@ -17861,11 +19800,32 @@ "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", - "slack.oauth2-authorization": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO" + "slack.oauth2-authorization": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO", + "ghl.oauth2-authorization": "#/components/schemas/CreateGoHighLevelMCPCredentialDTO" } } } }, + "hooks": { + "type": "array", + "description": "This is a set of actions that will be performed on certain events.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AssistantHookCallEnding", + "title": "AssistantHookCallEnding" + }, + { + "$ref": "#/components/schemas/AssistantHookAssistantSpeechInterrupted", + "title": "AssistantHookAssistantSpeechInterrupted" + }, + { + "$ref": "#/components/schemas/AssistantHookCustomerSpeechInterrupted", + "title": "AssistantHookCustomerSpeechInterrupted" + } + ] + } + }, "variableValues": { "type": "object", "description": "These are values that will be used to replace the template variables in the assistant messages and other text-based fields.\nThis uses LiquidJS syntax. https://liquidjs.com/tutorials/intro-to-liquid.html\n\nSo for example, `{{ name }}` will be replaced with the value of `name` in `variableValues`.\n`{{\"now\" | date: \"%b %d, %Y, %I:%M %p\", \"America/New_York\"}}` will be replaced with the current date and time in New York.\n Some VAPI reserved defaults:\n - *customer* - the customer object" @@ -17964,13 +19924,6 @@ } ] }, - "hooks": { - "description": "This is a set of actions that will be performed on certain events.", - "type": "array", - "items": { - "$ref": "#/components/schemas/AssistantHooks" - } - }, "keypadInputPlan": { "$ref": "#/components/schemas/KeypadInputPlan" } @@ -18036,6 +19989,103 @@ "members" ] }, + "CreateWorkflowDTO": { + "type": "object", + "properties": { + "nodes": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ConversationNode", + "title": "ConversationNode" + }, + { + "$ref": "#/components/schemas/ToolNode", + "title": "ToolNode" + } + ] + } + }, + "model": { + "description": "These are the options for the workflow's LLM.", + "oneOf": [ + { + "$ref": "#/components/schemas/WorkflowOpenAIModel", + "title": "WorkflowOpenAIModel" + }, + { + "$ref": "#/components/schemas/WorkflowAnthropicModel", + "title": "WorkflowAnthropicModel" + } + ] + }, + "name": { + "type": "string", + "maxLength": 80 + }, + "edges": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Edge" + } + } + }, + "required": [ + "nodes", + "name", + "edges" + ] + }, + "TransferPhoneNumberHookAction": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "This is the type of action - must be \"transfer\"", + "enum": [ + "transfer" + ] + }, + "destination": { + "description": "This is the destination details for the transfer - can be a phone number or SIP URI", + "oneOf": [ + { + "$ref": "#/components/schemas/TransferDestinationNumber", + "title": "NumberTransferDestination" + }, + { + "$ref": "#/components/schemas/TransferDestinationSip", + "title": "SipTransferDestination" + } + ] + } + }, + "required": [ + "type" + ] + }, + "SayPhoneNumberHookAction": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "This is the type of action - must be \"say\"", + "enum": [ + "say" + ] + }, + "exact": { + "type": "string", + "description": "This is the message to say", + "maxLength": 4000 + } + }, + "required": [ + "type", + "exact" + ] + }, "PhoneNumberHookCallRinging": { "type": "object", "properties": { @@ -18097,6 +20147,11 @@ ] } }, + "smsEnabled": { + "type": "boolean", + "description": "Controls whether Vapi sets the messaging webhook URL on the Twilio number during import.\n\nIf set to `false`, Vapi will not update the Twilio messaging URL, leaving it as is.\nIf `true` or omitted (default), Vapi will configure both the voice and messaging URLs.\n\n@default true", + "default": true + }, "twilioPhoneNumber": { "type": "string", "description": "These are the digits of the phone number you own on your Twilio.", @@ -18110,6 +20165,14 @@ "type": "string", "description": "This is the Twilio Auth Token that will be used to handle this phone number." }, + "twilioApiKey": { + "type": "string", + "description": "This is the Twilio API Key that will be used to handle this phone number. If AuthToken is provided, this will be ignored." + }, + "twilioApiSecret": { + "type": "string", + "description": "This is the Twilio API Secret that will be used to handle this phone number. If AuthToken is provided, this will be ignored." + }, "name": { "type": "string", "description": "This is the name of the phone number. This is just for your own reference.", @@ -18117,11 +20180,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "workflowId": { + "type": "string", + "description": "This is the workflow that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "squadId": { "type": "string", - "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "server": { "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. assistant.server\n2. phoneNumber.server\n3. org.server", @@ -18134,8 +20201,7 @@ }, "required": [ "twilioPhoneNumber", - "twilioAccountSid", - "twilioAuthToken" + "twilioAccountSid" ] }, "CreateCustomerDTO": { @@ -18240,6 +20306,10 @@ { "$ref": "#/components/schemas/AnalysisCost", "title": "AnalysisCost" + }, + { + "$ref": "#/components/schemas/KnowledgeBaseCost", + "title": "KnowledgeBaseCost" } ] } @@ -18274,6 +20344,7 @@ "phoneCallProvider": { "type": "string", "description": "This is the provider of the call.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type.", + "deprecated": true, "enum": [ "twilio", "vonage", @@ -18881,14 +20952,15 @@ }, "phoneCallProviderId": { "type": "string", - "description": "The ID of the call as provided by the phone number service. callSid in Twilio. conversationUuid in Vonage. callControlId in Telnyx.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type." + "description": "The ID of the call as provided by the phone number service. callSid in Twilio. conversationUuid in Vonage. callControlId in Telnyx.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type.", + "deprecated": true }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead." + "description": "This is the assistant ID that will be used for the call. To use a transient assistant, use `assistant` instead.\n\nTo start a call with:\n- Assistant, use `assistantId` or `assistant`\n- Squad, use `squadId` or `squad`\n- Workflow, use `workflowId` or `workflow`" }, "assistant": { - "description": "This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.", + "description": "This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.\n\nTo start a call with:\n- Assistant, use `assistant`\n- Squad, use `squad`\n- Workflow, use `workflow`", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -18905,16 +20977,28 @@ }, "squadId": { "type": "string", - "description": "This is the squad that will be used for the call. To use a transient squad, use `squad` instead." + "description": "This is the squad that will be used for the call. To use a transient squad, use `squad` instead.\n\nTo start a call with:\n- Assistant, use `assistant` or `assistantId`\n- Squad, use `squad` or `squadId`\n- Workflow, use `workflow` or `workflowId`" }, "squad": { - "description": "This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.", + "description": "This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.\n\nTo start a call with:\n- Assistant, use `assistant` or `assistantId`\n- Squad, use `squad` or `squadId`\n- Workflow, use `workflow` or `workflowId`", "allOf": [ { "$ref": "#/components/schemas/CreateSquadDTO" } ] }, + "workflowId": { + "type": "string", + "description": "[BETA] This feature is in active development. The API and behavior are subject to change as we refine it based on user feedback.\n\nThis is the workflow that will be used for the call. To use a transient workflow, use `workflow` instead.\n\nTo start a call with:\n- Assistant, use `assistant` or `assistantId`\n- Squad, use `squad` or `squadId`\n- Workflow, use `workflow` or `workflowId`" + }, + "workflow": { + "description": "[BETA] This feature is in active development. The API and behavior are subject to change as we refine it based on user feedback.\n\nThis is a workflow that will be used for the call. To use an existing workflow, use `workflowId` instead.\n\nTo start a call with:\n- Assistant, use `assistant` or `assistantId`\n- Squad, use `squad` or `squadId`\n- Workflow, use `workflow` or `workflowId`", + "allOf": [ + { + "$ref": "#/components/schemas/CreateWorkflowDTO" + } + ] + }, "phoneNumberId": { "type": "string", "description": "This is the phone number that will be used for the call. To use a transient number, use `phoneNumber` instead.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type." @@ -19031,10 +21115,10 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead." + "description": "This is the assistant ID that will be used for the call. To use a transient assistant, use `assistant` instead.\n\nTo start a call with:\n- Assistant, use `assistantId` or `assistant`\n- Squad, use `squadId` or `squad`\n- Workflow, use `workflowId` or `workflow`" }, "assistant": { - "description": "This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.", + "description": "This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.\n\nTo start a call with:\n- Assistant, use `assistant`\n- Squad, use `squad`\n- Workflow, use `workflow`", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -19051,16 +21135,28 @@ }, "squadId": { "type": "string", - "description": "This is the squad that will be used for the call. To use a transient squad, use `squad` instead." + "description": "This is the squad that will be used for the call. To use a transient squad, use `squad` instead.\n\nTo start a call with:\n- Assistant, use `assistant` or `assistantId`\n- Squad, use `squad` or `squadId`\n- Workflow, use `workflow` or `workflowId`" }, "squad": { - "description": "This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.", + "description": "This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.\n\nTo start a call with:\n- Assistant, use `assistant` or `assistantId`\n- Squad, use `squad` or `squadId`\n- Workflow, use `workflow` or `workflowId`", "allOf": [ { "$ref": "#/components/schemas/CreateSquadDTO" } ] }, + "workflowId": { + "type": "string", + "description": "[BETA] This feature is in active development. The API and behavior are subject to change as we refine it based on user feedback.\n\nThis is the workflow that will be used for the call. To use a transient workflow, use `workflow` instead.\n\nTo start a call with:\n- Assistant, use `assistant` or `assistantId`\n- Squad, use `squad` or `squadId`\n- Workflow, use `workflow` or `workflowId`" + }, + "workflow": { + "description": "[BETA] This feature is in active development. The API and behavior are subject to change as we refine it based on user feedback.\n\nThis is a workflow that will be used for the call. To use an existing workflow, use `workflowId` instead.\n\nTo start a call with:\n- Assistant, use `assistant` or `assistantId`\n- Squad, use `squad` or `squadId`\n- Workflow, use `workflow` or `workflowId`", + "allOf": [ + { + "$ref": "#/components/schemas/CreateWorkflowDTO" + } + ] + }, "phoneNumberId": { "type": "string", "description": "This is the phone number that will be used for the call. To use a transient number, use `phoneNumber` instead.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type." @@ -19153,10 +21249,10 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead." + "description": "This is the assistant ID that will be used for the call. To use a transient assistant, use `assistant` instead.\n\nTo start a call with:\n- Assistant, use `assistantId` or `assistant`\n- Squad, use `squadId` or `squad`\n- Workflow, use `workflowId` or `workflow`" }, "assistant": { - "description": "This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.", + "description": "This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.\n\nTo start a call with:\n- Assistant, use `assistant`\n- Squad, use `squad`\n- Workflow, use `workflow`", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -19173,16 +21269,28 @@ }, "squadId": { "type": "string", - "description": "This is the squad that will be used for the call. To use a transient squad, use `squad` instead." + "description": "This is the squad that will be used for the call. To use a transient squad, use `squad` instead.\n\nTo start a call with:\n- Assistant, use `assistant` or `assistantId`\n- Squad, use `squad` or `squadId`\n- Workflow, use `workflow` or `workflowId`" }, "squad": { - "description": "This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.", + "description": "This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.\n\nTo start a call with:\n- Assistant, use `assistant` or `assistantId`\n- Squad, use `squad` or `squadId`\n- Workflow, use `workflow` or `workflowId`", "allOf": [ { "$ref": "#/components/schemas/CreateSquadDTO" } ] }, + "workflowId": { + "type": "string", + "description": "[BETA] This feature is in active development. The API and behavior are subject to change as we refine it based on user feedback.\n\nThis is the workflow that will be used for the call. To use a transient workflow, use `workflow` instead.\n\nTo start a call with:\n- Assistant, use `assistant` or `assistantId`\n- Squad, use `squad` or `squadId`\n- Workflow, use `workflow` or `workflowId`" + }, + "workflow": { + "description": "[BETA] This feature is in active development. The API and behavior are subject to change as we refine it based on user feedback.\n\nThis is a workflow that will be used for the call. To use an existing workflow, use `workflowId` instead.\n\nTo start a call with:\n- Assistant, use `assistant` or `assistantId`\n- Squad, use `squad` or `squadId`\n- Workflow, use `workflow` or `workflowId`", + "allOf": [ + { + "$ref": "#/components/schemas/CreateWorkflowDTO" + } + ] + }, "phoneNumberId": { "type": "string", "description": "This is the phone number that will be used for the call. To use a transient number, use `phoneNumber` instead.\n\nOnly relevant for `outboundPhoneCall` and `inboundPhoneCall` type." @@ -19214,10 +21322,10 @@ "properties": { "assistantId": { "type": "string", - "description": "This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead." + "description": "This is the assistant ID that will be used for the call. To use a transient assistant, use `assistant` instead.\n\nTo start a call with:\n- Assistant, use `assistantId` or `assistant`\n- Squad, use `squadId` or `squad`\n- Workflow, use `workflowId` or `workflow`" }, "assistant": { - "description": "This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.", + "description": "This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.\n\nTo start a call with:\n- Assistant, use `assistant`\n- Squad, use `squad`\n- Workflow, use `workflow`", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -19234,15 +21342,27 @@ }, "squadId": { "type": "string", - "description": "This is the squad that will be used for the call. To use a transient squad, use `squad` instead." + "description": "This is the squad that will be used for the call. To use a transient squad, use `squad` instead.\n\nTo start a call with:\n- Assistant, use `assistant` or `assistantId`\n- Squad, use `squad` or `squadId`\n- Workflow, use `workflow` or `workflowId`" }, "squad": { - "description": "This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.", + "description": "This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.\n\nTo start a call with:\n- Assistant, use `assistant` or `assistantId`\n- Squad, use `squad` or `squadId`\n- Workflow, use `workflow` or `workflowId`", "allOf": [ { "$ref": "#/components/schemas/CreateSquadDTO" } ] + }, + "workflowId": { + "type": "string", + "description": "[BETA] This feature is in active development. The API and behavior are subject to change as we refine it based on user feedback.\n\nThis is the workflow that will be used for the call. To use a transient workflow, use `workflow` instead.\n\nTo start a call with:\n- Assistant, use `assistant` or `assistantId`\n- Squad, use `squad` or `squadId`\n- Workflow, use `workflow` or `workflowId`" + }, + "workflow": { + "description": "[BETA] This feature is in active development. The API and behavior are subject to change as we refine it based on user feedback.\n\nThis is a workflow that will be used for the call. To use an existing workflow, use `workflowId` instead.\n\nTo start a call with:\n- Assistant, use `assistant` or `assistantId`\n- Squad, use `squad` or `squadId`\n- Workflow, use `workflow` or `workflowId`", + "allOf": [ + { + "$ref": "#/components/schemas/CreateWorkflowDTO" + } + ] } } }, @@ -19307,367 +21427,6 @@ "content" ] }, - "Say": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "say" - ] - }, - "exact": { - "type": "string", - "maxLength": 1000 - }, - "prompt": { - "type": "string", - "maxLength": 1000 - }, - "name": { - "type": "string", - "maxLength": 80 - }, - "metadata": { - "type": "object", - "description": "This is for metadata you want to store on the task." - } - }, - "required": [ - "type", - "name" - ] - }, - "SayHook": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "say" - ] - }, - "metadata": { - "type": "object", - "description": "This is for metadata you want to store on the task." - }, - "exact": { - "type": "string", - "maxLength": 1000 - }, - "prompt": { - "type": "string", - "maxLength": 1000 - } - }, - "required": [ - "type" - ] - }, - "Hook": { - "type": "object", - "properties": { - "on": { - "type": "string", - "enum": [ - "task.start", - "task.output.confirmation", - "task.delayed" - ], - "maxLength": 80 - }, - "do": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SayHook" - } - } - }, - "required": [ - "on", - "do" - ] - }, - "Gather": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "gather" - ] - }, - "output": { - "$ref": "#/components/schemas/JsonSchema" - }, - "confirmContent": { - "type": "boolean", - "description": "This is whether or not the workflow should read back the gathered data to the user, and ask about its correctness." - }, - "hooks": { - "description": "This is a list of hooks for a task.\nEach hook is a list of tasks to run on a trigger (such as on start, on failure, etc).\nOnly Say is supported for now.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Hook" - } - }, - "maxRetries": { - "type": "number", - "description": "This is the number of times we should try to gather the information from the user before we failover to the fail path. An example of this would be a user refusing to give their phone number for privacy reasons, and then going down a different path on account of this" - }, - "literalTemplate": { - "type": "string", - "description": "This is a liquid templating string. On the first call to Gather, the template will be filled out with variables from the context, and will be spoken verbatim to the user. An example would be \"Base on your zipcode, it looks like you could be in one of these counties: {{ counties | join: \", \" }}. Which one do you live in?\"" - }, - "name": { - "type": "string", - "maxLength": 80 - }, - "metadata": { - "type": "object", - "description": "This is for metadata you want to store on the task." - } - }, - "required": [ - "type", - "output", - "name" - ] - }, - "ApiRequest": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "apiRequest" - ] - }, - "method": { - "type": "string", - "enum": [ - "POST", - "GET" - ] - }, - "url": { - "type": "string", - "description": "Api endpoint to send requests to." - }, - "headers": { - "description": "These are the custom headers to include in the Api Request sent.\n\nEach key-value pair represents a header name and its value.", - "allOf": [ - { - "$ref": "#/components/schemas/JsonSchema" - } - ] - }, - "body": { - "description": "This defined the JSON body of your Api Request. For example, if `body_schema`\nincluded \"my_field\": \"my_gather_statement.user_age\", then the json body sent to the server would have that particular value assign to it.\nRight now, only data from gather statements are supported.", - "allOf": [ - { - "$ref": "#/components/schemas/JsonSchema" - } - ] - }, - "mode": { - "type": "string", - "description": "This is the mode of the Api Request.\nWe only support BLOCKING and BACKGROUND for now.", - "enum": [ - "blocking", - "background" - ] - }, - "hooks": { - "description": "This is a list of hooks for a task.\nEach hook is a list of tasks to run on a trigger (such as on start, on failure, etc).\nOnly Say is supported for now.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Hook" - } - }, - "output": { - "description": "This is the schema for the outputs of the Api Request.", - "allOf": [ - { - "$ref": "#/components/schemas/JsonSchema" - } - ] - }, - "name": { - "type": "string", - "maxLength": 80 - }, - "metadata": { - "type": "object", - "description": "This is for metadata you want to store on the task." - } - }, - "required": [ - "type", - "method", - "url", - "mode", - "name" - ] - }, - "Hangup": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "hangup" - ] - }, - "name": { - "type": "string", - "maxLength": 80 - }, - "metadata": { - "type": "object", - "description": "This is for metadata you want to store on the task." - } - }, - "required": [ - "type", - "name" - ] - }, - "Transfer": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "transfer" - ] - }, - "destination": { - "type": "object" - }, - "name": { - "type": "string", - "maxLength": 80 - }, - "metadata": { - "type": "object", - "description": "This is for metadata you want to store on the task." - } - }, - "required": [ - "type", - "destination", - "name" - ] - }, - "CreateWorkflowDTO": { - "type": "object", - "properties": { - "nodes": { - "type": "array", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/Say", - "title": "Say" - }, - { - "$ref": "#/components/schemas/Gather", - "title": "Gather" - }, - { - "$ref": "#/components/schemas/ApiRequest", - "title": "ApiRequest" - }, - { - "$ref": "#/components/schemas/Hangup", - "title": "Hangup" - }, - { - "$ref": "#/components/schemas/Transfer", - "title": "Transfer" - } - ] - } - }, - "model": { - "description": "These are the options for the workflow's LLM.", - "oneOf": [ - { - "$ref": "#/components/schemas/AnthropicModel", - "title": "Anthropic" - }, - { - "$ref": "#/components/schemas/AnyscaleModel", - "title": "Anyscale" - }, - { - "$ref": "#/components/schemas/CerebrasModel", - "title": "Cerebras" - }, - { - "$ref": "#/components/schemas/CustomLLMModel", - "title": "CustomLLM" - }, - { - "$ref": "#/components/schemas/DeepInfraModel", - "title": "DeepInfra" - }, - { - "$ref": "#/components/schemas/DeepSeekModel", - "title": "DeepSeek" - }, - { - "$ref": "#/components/schemas/GoogleModel", - "title": "Google" - }, - { - "$ref": "#/components/schemas/GroqModel", - "title": "Groq" - }, - { - "$ref": "#/components/schemas/InflectionAIModel", - "title": "InflectionAI" - }, - { - "$ref": "#/components/schemas/OpenAIModel", - "title": "OpenAI" - }, - { - "$ref": "#/components/schemas/OpenRouterModel", - "title": "OpenRouter" - }, - { - "$ref": "#/components/schemas/PerplexityAIModel", - "title": "PerplexityAI" - }, - { - "$ref": "#/components/schemas/TogetherAIModel", - "title": "Together" - }, - { - "$ref": "#/components/schemas/XaiModel", - "title": "XAI" - } - ] - }, - "name": { - "type": "string", - "maxLength": 80 - }, - "edges": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Edge" - } - } - }, - "required": [ - "nodes", - "name", - "edges" - ] - }, "ChatCompletionsDTO": { "type": "object", "properties": { @@ -19696,11 +21455,11 @@ "oneOf": [ { "$ref": "#/components/schemas/AssemblyAITranscriber", - "title": "AssemblyAI" + "title": "AssemblyAITranscriber" }, { "$ref": "#/components/schemas/AzureSpeechTranscriber", - "title": "Azure" + "title": "AzureSpeechTranscriber" }, { "$ref": "#/components/schemas/CustomTranscriber", @@ -19708,45 +21467,45 @@ }, { "$ref": "#/components/schemas/DeepgramTranscriber", - "title": "Deepgram" + "title": "DeepgramTranscriber" }, { "$ref": "#/components/schemas/ElevenLabsTranscriber", - "title": "ElevenLabs" + "title": "ElevenLabsTranscriber" }, { "$ref": "#/components/schemas/GladiaTranscriber", - "title": "Gladia" + "title": "GladiaTranscriber" }, { - "$ref": "#/components/schemas/SpeechmaticsTranscriber", - "title": "Speechmatics" + "$ref": "#/components/schemas/GoogleTranscriber", + "title": "GoogleTranscriber" }, { - "$ref": "#/components/schemas/TalkscriberTranscriber", - "title": "Talkscriber" + "$ref": "#/components/schemas/SpeechmaticsTranscriber", + "title": "SpeechmaticsTranscriber" }, { - "$ref": "#/components/schemas/GoogleTranscriber", - "title": "Google" + "$ref": "#/components/schemas/TalkscriberTranscriber", + "title": "TalkscriberTranscriber" }, { "$ref": "#/components/schemas/OpenAITranscriber", - "title": "OpenAI" + "title": "OpenAITranscriber" } ] }, "model": { "description": "These are the options for the assistant's LLM.", "oneOf": [ - { - "$ref": "#/components/schemas/AnyscaleModel", - "title": "Anyscale" - }, { "$ref": "#/components/schemas/AnthropicModel", "title": "Anthropic" }, + { + "$ref": "#/components/schemas/AnyscaleModel", + "title": "Anyscale" + }, { "$ref": "#/components/schemas/CerebrasModel", "title": "Cerebras" @@ -19791,10 +21550,6 @@ "$ref": "#/components/schemas/TogetherAIModel", "title": "Together" }, - { - "$ref": "#/components/schemas/VapiModel", - "title": "Vapi" - }, { "$ref": "#/components/schemas/XaiModel", "title": "XAI" @@ -19806,11 +21561,11 @@ "oneOf": [ { "$ref": "#/components/schemas/AzureVoice", - "title": "Azure" + "title": "AzureVoice" }, { "$ref": "#/components/schemas/CartesiaVoice", - "title": "Cartesia" + "title": "CartesiaVoice" }, { "$ref": "#/components/schemas/CustomVoice", @@ -19818,39 +21573,39 @@ }, { "$ref": "#/components/schemas/DeepgramVoice", - "title": "Deepgram" + "title": "DeepgramVoice" }, { "$ref": "#/components/schemas/ElevenLabsVoice", - "title": "ElevenLabs" + "title": "ElevenLabsVoice" }, { "$ref": "#/components/schemas/HumeVoice", - "title": "Hume" + "title": "HumeVoice" }, { "$ref": "#/components/schemas/LMNTVoice", - "title": "LMNT" + "title": "LMNTVoice" }, { "$ref": "#/components/schemas/NeuphonicVoice", - "title": "Neuphonic" + "title": "NeuphonicVoice" }, { "$ref": "#/components/schemas/OpenAIVoice", - "title": "OpenAI" + "title": "OpenAIVoice" }, { "$ref": "#/components/schemas/PlayHTVoice", - "title": "PlayHT" + "title": "PlayHTVoice" }, { "$ref": "#/components/schemas/RimeAIVoice", - "title": "RimeAI" + "title": "RimeAIVoice" }, { "$ref": "#/components/schemas/SmallestAIVoice", - "title": "SmallestAI" + "title": "SmallestAIVoice" }, { "$ref": "#/components/schemas/TavusVoice", @@ -19858,13 +21613,13 @@ }, { "$ref": "#/components/schemas/VapiVoice", - "title": "Vapi" + "title": "VapiVoice" + }, + { + "$ref": "#/components/schemas/SesameVoice", + "title": "SesameVoice" } - ], - "default": { - "provider": "playht", - "voiceId": "jennifer" - } + ] }, "firstMessage": { "type": "string", @@ -19899,6 +21654,10 @@ { "$ref": "#/components/schemas/TwilioVoicemailDetectionPlan", "title": "Twilio" + }, + { + "$ref": "#/components/schemas/VapiVoicemailDetectionPlan", + "title": "Vapi" } ] }, @@ -19917,6 +21676,7 @@ "transcript", "tool-calls", "tool-calls-result", + "tool.completed", "transfer-update", "user-interrupted", "voice-input", @@ -19952,6 +21712,7 @@ "transcript", "tool-calls", "tool-calls-result", + "tool.completed", "transfer-update", "user-interrupted", "voice-input", @@ -20031,7 +21792,6 @@ }, "backgroundSound": { "description": "This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.\nYou can also provide a custom sound by providing a URL to an audio file.", - "maxLength": 1000, "oneOf": [ { "type": "enum", @@ -20276,6 +22036,10 @@ { "$ref": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO", "title": "SlackOAuth2AuthorizationCredential" + }, + { + "$ref": "#/components/schemas/CreateGoHighLevelMCPCredentialDTO", + "title": "GoHighLevelMCPCredential" } ], "discriminator": { @@ -20327,11 +22091,32 @@ "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", - "slack.oauth2-authorization": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO" + "slack.oauth2-authorization": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO", + "ghl.oauth2-authorization": "#/components/schemas/CreateGoHighLevelMCPCredentialDTO" } } } }, + "hooks": { + "type": "array", + "description": "This is a set of actions that will be performed on certain events.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AssistantHookCallEnding", + "title": "AssistantHookCallEnding" + }, + { + "$ref": "#/components/schemas/AssistantHookAssistantSpeechInterrupted", + "title": "AssistantHookAssistantSpeechInterrupted" + }, + { + "$ref": "#/components/schemas/AssistantHookCustomerSpeechInterrupted", + "title": "AssistantHookCustomerSpeechInterrupted" + } + ] + } + }, "name": { "type": "string", "description": "This is the name of the assistant.\n\nThis is required when you want to transfer between assistants in a call.", @@ -20426,13 +22211,6 @@ } ] }, - "hooks": { - "description": "This is a set of actions that will be performed on certain events.", - "type": "array", - "items": { - "$ref": "#/components/schemas/AssistantHooks" - } - }, "keypadInputPlan": { "$ref": "#/components/schemas/KeypadInputPlan" }, @@ -20480,6 +22258,24 @@ "metadata" ] }, + "AssistantVersionPaginatedResponse": { + "type": "object", + "properties": { + "results": { + "type": "array" + }, + "metadata": { + "$ref": "#/components/schemas/PaginationMeta" + }, + "nextPageState": { + "type": "string" + } + }, + "required": [ + "results", + "metadata" + ] + }, "UpdateAssistantDTO": { "type": "object", "properties": { @@ -20488,11 +22284,11 @@ "oneOf": [ { "$ref": "#/components/schemas/AssemblyAITranscriber", - "title": "AssemblyAI" + "title": "AssemblyAITranscriber" }, { "$ref": "#/components/schemas/AzureSpeechTranscriber", - "title": "Azure" + "title": "AzureSpeechTranscriber" }, { "$ref": "#/components/schemas/CustomTranscriber", @@ -20500,45 +22296,45 @@ }, { "$ref": "#/components/schemas/DeepgramTranscriber", - "title": "Deepgram" + "title": "DeepgramTranscriber" }, { "$ref": "#/components/schemas/ElevenLabsTranscriber", - "title": "ElevenLabs" + "title": "ElevenLabsTranscriber" }, { "$ref": "#/components/schemas/GladiaTranscriber", - "title": "Gladia" + "title": "GladiaTranscriber" }, { - "$ref": "#/components/schemas/SpeechmaticsTranscriber", - "title": "Speechmatics" + "$ref": "#/components/schemas/GoogleTranscriber", + "title": "GoogleTranscriber" }, { - "$ref": "#/components/schemas/TalkscriberTranscriber", - "title": "Talkscriber" + "$ref": "#/components/schemas/SpeechmaticsTranscriber", + "title": "SpeechmaticsTranscriber" }, { - "$ref": "#/components/schemas/GoogleTranscriber", - "title": "Google" + "$ref": "#/components/schemas/TalkscriberTranscriber", + "title": "TalkscriberTranscriber" }, { "$ref": "#/components/schemas/OpenAITranscriber", - "title": "OpenAI" + "title": "OpenAITranscriber" } ] }, "model": { "description": "These are the options for the assistant's LLM.", "oneOf": [ - { - "$ref": "#/components/schemas/AnyscaleModel", - "title": "Anyscale" - }, { "$ref": "#/components/schemas/AnthropicModel", "title": "Anthropic" }, + { + "$ref": "#/components/schemas/AnyscaleModel", + "title": "Anyscale" + }, { "$ref": "#/components/schemas/CerebrasModel", "title": "Cerebras" @@ -20583,10 +22379,6 @@ "$ref": "#/components/schemas/TogetherAIModel", "title": "Together" }, - { - "$ref": "#/components/schemas/VapiModel", - "title": "Vapi" - }, { "$ref": "#/components/schemas/XaiModel", "title": "XAI" @@ -20598,11 +22390,11 @@ "oneOf": [ { "$ref": "#/components/schemas/AzureVoice", - "title": "Azure" + "title": "AzureVoice" }, { "$ref": "#/components/schemas/CartesiaVoice", - "title": "Cartesia" + "title": "CartesiaVoice" }, { "$ref": "#/components/schemas/CustomVoice", @@ -20610,39 +22402,39 @@ }, { "$ref": "#/components/schemas/DeepgramVoice", - "title": "Deepgram" + "title": "DeepgramVoice" }, { "$ref": "#/components/schemas/ElevenLabsVoice", - "title": "ElevenLabs" + "title": "ElevenLabsVoice" }, { "$ref": "#/components/schemas/HumeVoice", - "title": "Hume" + "title": "HumeVoice" }, { "$ref": "#/components/schemas/LMNTVoice", - "title": "LMNT" + "title": "LMNTVoice" }, { "$ref": "#/components/schemas/NeuphonicVoice", - "title": "Neuphonic" + "title": "NeuphonicVoice" }, { "$ref": "#/components/schemas/OpenAIVoice", - "title": "OpenAI" + "title": "OpenAIVoice" }, { "$ref": "#/components/schemas/PlayHTVoice", - "title": "PlayHT" + "title": "PlayHTVoice" }, { "$ref": "#/components/schemas/RimeAIVoice", - "title": "RimeAI" + "title": "RimeAIVoice" }, { "$ref": "#/components/schemas/SmallestAIVoice", - "title": "SmallestAI" + "title": "SmallestAIVoice" }, { "$ref": "#/components/schemas/TavusVoice", @@ -20650,13 +22442,13 @@ }, { "$ref": "#/components/schemas/VapiVoice", - "title": "Vapi" + "title": "VapiVoice" + }, + { + "$ref": "#/components/schemas/SesameVoice", + "title": "SesameVoice" } - ], - "default": { - "provider": "playht", - "voiceId": "jennifer" - } + ] }, "firstMessage": { "type": "string", @@ -20691,6 +22483,10 @@ { "$ref": "#/components/schemas/TwilioVoicemailDetectionPlan", "title": "Twilio" + }, + { + "$ref": "#/components/schemas/VapiVoicemailDetectionPlan", + "title": "Vapi" } ] }, @@ -20709,6 +22505,7 @@ "transcript", "tool-calls", "tool-calls-result", + "tool.completed", "transfer-update", "user-interrupted", "voice-input", @@ -20744,6 +22541,7 @@ "transcript", "tool-calls", "tool-calls-result", + "tool.completed", "transfer-update", "user-interrupted", "voice-input", @@ -20823,7 +22621,6 @@ }, "backgroundSound": { "description": "This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.\nYou can also provide a custom sound by providing a URL to an audio file.", - "maxLength": 1000, "oneOf": [ { "type": "enum", @@ -21068,6 +22865,10 @@ { "$ref": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO", "title": "SlackOAuth2AuthorizationCredential" + }, + { + "$ref": "#/components/schemas/CreateGoHighLevelMCPCredentialDTO", + "title": "GoHighLevelMCPCredential" } ], "discriminator": { @@ -21119,11 +22920,32 @@ "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", - "slack.oauth2-authorization": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO" + "slack.oauth2-authorization": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO", + "ghl.oauth2-authorization": "#/components/schemas/CreateGoHighLevelMCPCredentialDTO" } } } }, + "hooks": { + "type": "array", + "description": "This is a set of actions that will be performed on certain events.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AssistantHookCallEnding", + "title": "AssistantHookCallEnding" + }, + { + "$ref": "#/components/schemas/AssistantHookAssistantSpeechInterrupted", + "title": "AssistantHookAssistantSpeechInterrupted" + }, + { + "$ref": "#/components/schemas/AssistantHookCustomerSpeechInterrupted", + "title": "AssistantHookCustomerSpeechInterrupted" + } + ] + } + }, "name": { "type": "string", "description": "This is the name of the assistant.\n\nThis is required when you want to transfer between assistants in a call.", @@ -21218,13 +23040,6 @@ } ] }, - "hooks": { - "description": "This is a set of actions that will be performed on certain events.", - "type": "array", - "items": { - "$ref": "#/components/schemas/AssistantHooks" - } - }, "keypadInputPlan": { "$ref": "#/components/schemas/KeypadInputPlan" } @@ -21304,11 +23119,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "workflowId": { + "type": "string", + "description": "This is the workflow that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "squadId": { "type": "string", - "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "server": { "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. assistant.server\n2. phoneNumber.server\n3. org.server", @@ -21373,6 +23192,11 @@ "twilio" ] }, + "smsEnabled": { + "type": "boolean", + "description": "Controls whether Vapi sets the messaging webhook URL on the Twilio number during import.\n\nIf set to `false`, Vapi will not update the Twilio messaging URL, leaving it as is.\nIf `true` or omitted (default), Vapi will configure both the voice and messaging URLs.\n\n@default true", + "default": true + }, "id": { "type": "string", "description": "This is the unique identifier for the phone number." @@ -21400,6 +23224,18 @@ "blocked" ] }, + "twilioAuthToken": { + "type": "string", + "description": "This is the Twilio Auth Token for the phone number." + }, + "twilioApiKey": { + "type": "string", + "description": "This is the Twilio API Key for the phone number." + }, + "twilioApiSecret": { + "type": "string", + "description": "This is the Twilio API Secret for the phone number." + }, "name": { "type": "string", "description": "This is the name of the phone number. This is just for your own reference.", @@ -21407,11 +23243,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "workflowId": { + "type": "string", + "description": "This is the workflow that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "squadId": { "type": "string", - "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "server": { "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. assistant.server\n2. phoneNumber.server\n3. org.server", @@ -21428,10 +23268,6 @@ "twilioAccountSid": { "type": "string", "description": "This is the Twilio Account SID for the phone number." - }, - "twilioAuthToken": { - "type": "string", - "description": "This is the Twilio Auth Token for the phone number." } }, "required": [ @@ -21441,8 +23277,7 @@ "createdAt", "updatedAt", "number", - "twilioAccountSid", - "twilioAuthToken" + "twilioAccountSid" ] }, "VonagePhoneNumber": { @@ -21514,11 +23349,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "workflowId": { + "type": "string", + "description": "This is the workflow that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "squadId": { "type": "string", - "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "server": { "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. assistant.server\n2. phoneNumber.server\n3. org.server", @@ -21645,11 +23484,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "workflowId": { + "type": "string", + "description": "This is the workflow that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "squadId": { "type": "string", - "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "server": { "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. assistant.server\n2. phoneNumber.server\n3. org.server", @@ -21755,11 +23598,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "workflowId": { + "type": "string", + "description": "This is the workflow that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "squadId": { "type": "string", - "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "server": { "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. assistant.server\n2. phoneNumber.server\n3. org.server", @@ -21845,11 +23692,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "workflowId": { + "type": "string", + "description": "This is the workflow that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "squadId": { "type": "string", - "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "server": { "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. assistant.server\n2. phoneNumber.server\n3. org.server", @@ -21900,6 +23751,11 @@ "twilio" ] }, + "smsEnabled": { + "type": "boolean", + "description": "Controls whether Vapi sets the messaging webhook URL on the Twilio number during import.\n\nIf set to `false`, Vapi will not update the Twilio messaging URL, leaving it as is.\nIf `true` or omitted (default), Vapi will configure both the voice and messaging URLs.\n\n@default true", + "default": true + }, "number": { "type": "string", "description": "These are the digits of the phone number you own on your Twilio." @@ -21912,6 +23768,14 @@ "type": "string", "description": "This is the Twilio Auth Token for the phone number." }, + "twilioApiKey": { + "type": "string", + "description": "This is the Twilio API Key for the phone number." + }, + "twilioApiSecret": { + "type": "string", + "description": "This is the Twilio API Secret for the phone number." + }, "name": { "type": "string", "description": "This is the name of the phone number. This is just for your own reference.", @@ -21919,11 +23783,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "workflowId": { + "type": "string", + "description": "This is the workflow that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "squadId": { "type": "string", - "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "server": { "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. assistant.server\n2. phoneNumber.server\n3. org.server", @@ -21937,8 +23805,7 @@ "required": [ "provider", "number", - "twilioAccountSid", - "twilioAuthToken" + "twilioAccountSid" ] }, "CreateVonagePhoneNumberDTO": { @@ -21991,11 +23858,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "workflowId": { + "type": "string", + "description": "This is the workflow that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "squadId": { "type": "string", - "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "server": { "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. assistant.server\n2. phoneNumber.server\n3. org.server", @@ -22072,11 +23943,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "workflowId": { + "type": "string", + "description": "This is the workflow that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "squadId": { "type": "string", - "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "server": { "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. assistant.server\n2. phoneNumber.server\n3. org.server", @@ -22141,11 +24016,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "workflowId": { + "type": "string", + "description": "This is the workflow that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "squadId": { "type": "string", - "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "server": { "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. assistant.server\n2. phoneNumber.server\n3. org.server", @@ -22202,11 +24081,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "workflowId": { + "type": "string", + "description": "This is the workflow that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "squadId": { "type": "string", - "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "server": { "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. assistant.server\n2. phoneNumber.server\n3. org.server", @@ -22256,6 +24139,11 @@ ] } }, + "smsEnabled": { + "type": "boolean", + "description": "Controls whether Vapi sets the messaging webhook URL on the Twilio number during import.\n\nIf set to `false`, Vapi will not update the Twilio messaging URL, leaving it as is.\nIf `true` or omitted (default), Vapi will configure both the voice and messaging URLs.\n\n@default true", + "default": true + }, "name": { "type": "string", "description": "This is the name of the phone number. This is just for your own reference.", @@ -22263,11 +24151,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "workflowId": { + "type": "string", + "description": "This is the workflow that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "squadId": { "type": "string", - "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "server": { "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. assistant.server\n2. phoneNumber.server\n3. org.server", @@ -22288,6 +24180,14 @@ "twilioAuthToken": { "type": "string", "description": "This is the Twilio Auth Token for the phone number." + }, + "twilioApiKey": { + "type": "string", + "description": "This is the Twilio API Key for the phone number." + }, + "twilioApiSecret": { + "type": "string", + "description": "This is the Twilio API Secret for the phone number." } } }, @@ -22326,11 +24226,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "workflowId": { + "type": "string", + "description": "This is the workflow that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "squadId": { "type": "string", - "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "server": { "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. assistant.server\n2. phoneNumber.server\n3. org.server", @@ -22385,11 +24289,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "workflowId": { + "type": "string", + "description": "This is the workflow that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "squadId": { "type": "string", - "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "server": { "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. assistant.server\n2. phoneNumber.server\n3. org.server", @@ -22448,11 +24356,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "workflowId": { + "type": "string", + "description": "This is the workflow that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "squadId": { "type": "string", - "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "server": { "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. assistant.server\n2. phoneNumber.server\n3. org.server", @@ -22516,11 +24428,15 @@ }, "assistantId": { "type": "string", - "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the assistant that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId` nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + }, + "workflowId": { + "type": "string", + "description": "This is the workflow that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "squadId": { "type": "string", - "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." + "description": "This is the squad that will be used for incoming calls to this phone number.\n\nIf neither `assistantId`, `squadId`, nor `workflowId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected." }, "server": { "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. assistant.server\n2. phoneNumber.server\n3. org.server", @@ -22611,9 +24527,446 @@ "type": { "type": "string", "enum": [ - "dtmf" - ], - "description": "The type of tool. \"dtmf\" for DTMF tool." + "dtmf" + ], + "description": "The type of tool. \"dtmf\" for DTMF tool." + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the tool." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the organization that this tool belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the tool was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the tool was last updated." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type", + "id", + "orgId", + "createdAt", + "updatedAt" + ] + }, + "EndCallTool": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "endCall" + ], + "description": "The type of tool. \"endCall\" for End Call tool." + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the tool." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the organization that this tool belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the tool was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the tool was last updated." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type", + "id", + "orgId", + "createdAt", + "updatedAt" + ] + }, + "FunctionTool": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "function" + ], + "description": "The type of tool. \"function\" for Function tool." + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the tool." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the organization that this tool belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the tool was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the tool was last updated." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type", + "id", + "orgId", + "createdAt", + "updatedAt" + ] + }, + "GhlTool": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "ghl" + ], + "description": "The type of tool. \"ghl\" for GHL tool." + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the tool." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the organization that this tool belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the tool was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the tool was last updated." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + }, + "metadata": { + "$ref": "#/components/schemas/GhlToolMetadata" + } + }, + "required": [ + "type", + "id", + "orgId", + "createdAt", + "updatedAt", + "metadata" + ] + }, + "MakeTool": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "make" + ], + "description": "The type of tool. \"make\" for Make tool." + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the tool." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the organization that this tool belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the tool was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the tool was last updated." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + }, + "metadata": { + "$ref": "#/components/schemas/MakeToolMetadata" + } + }, + "required": [ + "type", + "id", + "orgId", + "createdAt", + "updatedAt", + "metadata" + ] + }, + "TransferCallTool": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "transferCall" + ] + }, + "destinations": { + "type": "array", + "description": "These are the destinations that the call can be transferred to. If no destinations are provided, server.url will be used to get the transfer destination once the tool is called.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/TransferDestinationAssistant", + "title": "Assistant" + }, + { + "$ref": "#/components/schemas/TransferDestinationNumber", + "title": "Number" + }, + { + "$ref": "#/components/schemas/TransferDestinationSip", + "title": "Sip" + } + ] + } }, "id": { "type": "string", @@ -22658,7 +25011,7 @@ "updatedAt" ] }, - "EndCallTool": { + "OutputTool": { "type": "object", "properties": { "async": { @@ -22693,9 +25046,9 @@ "type": { "type": "string", "enum": [ - "endCall" + "output" ], - "description": "The type of tool. \"endCall\" for End Call tool." + "description": "The type of tool. \"output\" for Output tool." }, "id": { "type": "string", @@ -22740,7 +25093,7 @@ "updatedAt" ] }, - "FunctionTool": { + "BashTool": { "type": "object", "properties": { "async": { @@ -22775,9 +25128,16 @@ "type": { "type": "string", "enum": [ - "function" + "bash" ], - "description": "The type of tool. \"function\" for Function tool." + "description": "The type of tool. \"bash\" for Bash tool." + }, + "subType": { + "type": "string", + "enum": [ + "bash_20241022" + ], + "description": "The sub type of tool." }, "id": { "type": "string", @@ -22812,17 +25172,27 @@ "$ref": "#/components/schemas/Server" } ] + }, + "name": { + "type": "string", + "description": "The name of the tool, fixed to 'bash'", + "default": "bash", + "enum": [ + "bash" + ] } }, "required": [ "type", + "subType", "id", "orgId", "createdAt", - "updatedAt" + "updatedAt", + "name" ] }, - "GhlTool": { + "ComputerTool": { "type": "object", "properties": { "async": { @@ -22857,9 +25227,16 @@ "type": { "type": "string", "enum": [ - "ghl" + "computer" ], - "description": "The type of tool. \"ghl\" for GHL tool." + "description": "The type of tool. \"computer\" for Computer tool." + }, + "subType": { + "type": "string", + "enum": [ + "computer_20241022" + ], + "description": "The sub type of tool." }, "id": { "type": "string", @@ -22895,20 +25272,40 @@ } ] }, - "metadata": { - "$ref": "#/components/schemas/GhlToolMetadata" + "name": { + "type": "string", + "description": "The name of the tool, fixed to 'computer'", + "default": "computer", + "enum": [ + "computer" + ] + }, + "displayWidthPx": { + "type": "number", + "description": "The display width in pixels" + }, + "displayHeightPx": { + "type": "number", + "description": "The display height in pixels" + }, + "displayNumber": { + "type": "number", + "description": "Optional display number" } }, "required": [ "type", + "subType", "id", "orgId", "createdAt", "updatedAt", - "metadata" + "name", + "displayWidthPx", + "displayHeightPx" ] }, - "MakeTool": { + "TextEditorTool": { "type": "object", "properties": { "async": { @@ -22943,9 +25340,16 @@ "type": { "type": "string", "enum": [ - "make" + "textEditor" ], - "description": "The type of tool. \"make\" for Make tool." + "description": "The type of tool. \"textEditor\" for Text Editor tool." + }, + "subType": { + "type": "string", + "enum": [ + "text_editor_20241022" + ], + "description": "The sub type of tool." }, "id": { "type": "string", @@ -22981,20 +25385,26 @@ } ] }, - "metadata": { - "$ref": "#/components/schemas/MakeToolMetadata" + "name": { + "type": "string", + "description": "The name of the tool, fixed to 'str_replace_editor'", + "default": "str_replace_editor", + "enum": [ + "str_replace_editor" + ] } }, "required": [ "type", + "subType", "id", "orgId", "createdAt", "updatedAt", - "metadata" + "name" ] }, - "TransferCallTool": { + "QueryTool": { "type": "object", "properties": { "async": { @@ -23029,31 +25439,15 @@ "type": { "type": "string", "enum": [ - "transferCall" - ] + "query" + ], + "description": "The type of tool. \"query\" for Query tool." }, - "destinations": { + "knowledgeBases": { + "description": "The knowledge bases to query", "type": "array", - "description": "These are the destinations that the call can be transferred to. If no destinations are provided, server.url will be used to get the transfer destination once the tool is called.", "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/TransferDestinationAssistant", - "title": "Assistant" - }, - { - "$ref": "#/components/schemas/TransferDestinationStep", - "title": "Step" - }, - { - "$ref": "#/components/schemas/TransferDestinationNumber", - "title": "Number" - }, - { - "$ref": "#/components/schemas/TransferDestinationSip", - "title": "Sip" - } - ] + "$ref": "#/components/schemas/KnowledgeBase" } }, "id": { @@ -23099,7 +25493,7 @@ "updatedAt" ] }, - "OutputTool": { + "GoogleCalendarCreateEventTool": { "type": "object", "properties": { "async": { @@ -23134,9 +25528,9 @@ "type": { "type": "string", "enum": [ - "output" + "google.calendar.event.create" ], - "description": "The type of tool. \"output\" for Output tool." + "description": "The type of tool. \"google.calendar.event.create\" for Google Calendar tool." }, "id": { "type": "string", @@ -23181,7 +25575,7 @@ "updatedAt" ] }, - "BashTool": { + "GoogleSheetsRowAppendTool": { "type": "object", "properties": { "async": { @@ -23216,16 +25610,9 @@ "type": { "type": "string", "enum": [ - "bash" - ], - "description": "The type of tool. \"bash\" for Bash tool." - }, - "subType": { - "type": "string", - "enum": [ - "bash_20241022" + "google.sheets.row.append" ], - "description": "The sub type of tool." + "description": "The type of tool. \"google.sheets.row.append\" for Google Sheets tool." }, "id": { "type": "string", @@ -23260,27 +25647,17 @@ "$ref": "#/components/schemas/Server" } ] - }, - "name": { - "type": "string", - "description": "The name of the tool, fixed to 'bash'", - "default": "bash", - "enum": [ - "bash" - ] } }, "required": [ "type", - "subType", "id", "orgId", "createdAt", - "updatedAt", - "name" + "updatedAt" ] }, - "ComputerTool": { + "GoogleCalendarCheckAvailabilityTool": { "type": "object", "properties": { "async": { @@ -23315,16 +25692,9 @@ "type": { "type": "string", "enum": [ - "computer" - ], - "description": "The type of tool. \"computer\" for Computer tool." - }, - "subType": { - "type": "string", - "enum": [ - "computer_20241022" + "google.calendar.availability.check" ], - "description": "The sub type of tool." + "description": "The type of tool. \"google.calendar.availability.check\" for Google Calendar availability check tool." }, "id": { "type": "string", @@ -23359,41 +25729,17 @@ "$ref": "#/components/schemas/Server" } ] - }, - "name": { - "type": "string", - "description": "The name of the tool, fixed to 'computer'", - "default": "computer", - "enum": [ - "computer" - ] - }, - "displayWidthPx": { - "type": "number", - "description": "The display width in pixels" - }, - "displayHeightPx": { - "type": "number", - "description": "The display height in pixels" - }, - "displayNumber": { - "type": "number", - "description": "Optional display number" } }, "required": [ "type", - "subType", "id", "orgId", "createdAt", - "updatedAt", - "name", - "displayWidthPx", - "displayHeightPx" + "updatedAt" ] }, - "TextEditorTool": { + "SlackSendMessageTool": { "type": "object", "properties": { "async": { @@ -23428,16 +25774,9 @@ "type": { "type": "string", "enum": [ - "textEditor" - ], - "description": "The type of tool. \"textEditor\" for Text Editor tool." - }, - "subType": { - "type": "string", - "enum": [ - "text_editor_20241022" + "slack.message.send" ], - "description": "The sub type of tool." + "description": "The type of tool. \"slack.message.send\" for Slack send message tool." }, "id": { "type": "string", @@ -23472,27 +25811,17 @@ "$ref": "#/components/schemas/Server" } ] - }, - "name": { - "type": "string", - "description": "The name of the tool, fixed to 'str_replace_editor'", - "default": "str_replace_editor", - "enum": [ - "str_replace_editor" - ] } }, "required": [ "type", - "subType", "id", "orgId", "createdAt", - "updatedAt", - "name" + "updatedAt" ] }, - "QueryTool": { + "SmsTool": { "type": "object", "properties": { "async": { @@ -23527,16 +25856,9 @@ "type": { "type": "string", "enum": [ - "query" + "sms" ], - "description": "The type of tool. \"query\" for Query tool." - }, - "knowledgeBases": { - "description": "The knowledge bases to query", - "type": "array", - "items": { - "$ref": "#/components/schemas/KnowledgeBase" - } + "description": "The type of tool. \"sms\" for Twilio SMS sending tool." }, "id": { "type": "string", @@ -23581,7 +25903,7 @@ "updatedAt" ] }, - "GoogleCalendarCreateEventTool": { + "McpTool": { "type": "object", "properties": { "async": { @@ -23616,9 +25938,9 @@ "type": { "type": "string", "enum": [ - "google.calendar.event.create" + "mcp" ], - "description": "The type of tool. \"google.calendar.event.create\" for Google Calendar tool." + "description": "The type of tool. \"mcp\" for MCP tool." }, "id": { "type": "string", @@ -23663,7 +25985,7 @@ "updatedAt" ] }, - "GoogleSheetsRowAppendTool": { + "GoHighLevelCalendarAvailabilityTool": { "type": "object", "properties": { "async": { @@ -23698,9 +26020,9 @@ "type": { "type": "string", "enum": [ - "google.sheets.row.append" + "gohighlevel.calendar.availability.check" ], - "description": "The type of tool. \"google.sheets.row.append\" for Google Sheets tool." + "description": "The type of tool. \"gohighlevel.calendar.availability.check\" for GoHighLevel Calendar availability check tool." }, "id": { "type": "string", @@ -23745,7 +26067,7 @@ "updatedAt" ] }, - "GoogleCalendarCheckAvailabilityTool": { + "GoHighLevelCalendarEventCreateTool": { "type": "object", "properties": { "async": { @@ -23780,9 +26102,9 @@ "type": { "type": "string", "enum": [ - "google.calendar.availability.check" + "gohighlevel.calendar.event.create" ], - "description": "The type of tool. \"google.calendar.availability.check\" for Google Calendar availability check tool." + "description": "The type of tool. \"gohighlevel.calendar.event.create\" for GoHighLevel Calendar event create tool." }, "id": { "type": "string", @@ -23827,7 +26149,7 @@ "updatedAt" ] }, - "SlackSendMessageTool": { + "GoHighLevelContactCreateTool": { "type": "object", "properties": { "async": { @@ -23862,9 +26184,9 @@ "type": { "type": "string", "enum": [ - "slack.message.send" + "gohighlevel.contact.create" ], - "description": "The type of tool. \"slack.message.send\" for Slack send message tool." + "description": "The type of tool. \"gohighlevel.contact.create\" for GoHighLevel contact create tool." }, "id": { "type": "string", @@ -23909,7 +26231,7 @@ "updatedAt" ] }, - "SmsSendTool": { + "GoHighLevelContactGetTool": { "type": "object", "properties": { "async": { @@ -23944,9 +26266,9 @@ "type": { "type": "string", "enum": [ - "sms" + "gohighlevel.contact.get" ], - "description": "The type of tool. \"sms\" for Twilio SMS sending tool." + "description": "The type of tool. \"gohighlevel.contact.get\" for GoHighLevel contact get tool." }, "id": { "type": "string", @@ -23991,7 +26313,7 @@ "updatedAt" ] }, - "McpTool": { + "CreateApiRequestToolDTO": { "type": "object", "properties": { "async": { @@ -24026,27 +26348,61 @@ "type": { "type": "string", "enum": [ - "mcp" + "apiRequest" ], - "description": "The type of tool. \"mcp\" for MCP tool." + "description": "The type of tool. \"apiRequest\" for API request tool." }, - "id": { + "method": { "type": "string", - "description": "This is the unique identifier for the tool." + "enum": [ + "POST", + "GET" + ] }, - "orgId": { + "timeoutSeconds": { + "type": "number", + "description": "This is the timeout in seconds for the request. Defaults to 20 seconds.\n\n@default 20", + "minimum": 1, + "maximum": 300, + "example": 20 + }, + "name": { "type": "string", - "description": "This is the unique identifier for the organization that this tool belongs to." + "description": "This is the name of the tool. This will be passed to the model.", + "maxLength": 40 }, - "createdAt": { - "format": "date-time", + "description": { "type": "string", - "description": "This is the ISO 8601 date-time string of when the tool was created." + "description": "This is the description of the tool. This will be passed to the model.", + "maxLength": 1000 }, - "updatedAt": { - "format": "date-time", + "url": { "type": "string", - "description": "This is the ISO 8601 date-time string of when the tool was last updated." + "description": "This is where the request will be sent." + }, + "body": { + "description": "This is the body of the request.", + "allOf": [ + { + "$ref": "#/components/schemas/JsonSchema" + } + ] + }, + "headers": { + "description": "These are the headers to send in the request.", + "allOf": [ + { + "$ref": "#/components/schemas/JsonSchema" + } + ] + }, + "backoffPlan": { + "description": "This is the backoff plan if the request fails. Defaults to undefined (the request will not be retried).\n\n@default undefined (the request will not be retried)", + "allOf": [ + { + "$ref": "#/components/schemas/BackoffPlan" + } + ] }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", @@ -24067,10 +26423,9 @@ }, "required": [ "type", - "id", - "orgId", - "createdAt", - "updatedAt" + "method", + "url", + "body" ] }, "CreateOutputToolDTO": { @@ -24378,7 +26733,7 @@ "name" ] }, - "CreateSmsSendToolDTO": { + "CreateSmsToolDTO": { "type": "object", "properties": { "async": { @@ -24438,7 +26793,7 @@ "type" ] }, - "CreateMcpToolDTO": { + "UpdateDtmfToolDTO": { "type": "object", "properties": { "async": { @@ -24470,13 +26825,6 @@ ] } }, - "type": { - "type": "string", - "enum": [ - "mcp" - ], - "description": "The type of tool. \"mcp\" for MCP tool." - }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", "allOf": [ @@ -24493,12 +26841,9 @@ } ] } - }, - "required": [ - "type" - ] + } }, - "UpdateDtmfToolDTO": { + "UpdateEndCallToolDTO": { "type": "object", "properties": { "async": { @@ -24548,7 +26893,7 @@ } } }, - "UpdateEndCallToolDTO": { + "UpdateFunctionToolDTO": { "type": "object", "properties": { "async": { @@ -24598,7 +26943,7 @@ } } }, - "UpdateFunctionToolDTO": { + "UpdateGhlToolDTO": { "type": "object", "properties": { "async": { @@ -24645,10 +26990,13 @@ "$ref": "#/components/schemas/Server" } ] + }, + "metadata": { + "$ref": "#/components/schemas/GhlToolMetadata" } } }, - "UpdateGhlToolDTO": { + "UpdateMakeToolDTO": { "type": "object", "properties": { "async": { @@ -24697,11 +27045,11 @@ ] }, "metadata": { - "$ref": "#/components/schemas/GhlToolMetadata" + "$ref": "#/components/schemas/MakeToolMetadata" } } }, - "UpdateMakeToolDTO": { + "UpdateTransferCallToolDTO": { "type": "object", "properties": { "async": { @@ -24733,6 +27081,26 @@ ] } }, + "destinations": { + "type": "array", + "description": "These are the destinations that the call can be transferred to. If no destinations are provided, server.url will be used to get the transfer destination once the tool is called.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/TransferDestinationAssistant", + "title": "Assistant" + }, + { + "$ref": "#/components/schemas/TransferDestinationNumber", + "title": "Number" + }, + { + "$ref": "#/components/schemas/TransferDestinationSip", + "title": "Sip" + } + ] + } + }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", "allOf": [ @@ -24748,13 +27116,60 @@ "$ref": "#/components/schemas/Server" } ] + } + } + }, + "UpdateOutputToolDTO": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false }, - "metadata": { - "$ref": "#/components/schemas/MakeToolMetadata" + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] } } }, - "UpdateTransferCallToolDTO": { + "UpdateBashToolDTO": { "type": "object", "properties": { "async": { @@ -24786,30 +27201,78 @@ ] } }, - "destinations": { + "subType": { + "type": "string", + "enum": [ + "bash_20241022" + ], + "description": "The sub type of tool." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + }, + "name": { + "type": "string", + "description": "The name of the tool, fixed to 'bash'", + "default": "bash", + "enum": [ + "bash" + ] + } + } + }, + "UpdateComputerToolDTO": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { "type": "array", - "description": "These are the destinations that the call can be transferred to. If no destinations are provided, server.url will be used to get the transfer destination once the tool is called.", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", "items": { "oneOf": [ { - "$ref": "#/components/schemas/TransferDestinationAssistant", - "title": "Assistant" + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" }, { - "$ref": "#/components/schemas/TransferDestinationStep", - "title": "Step" + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" }, { - "$ref": "#/components/schemas/TransferDestinationNumber", - "title": "Number" + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" }, { - "$ref": "#/components/schemas/TransferDestinationSip", - "title": "Sip" + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" } ] } }, + "subType": { + "type": "string", + "enum": [ + "computer_20241022" + ], + "description": "The sub type of tool." + }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", "allOf": [ @@ -24825,10 +27288,30 @@ "$ref": "#/components/schemas/Server" } ] + }, + "name": { + "type": "string", + "description": "The name of the tool, fixed to 'computer'", + "default": "computer", + "enum": [ + "computer" + ] + }, + "displayWidthPx": { + "type": "number", + "description": "The display width in pixels" + }, + "displayHeightPx": { + "type": "number", + "description": "The display height in pixels" + }, + "displayNumber": { + "type": "number", + "description": "Optional display number" } } }, - "UpdateOutputToolDTO": { + "UpdateTextEditorToolDTO": { "type": "object", "properties": { "async": { @@ -24860,6 +27343,13 @@ ] } }, + "subType": { + "type": "string", + "enum": [ + "text_editor_20241022" + ], + "description": "The sub type of tool." + }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", "allOf": [ @@ -24875,10 +27365,18 @@ "$ref": "#/components/schemas/Server" } ] + }, + "name": { + "type": "string", + "description": "The name of the tool, fixed to 'str_replace_editor'", + "default": "str_replace_editor", + "enum": [ + "str_replace_editor" + ] } } }, - "UpdateBashToolDTO": { + "UpdateQueryToolDTO": { "type": "object", "properties": { "async": { @@ -24910,12 +27408,12 @@ ] } }, - "subType": { - "type": "string", - "enum": [ - "bash_20241022" - ], - "description": "The sub type of tool." + "knowledgeBases": { + "description": "The knowledge bases to query", + "type": "array", + "items": { + "$ref": "#/components/schemas/KnowledgeBase" + } }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", @@ -24932,18 +27430,10 @@ "$ref": "#/components/schemas/Server" } ] - }, - "name": { - "type": "string", - "description": "The name of the tool, fixed to 'bash'", - "default": "bash", - "enum": [ - "bash" - ] } } }, - "UpdateComputerToolDTO": { + "UpdateGoogleCalendarCreateEventToolDTO": { "type": "object", "properties": { "async": { @@ -24975,13 +27465,6 @@ ] } }, - "subType": { - "type": "string", - "enum": [ - "computer_20241022" - ], - "description": "The sub type of tool." - }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", "allOf": [ @@ -24997,30 +27480,10 @@ "$ref": "#/components/schemas/Server" } ] - }, - "name": { - "type": "string", - "description": "The name of the tool, fixed to 'computer'", - "default": "computer", - "enum": [ - "computer" - ] - }, - "displayWidthPx": { - "type": "number", - "description": "The display width in pixels" - }, - "displayHeightPx": { - "type": "number", - "description": "The display height in pixels" - }, - "displayNumber": { - "type": "number", - "description": "Optional display number" } } }, - "UpdateTextEditorToolDTO": { + "UpdateGoogleSheetsRowAppendToolDTO": { "type": "object", "properties": { "async": { @@ -25052,13 +27515,6 @@ ] } }, - "subType": { - "type": "string", - "enum": [ - "text_editor_20241022" - ], - "description": "The sub type of tool." - }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", "allOf": [ @@ -25074,18 +27530,10 @@ "$ref": "#/components/schemas/Server" } ] - }, - "name": { - "type": "string", - "description": "The name of the tool, fixed to 'str_replace_editor'", - "default": "str_replace_editor", - "enum": [ - "str_replace_editor" - ] } } }, - "UpdateQueryToolDTO": { + "UpdateGoogleCalendarCheckAvailabilityToolDTO": { "type": "object", "properties": { "async": { @@ -25117,11 +27565,54 @@ ] } }, - "knowledgeBases": { - "description": "The knowledge bases to query", + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + } + }, + "UpdateSlackSendMessageToolDTO": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", "items": { - "$ref": "#/components/schemas/KnowledgeBase" + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] } }, "function": { @@ -25142,7 +27633,7 @@ } } }, - "UpdateGoogleCalendarCreateEventToolDTO": { + "UpdateSmsToolDTO": { "type": "object", "properties": { "async": { @@ -25192,7 +27683,7 @@ } } }, - "UpdateGoogleSheetsRowAppendToolDTO": { + "UpdateMcpToolDTO": { "type": "object", "properties": { "async": { @@ -25242,7 +27733,7 @@ } } }, - "UpdateGoogleCalendarCheckAvailabilityToolDTO": { + "UpdateGoHighLevelCalendarAvailabilityToolDTO": { "type": "object", "properties": { "async": { @@ -25292,7 +27783,7 @@ } } }, - "UpdateSlackSendMessageToolDTO": { + "UpdateGoHighLevelCalendarEventCreateToolDTO": { "type": "object", "properties": { "async": { @@ -25342,7 +27833,7 @@ } } }, - "UpdateSmsSendToolDTO": { + "UpdateGoHighLevelContactCreateToolDTO": { "type": "object", "properties": { "async": { @@ -25392,7 +27883,7 @@ } } }, - "UpdateMcpToolDTO": { + "UpdateGoHighLevelContactGetToolDTO": { "type": "object", "properties": { "async": { @@ -25809,7 +28300,7 @@ "providerId" ] }, - "UpdateWorkflowDTO": { + "Workflow": { "type": "object", "properties": { "nodes": { @@ -25817,24 +28308,12 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/Say", - "title": "Say" - }, - { - "$ref": "#/components/schemas/Gather", - "title": "Gather" - }, - { - "$ref": "#/components/schemas/ApiRequest", - "title": "ApiRequest" - }, - { - "$ref": "#/components/schemas/Hangup", - "title": "Hangup" + "$ref": "#/components/schemas/ConversationNode", + "title": "ConversationNode" }, { - "$ref": "#/components/schemas/Transfer", - "title": "Transfer" + "$ref": "#/components/schemas/ToolNode", + "title": "ToolNode" } ] } @@ -25843,60 +28322,78 @@ "description": "These are the options for the workflow's LLM.", "oneOf": [ { - "$ref": "#/components/schemas/AnthropicModel", - "title": "Anthropic" - }, - { - "$ref": "#/components/schemas/AnyscaleModel", - "title": "Anyscale" - }, - { - "$ref": "#/components/schemas/CerebrasModel", - "title": "Cerebras" - }, - { - "$ref": "#/components/schemas/CustomLLMModel", - "title": "CustomLLM" - }, - { - "$ref": "#/components/schemas/DeepInfraModel", - "title": "DeepInfra" + "$ref": "#/components/schemas/WorkflowOpenAIModel", + "title": "WorkflowOpenAIModel" }, { - "$ref": "#/components/schemas/DeepSeekModel", - "title": "DeepSeek" - }, - { - "$ref": "#/components/schemas/GoogleModel", - "title": "Google" - }, - { - "$ref": "#/components/schemas/GroqModel", - "title": "Groq" - }, - { - "$ref": "#/components/schemas/InflectionAIModel", - "title": "InflectionAI" - }, - { - "$ref": "#/components/schemas/OpenAIModel", - "title": "OpenAI" - }, - { - "$ref": "#/components/schemas/OpenRouterModel", - "title": "OpenRouter" - }, - { - "$ref": "#/components/schemas/PerplexityAIModel", - "title": "PerplexityAI" - }, + "$ref": "#/components/schemas/WorkflowAnthropicModel", + "title": "WorkflowAnthropicModel" + } + ] + }, + "id": { + "type": "string" + }, + "orgId": { + "type": "string" + }, + "createdAt": { + "format": "date-time", + "type": "string" + }, + "updatedAt": { + "format": "date-time", + "type": "string" + }, + "name": { + "type": "string", + "maxLength": 80 + }, + "edges": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Edge" + } + } + }, + "required": [ + "nodes", + "id", + "orgId", + "createdAt", + "updatedAt", + "name", + "edges" + ] + }, + "UpdateWorkflowDTO": { + "type": "object", + "properties": { + "nodes": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ConversationNode", + "title": "ConversationNode" + }, + { + "$ref": "#/components/schemas/ToolNode", + "title": "ToolNode" + } + ] + } + }, + "model": { + "description": "These are the options for the workflow's LLM.", + "oneOf": [ { - "$ref": "#/components/schemas/TogetherAIModel", - "title": "Together" + "$ref": "#/components/schemas/WorkflowOpenAIModel", + "title": "WorkflowOpenAIModel" }, { - "$ref": "#/components/schemas/XaiModel", - "title": "XAI" + "$ref": "#/components/schemas/WorkflowAnthropicModel", + "title": "WorkflowAnthropicModel" } ] }, @@ -26532,7 +29029,7 @@ "rubric": { "type": "string", "description": "This is the rubric used by the AI scorer.", - "maxLength": 1000 + "maxLength": 10000 } }, "required": [ @@ -26599,7 +29096,7 @@ "rubric": { "type": "string", "description": "This is the rubric used by the AI scorer.", - "maxLength": 1000 + "maxLength": 10000 } }, "required": [ @@ -28240,10 +30737,13 @@ "models": { "type": "array", "enum": [ + "gpt-4.1-2025-04-14", + "gpt-4.1-mini-2025-04-14", + "gpt-4.1-nano-2025-04-14", "gpt-4o-2024-11-20", "gpt-4o-2024-08-06", - "gpt-4o-mini-2024-07-18", "gpt-4o-2024-05-13", + "gpt-4o-mini-2024-07-18", "gpt-4-turbo-2024-04-09", "gpt-4-0125-preview", "gpt-4-1106-preview", @@ -28258,10 +30758,13 @@ "items": { "type": "string", "enum": [ + "gpt-4.1-2025-04-14", + "gpt-4.1-mini-2025-04-14", + "gpt-4.1-nano-2025-04-14", "gpt-4o-2024-11-20", "gpt-4o-2024-08-06", - "gpt-4o-mini-2024-07-18", "gpt-4o-2024-05-13", + "gpt-4o-mini-2024-07-18", "gpt-4-turbo-2024-04-09", "gpt-4-0125-preview", "gpt-4-1106-preview", @@ -28570,6 +31073,10 @@ "format": "date-time", "type": "string", "description": "This is the OAuth2 access token expiration." + }, + "refreshToken": { + "type": "string", + "description": "This is the OAuth2 refresh token." } } }, @@ -30080,6 +32587,14 @@ "type": "string", "description": "This is not returned in the API." }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "apiSecret": { + "type": "string", + "description": "This is not returned in the API." + }, "id": { "type": "string", "description": "This is the unique identifier for the credential." @@ -30110,7 +32625,6 @@ }, "required": [ "provider", - "authToken", "id", "orgId", "createdAt", @@ -30473,6 +32987,57 @@ "updatedAt" ] }, + "GoHighLevelMCPCredential": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "ghl.oauth2-authorization" + ] + }, + "authenticationSession": { + "description": "This is the authentication session for the credential.", + "allOf": [ + { + "$ref": "#/components/schemas/Oauth2AuthenticationSession" + } + ] + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "authenticationSession", + "id", + "orgId", + "createdAt", + "updatedAt" + ] + }, "CreateCerebrasCredentialDTO": { "type": "object", "properties": { @@ -30680,6 +33245,35 @@ "apiKey" ] }, + "CreateGoHighLevelMCPCredentialDTO": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "ghl.oauth2-authorization" + ] + }, + "authenticationSession": { + "description": "This is the authentication session for the credential.", + "allOf": [ + { + "$ref": "#/components/schemas/Oauth2AuthenticationSession" + } + ] + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "authenticationSession" + ] + }, "UpdateAnthropicCredentialDTO": { "type": "object", "properties": { @@ -30813,10 +33407,13 @@ "models": { "type": "array", "enum": [ + "gpt-4.1-2025-04-14", + "gpt-4.1-mini-2025-04-14", + "gpt-4.1-nano-2025-04-14", "gpt-4o-2024-11-20", "gpt-4o-2024-08-06", - "gpt-4o-mini-2024-07-18", "gpt-4o-2024-05-13", + "gpt-4o-mini-2024-07-18", "gpt-4-turbo-2024-04-09", "gpt-4-0125-preview", "gpt-4-1106-preview", @@ -30831,10 +33428,13 @@ "items": { "type": "string", "enum": [ + "gpt-4.1-2025-04-14", + "gpt-4.1-mini-2025-04-14", + "gpt-4.1-nano-2025-04-14", "gpt-4o-2024-11-20", "gpt-4o-2024-08-06", - "gpt-4o-mini-2024-07-18", "gpt-4o-2024-05-13", + "gpt-4o-mini-2024-07-18", "gpt-4-turbo-2024-04-09", "gpt-4-0125-preview", "gpt-4-1106-preview", @@ -31496,6 +34096,14 @@ "type": "string", "description": "This is not returned in the API." }, + "apiKey": { + "type": "string", + "description": "This is not returned in the API." + }, + "apiSecret": { + "type": "string", + "description": "This is not returned in the API." + }, "name": { "type": "string", "description": "This is the name of credential. This is just for your reference.", @@ -31616,6 +34224,25 @@ } } }, + "UpdateGoHighLevelMCPCredentialDTO": { + "type": "object", + "properties": { + "authenticationSession": { + "description": "This is the authentication session for the credential.", + "allOf": [ + { + "$ref": "#/components/schemas/Oauth2AuthenticationSession" + } + ] + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + } + }, "CredentialSessionResponse": { "type": "object", "properties": { @@ -31927,6 +34554,106 @@ "type" ] }, + "GoHighLevelCalendarAvailabilityToolProviderDetails": { + "type": "object", + "properties": { + "templateUrl": { + "type": "string", + "description": "This is the Template URL or the Snapshot URL corresponding to the Template." + }, + "setupInstructions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ToolTemplateSetup" + } + }, + "type": { + "type": "string", + "enum": [ + "gohighlevel.calendar.availability.check" + ], + "description": "The type of tool. \"gohighlevel.calendar.availability.check\" for GoHighLevel Calendar availability check tool." + } + }, + "required": [ + "type" + ] + }, + "GoHighLevelCalendarEventCreateToolProviderDetails": { + "type": "object", + "properties": { + "templateUrl": { + "type": "string", + "description": "This is the Template URL or the Snapshot URL corresponding to the Template." + }, + "setupInstructions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ToolTemplateSetup" + } + }, + "type": { + "type": "string", + "enum": [ + "gohighlevel.calendar.event.create" + ], + "description": "The type of tool. \"gohighlevel.calendar.event.create\" for GoHighLevel Calendar event create tool." + } + }, + "required": [ + "type" + ] + }, + "GoHighLevelContactCreateToolProviderDetails": { + "type": "object", + "properties": { + "templateUrl": { + "type": "string", + "description": "This is the Template URL or the Snapshot URL corresponding to the Template." + }, + "setupInstructions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ToolTemplateSetup" + } + }, + "type": { + "type": "string", + "enum": [ + "gohighlevel.contact.create" + ], + "description": "The type of tool. \"gohighlevel.contact.create\" for GoHighLevel contact create tool." + } + }, + "required": [ + "type" + ] + }, + "GoHighLevelContactGetToolProviderDetails": { + "type": "object", + "properties": { + "templateUrl": { + "type": "string", + "description": "This is the Template URL or the Snapshot URL corresponding to the Template." + }, + "setupInstructions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ToolTemplateSetup" + } + }, + "type": { + "type": "string", + "enum": [ + "gohighlevel.contact.get" + ], + "description": "The type of tool. \"gohighlevel.contact.get\" for GoHighLevel contact get tool." + } + }, + "required": [ + "type" + ] + }, "ToolTemplateMetadata": { "type": "object", "properties": { @@ -31946,6 +34673,18 @@ "properties": { "details": { "oneOf": [ + { + "$ref": "#/components/schemas/CreateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/CreateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/CreateComputerToolDTO", + "title": "ComputerTool" + }, { "$ref": "#/components/schemas/CreateDtmfToolDTO", "title": "DtmfTool" @@ -31954,25 +34693,29 @@ "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, - { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" - }, { "$ref": "#/components/schemas/CreateFunctionToolDTO", "title": "FunctionTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" }, { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferCallTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" + }, + { + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" }, { "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", @@ -31981,6 +34724,30 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateSmsToolDTO", + "title": "SmsTool" + }, + { + "$ref": "#/components/schemas/CreateTextEditorToolDTO", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" } ] }, @@ -32005,6 +34772,22 @@ { "$ref": "#/components/schemas/GoogleSheetsRowAppendToolProviderDetails", "title": "GoogleSheetsRowAppendToolProviderDetails" + }, + { + "$ref": "#/components/schemas/GoHighLevelCalendarAvailabilityToolProviderDetails", + "title": "GoHighLevelCalendarAvailabilityToolProviderDetails" + }, + { + "$ref": "#/components/schemas/GoHighLevelCalendarEventCreateToolProviderDetails", + "title": "GoHighLevelCalendarEventCreateToolProviderDetails" + }, + { + "$ref": "#/components/schemas/GoHighLevelContactCreateToolProviderDetails", + "title": "GoHighLevelContactCreateToolProviderDetails" + }, + { + "$ref": "#/components/schemas/GoHighLevelContactGetToolProviderDetails", + "title": "GoHighLevelContactGetToolProviderDetails" } ] }, @@ -32049,6 +34832,18 @@ "properties": { "details": { "oneOf": [ + { + "$ref": "#/components/schemas/CreateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/CreateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/CreateComputerToolDTO", + "title": "ComputerTool" + }, { "$ref": "#/components/schemas/CreateDtmfToolDTO", "title": "DtmfTool" @@ -32057,33 +34852,61 @@ "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, - { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" - }, { "$ref": "#/components/schemas/CreateFunctionToolDTO", "title": "FunctionTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" }, { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferCallTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" + }, + { + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", + "title": "GoogleCalendarCreateEventTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", + "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateSmsToolDTO", + "title": "SmsTool" }, { - "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", - "title": "GoogleCalendarCreateEventTool" + "$ref": "#/components/schemas/CreateTextEditorToolDTO", + "title": "TextEditorTool" }, { - "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", - "title": "GoogleSheetsRowAppendTool" + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" } ] }, @@ -32108,6 +34931,22 @@ { "$ref": "#/components/schemas/GoogleSheetsRowAppendToolProviderDetails", "title": "GoogleSheetsRowAppendToolProviderDetails" + }, + { + "$ref": "#/components/schemas/GoHighLevelCalendarAvailabilityToolProviderDetails", + "title": "GoHighLevelCalendarAvailabilityToolProviderDetails" + }, + { + "$ref": "#/components/schemas/GoHighLevelCalendarEventCreateToolProviderDetails", + "title": "GoHighLevelCalendarEventCreateToolProviderDetails" + }, + { + "$ref": "#/components/schemas/GoHighLevelContactCreateToolProviderDetails", + "title": "GoHighLevelContactCreateToolProviderDetails" + }, + { + "$ref": "#/components/schemas/GoHighLevelContactGetToolProviderDetails", + "title": "GoHighLevelContactGetToolProviderDetails" } ] }, @@ -32174,6 +35013,18 @@ "properties": { "details": { "oneOf": [ + { + "$ref": "#/components/schemas/CreateApiRequestToolDTO", + "title": "ApiRequestTool" + }, + { + "$ref": "#/components/schemas/CreateBashToolDTO", + "title": "BashTool" + }, + { + "$ref": "#/components/schemas/CreateComputerToolDTO", + "title": "ComputerTool" + }, { "$ref": "#/components/schemas/CreateDtmfToolDTO", "title": "DtmfTool" @@ -32182,25 +35033,29 @@ "$ref": "#/components/schemas/CreateEndCallToolDTO", "title": "EndCallTool" }, - { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" - }, { "$ref": "#/components/schemas/CreateFunctionToolDTO", "title": "FunctionTool" }, { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO", + "title": "GoHighLevelCalendarAvailabilityTool" }, { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" + "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO", + "title": "GoHighLevelCalendarEventCreateTool" }, { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferCallTool" + "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO", + "title": "GoHighLevelContactCreateTool" + }, + { + "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO", + "title": "GoHighLevelContactGetTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" }, { "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", @@ -32209,6 +35064,30 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateSmsToolDTO", + "title": "SmsTool" + }, + { + "$ref": "#/components/schemas/CreateTextEditorToolDTO", + "title": "TextEditorTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferCallTool" } ] }, @@ -32233,6 +35112,22 @@ { "$ref": "#/components/schemas/GoogleSheetsRowAppendToolProviderDetails", "title": "GoogleSheetsRowAppendToolProviderDetails" + }, + { + "$ref": "#/components/schemas/GoHighLevelCalendarAvailabilityToolProviderDetails", + "title": "GoHighLevelCalendarAvailabilityToolProviderDetails" + }, + { + "$ref": "#/components/schemas/GoHighLevelCalendarEventCreateToolProviderDetails", + "title": "GoHighLevelCalendarEventCreateToolProviderDetails" + }, + { + "$ref": "#/components/schemas/GoHighLevelContactCreateToolProviderDetails", + "title": "GoHighLevelContactCreateToolProviderDetails" + }, + { + "$ref": "#/components/schemas/GoHighLevelContactGetToolProviderDetails", + "title": "GoHighLevelContactGetToolProviderDetails" } ] }, @@ -32527,6 +35422,31 @@ "ClientMessageWorkflowNodeStarted": { "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" + } + ] + }, "type": { "type": "string", "description": "This is the type of the message. \"workflow.node.started\" is sent when the active node changes.", @@ -32534,6 +35454,34 @@ "workflow.node.started" ] }, + "timestamp": { + "type": "number", + "description": "This is the timestamp of the message." + }, + "call": { + "description": "This is the call that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/Call" + } + ] + }, + "customer": { + "description": "This is the customer that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateCustomerDTO" + } + ] + }, + "assistant": { + "description": "This is the assistant that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateAssistantDTO" + } + ] + }, "node": { "type": "object", "description": "This is the active node." @@ -32547,6 +35495,31 @@ "ClientMessageConversationUpdate": { "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" + } + ] + }, "type": { "type": "string", "description": "This is the type of the message. \"conversation-update\" is sent when an update is committed to the conversation history.", @@ -32588,6 +35561,34 @@ "items": { "$ref": "#/components/schemas/OpenAIMessage" } + }, + "timestamp": { + "type": "number", + "description": "This is the timestamp of the message." + }, + "call": { + "description": "This is the call that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/Call" + } + ] + }, + "customer": { + "description": "This is the customer that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateCustomerDTO" + } + ] + }, + "assistant": { + "description": "This is the assistant that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateAssistantDTO" + } + ] } }, "required": [ @@ -32598,12 +35599,65 @@ "ClientMessageHang": { "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" + } + ] + }, "type": { "type": "string", "description": "This is the type of the message. \"hang\" is sent when the assistant is hanging due to a delay. The delay can be caused by many factors, such as:\n- the model is too slow to respond\n- the voice is too slow to respond\n- the tool call is still waiting for a response from your server\n- etc.", "enum": [ "hang" ] + }, + "timestamp": { + "type": "number", + "description": "This is the timestamp of the message." + }, + "call": { + "description": "This is the call that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/Call" + } + ] + }, + "customer": { + "description": "This is the customer that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateCustomerDTO" + } + ] + }, + "assistant": { + "description": "This is the assistant that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateAssistantDTO" + } + ] } }, "required": [ @@ -32613,6 +35667,31 @@ "ClientMessageMetadata": { "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" + } + ] + }, "type": { "type": "string", "description": "This is the type of the message. \"metadata\" is sent to forward metadata to the client.", @@ -32620,6 +35699,34 @@ "metadata" ] }, + "timestamp": { + "type": "number", + "description": "This is the timestamp of the message." + }, + "call": { + "description": "This is the call that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/Call" + } + ] + }, + "customer": { + "description": "This is the customer that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateCustomerDTO" + } + ] + }, + "assistant": { + "description": "This is the assistant that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateAssistantDTO" + } + ] + }, "metadata": { "type": "string", "description": "This is the metadata content" @@ -32633,6 +35740,31 @@ "ClientMessageModelOutput": { "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" + } + ] + }, "type": { "type": "string", "description": "This is the type of the message. \"model-output\" is sent as the model outputs tokens.", @@ -32640,6 +35772,34 @@ "model-output" ] }, + "timestamp": { + "type": "number", + "description": "This is the timestamp of the message." + }, + "call": { + "description": "This is the call that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/Call" + } + ] + }, + "customer": { + "description": "This is the customer that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateCustomerDTO" + } + ] + }, + "assistant": { + "description": "This is the assistant that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateAssistantDTO" + } + ] + }, "output": { "type": "object", "description": "This is the output of the model. It can be a token or tool call." @@ -32653,6 +35813,31 @@ "ClientMessageSpeechUpdate": { "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" + } + ] + }, "type": { "type": "string", "description": "This is the type of the message. \"speech-update\" is sent whenever assistant or user start or stop speaking.", @@ -32679,6 +35864,34 @@ "turn": { "type": "number", "description": "This is the turn number of the speech update (0-indexed)." + }, + "timestamp": { + "type": "number", + "description": "This is the timestamp of the message." + }, + "call": { + "description": "This is the call that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/Call" + } + ] + }, + "customer": { + "description": "This is the customer that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateCustomerDTO" + } + ] + }, + "assistant": { + "description": "This is the assistant that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateAssistantDTO" + } + ] } }, "required": [ @@ -32690,6 +35903,31 @@ "ClientMessageTranscript": { "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" + } + ] + }, "type": { "type": "string", "description": "This is the type of the message. \"transcript\" is sent as transcriber outputs partial or final transcript.", @@ -32698,6 +35936,34 @@ "transcript[transcriptType=\"final\"]" ] }, + "timestamp": { + "type": "number", + "description": "This is the timestamp of the message." + }, + "call": { + "description": "This is the call that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/Call" + } + ] + }, + "customer": { + "description": "This is the customer that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateCustomerDTO" + } + ] + }, + "assistant": { + "description": "This is the assistant that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateAssistantDTO" + } + ] + }, "role": { "type": "string", "description": "This is the role for which the transcript is for.", @@ -32775,6 +36041,31 @@ "ClientMessageToolCalls": { "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" + } + ] + }, "type": { "type": "string", "description": "This is the type of the message. \"tool-calls\" is sent to call a tool.", @@ -32818,6 +36109,34 @@ ] } }, + "timestamp": { + "type": "number", + "description": "This is the timestamp of the message." + }, + "call": { + "description": "This is the call that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/Call" + } + ] + }, + "customer": { + "description": "This is the customer that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateCustomerDTO" + } + ] + }, + "assistant": { + "description": "This is the assistant that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateAssistantDTO" + } + ] + }, "toolCallList": { "description": "This is the list of tool calls that the model is requesting.", "type": "array", @@ -32834,6 +36153,31 @@ "ClientMessageToolCallsResult": { "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" + } + ] + }, "type": { "type": "string", "description": "This is the type of the message. \"tool-calls-result\" is sent to forward the result of a tool call to the client.", @@ -32841,6 +36185,34 @@ "tool-calls-result" ] }, + "timestamp": { + "type": "number", + "description": "This is the timestamp of the message." + }, + "call": { + "description": "This is the call that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/Call" + } + ] + }, + "customer": { + "description": "This is the customer that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateCustomerDTO" + } + ] + }, + "assistant": { + "description": "This is the assistant that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateAssistantDTO" + } + ] + }, "toolCallResult": { "type": "object", "description": "This is the result of the tool call." @@ -32854,6 +36226,31 @@ "ClientMessageTransferUpdate": { "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" + } + ] + }, "type": { "type": "string", "description": "This is the type of the message. \"transfer-update\" is sent whenever a transfer happens.", @@ -32868,10 +36265,6 @@ "$ref": "#/components/schemas/TransferDestinationAssistant", "title": "Assistant" }, - { - "$ref": "#/components/schemas/TransferDestinationStep", - "title": "Step" - }, { "$ref": "#/components/schemas/TransferDestinationNumber", "title": "Number" @@ -32882,6 +36275,34 @@ } ] }, + "timestamp": { + "type": "number", + "description": "This is the timestamp of the message." + }, + "call": { + "description": "This is the call that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/Call" + } + ] + }, + "customer": { + "description": "This is the customer that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateCustomerDTO" + } + ] + }, + "assistant": { + "description": "This is the assistant that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateAssistantDTO" + } + ] + }, "toAssistant": { "description": "This is the assistant that the call is being transferred to. This is only sent if `destination.type` is \"assistant\".", "allOf": [ @@ -32914,12 +36335,65 @@ "ClientMessageUserInterrupted": { "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" + } + ] + }, "type": { "type": "string", "description": "This is the type of the message. \"user-interrupted\" is sent when the user interrupts the assistant.", "enum": [ "user-interrupted" ] + }, + "timestamp": { + "type": "number", + "description": "This is the timestamp of the message." + }, + "call": { + "description": "This is the call that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/Call" + } + ] + }, + "customer": { + "description": "This is the customer that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateCustomerDTO" + } + ] + }, + "assistant": { + "description": "This is the assistant that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateAssistantDTO" + } + ] } }, "required": [ @@ -32929,6 +36403,31 @@ "ClientMessageLanguageChangeDetected": { "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" + } + ] + }, "type": { "type": "string", "description": "This is the type of the message. \"language-change-detected\" is sent when the transcriber is automatically switched based on the detected language.", @@ -32936,6 +36435,34 @@ "language-change-detected" ] }, + "timestamp": { + "type": "number", + "description": "This is the timestamp of the message." + }, + "call": { + "description": "This is the call that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/Call" + } + ] + }, + "customer": { + "description": "This is the customer that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateCustomerDTO" + } + ] + }, + "assistant": { + "description": "This is the assistant that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateAssistantDTO" + } + ] + }, "language": { "type": "string", "description": "This is the language the transcriber is switched to." @@ -32949,6 +36476,31 @@ "ClientMessageVoiceInput": { "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" + } + ] + }, "type": { "type": "string", "description": "This is the type of the message. \"voice-input\" is sent when a generation is requested from voice provider.", @@ -32956,6 +36508,34 @@ "voice-input" ] }, + "timestamp": { + "type": "number", + "description": "This is the timestamp of the message." + }, + "call": { + "description": "This is the call that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/Call" + } + ] + }, + "customer": { + "description": "This is the customer that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateCustomerDTO" + } + ] + }, + "assistant": { + "description": "This is the assistant that the message is associated with.", + "allOf": [ + { + "$ref": "#/components/schemas/CreateAssistantDTO" + } + ] + }, "input": { "type": "string", "description": "This is the voice input content" @@ -33035,7 +36615,7 @@ "type": "object", "properties": { "phoneNumber": { - "description": "This is the phone number associated with the call.\n\nThis matches one of the following:\n- `call.phoneNumber`,\n- `call.phoneNumberId`.", + "description": "This is the phone number that the message is associated with.", "oneOf": [ { "$ref": "#/components/schemas/CreateByoPhoneNumberDTO", @@ -33052,6 +36632,10 @@ { "$ref": "#/components/schemas/CreateVapiPhoneNumberDTO", "title": "VapiPhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateTelnyxPhoneNumberDTO", + "title": "TelnyxPhoneNumber" } ] }, @@ -33064,7 +36648,7 @@ }, "timestamp": { "type": "number", - "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." + "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.", @@ -33075,7 +36659,7 @@ ] }, "assistant": { - "description": "This is the assistant that is currently active. This is provided for convenience.\n\nThis matches one of the following:\n- `call.assistant`,\n- `call.assistantId`,\n- `call.squad[n].assistant`,\n- `call.squad[n].assistantId`,\n- `call.squadId->[n].assistant`,\n- `call.squadId->[n].assistantId`.", + "description": "This is the assistant that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -33083,7 +36667,7 @@ ] }, "customer": { - "description": "This is the customer associated with the call.\n\nThis matches one of the following:\n- `call.customer`,\n- `call.customerId`.", + "description": "This is the customer that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateCustomerDTO" @@ -33091,7 +36675,7 @@ ] }, "call": { - "description": "This is the call object.\n\nThis matches what was returned in POST /call.\n\nNote: This might get stale during the call. To get the latest call object, especially after the call is ended, use GET /call/:id.", + "description": "This is the call that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/Call" @@ -33107,7 +36691,7 @@ "type": "object", "properties": { "phoneNumber": { - "description": "This is the phone number associated with the call.\n\nThis matches one of the following:\n- `call.phoneNumber`,\n- `call.phoneNumberId`.", + "description": "This is the phone number that the message is associated with.", "oneOf": [ { "$ref": "#/components/schemas/CreateByoPhoneNumberDTO", @@ -33124,6 +36708,10 @@ { "$ref": "#/components/schemas/CreateVapiPhoneNumberDTO", "title": "VapiPhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateTelnyxPhoneNumberDTO", + "title": "TelnyxPhoneNumber" } ] }, @@ -33171,7 +36759,7 @@ }, "timestamp": { "type": "number", - "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." + "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.", @@ -33182,7 +36770,7 @@ ] }, "assistant": { - "description": "This is the assistant that is currently active. This is provided for convenience.\n\nThis matches one of the following:\n- `call.assistant`,\n- `call.assistantId`,\n- `call.squad[n].assistant`,\n- `call.squad[n].assistantId`,\n- `call.squadId->[n].assistant`,\n- `call.squadId->[n].assistantId`.", + "description": "This is the assistant that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -33190,7 +36778,7 @@ ] }, "customer": { - "description": "This is the customer associated with the call.\n\nThis matches one of the following:\n- `call.customer`,\n- `call.customerId`.", + "description": "This is the customer that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateCustomerDTO" @@ -33198,7 +36786,7 @@ ] }, "call": { - "description": "This is the call object.\n\nThis matches what was returned in POST /call.\n\nNote: This might get stale during the call. To get the latest call object, especially after the call is ended, use GET /call/:id.", + "description": "This is the call that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/Call" @@ -33215,7 +36803,7 @@ "type": "object", "properties": { "phoneNumber": { - "description": "This is the phone number associated with the call.\n\nThis matches one of the following:\n- `call.phoneNumber`,\n- `call.phoneNumberId`.", + "description": "This is the phone number that the message is associated with.", "oneOf": [ { "$ref": "#/components/schemas/CreateByoPhoneNumberDTO", @@ -33232,6 +36820,10 @@ { "$ref": "#/components/schemas/CreateVapiPhoneNumberDTO", "title": "VapiPhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateTelnyxPhoneNumberDTO", + "title": "TelnyxPhoneNumber" } ] }, @@ -33771,13 +37363,17 @@ { "$ref": "#/components/schemas/AnalysisCost", "title": "AnalysisCost" + }, + { + "$ref": "#/components/schemas/KnowledgeBaseCost", + "title": "KnowledgeBaseCost" } ] } }, "timestamp": { "type": "number", - "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." + "description": "This is the timestamp of the message." }, "artifact": { "description": "These are the artifacts from the call. This can also be found at `call.artifact` on GET /call/:id.", @@ -33788,7 +37384,7 @@ ] }, "assistant": { - "description": "This is the assistant that is currently active. This is provided for convenience.\n\nThis matches one of the following:\n- `call.assistant`,\n- `call.assistantId`,\n- `call.squad[n].assistant`,\n- `call.squad[n].assistantId`,\n- `call.squadId->[n].assistant`,\n- `call.squadId->[n].assistantId`.", + "description": "This is the assistant that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -33796,7 +37392,7 @@ ] }, "customer": { - "description": "This is the customer associated with the call.\n\nThis matches one of the following:\n- `call.customer`,\n- `call.customerId`.", + "description": "This is the customer that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateCustomerDTO" @@ -33804,7 +37400,7 @@ ] }, "call": { - "description": "This is the call object.\n\nThis matches what was returned in POST /call.\n\nNote: This might get stale during the call. To get the latest call object, especially after the call is ended, use GET /call/:id.", + "description": "This is the call that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/Call" @@ -33841,7 +37437,7 @@ "type": "object", "properties": { "phoneNumber": { - "description": "This is the phone number associated with the call.\n\nThis matches one of the following:\n- `call.phoneNumber`,\n- `call.phoneNumberId`.", + "description": "This is the phone number that the message is associated with.", "oneOf": [ { "$ref": "#/components/schemas/CreateByoPhoneNumberDTO", @@ -33858,6 +37454,10 @@ { "$ref": "#/components/schemas/CreateVapiPhoneNumberDTO", "title": "VapiPhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateTelnyxPhoneNumberDTO", + "title": "TelnyxPhoneNumber" } ] }, @@ -33870,7 +37470,7 @@ }, "timestamp": { "type": "number", - "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." + "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.", @@ -33881,7 +37481,7 @@ ] }, "assistant": { - "description": "This is the assistant that is currently active. This is provided for convenience.\n\nThis matches one of the following:\n- `call.assistant`,\n- `call.assistantId`,\n- `call.squad[n].assistant`,\n- `call.squad[n].assistantId`,\n- `call.squadId->[n].assistant`,\n- `call.squadId->[n].assistantId`.", + "description": "This is the assistant that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -33889,7 +37489,7 @@ ] }, "customer": { - "description": "This is the customer associated with the call.\n\nThis matches one of the following:\n- `call.customer`,\n- `call.customerId`.", + "description": "This is the customer that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateCustomerDTO" @@ -33897,7 +37497,7 @@ ] }, "call": { - "description": "This is the call object.\n\nThis matches what was returned in POST /call.\n\nNote: This might get stale during the call. To get the latest call object, especially after the call is ended, use GET /call/:id.", + "description": "This is the call that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/Call" @@ -33913,7 +37513,7 @@ "type": "object", "properties": { "phoneNumber": { - "description": "This is the phone number associated with the call.\n\nThis matches one of the following:\n- `call.phoneNumber`,\n- `call.phoneNumberId`.", + "description": "This is the phone number that the message is associated with.", "oneOf": [ { "$ref": "#/components/schemas/CreateByoPhoneNumberDTO", @@ -33930,6 +37530,10 @@ { "$ref": "#/components/schemas/CreateVapiPhoneNumberDTO", "title": "VapiPhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateTelnyxPhoneNumberDTO", + "title": "TelnyxPhoneNumber" } ] }, @@ -33977,7 +37581,7 @@ }, "timestamp": { "type": "number", - "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." + "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.", @@ -33988,7 +37592,7 @@ ] }, "assistant": { - "description": "This is the assistant that is currently active. This is provided for convenience.\n\nThis matches one of the following:\n- `call.assistant`,\n- `call.assistantId`,\n- `call.squad[n].assistant`,\n- `call.squad[n].assistantId`,\n- `call.squadId->[n].assistant`,\n- `call.squadId->[n].assistantId`.", + "description": "This is the assistant that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -33996,7 +37600,7 @@ ] }, "customer": { - "description": "This is the customer associated with the call.\n\nThis matches one of the following:\n- `call.customer`,\n- `call.customerId`.", + "description": "This is the customer that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateCustomerDTO" @@ -34004,7 +37608,7 @@ ] }, "call": { - "description": "This is the call object.\n\nThis matches what was returned in POST /call.\n\nNote: This might get stale during the call. To get the latest call object, especially after the call is ended, use GET /call/:id.", + "description": "This is the call that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/Call" @@ -34021,7 +37625,7 @@ "type": "object", "properties": { "phoneNumber": { - "description": "This is the phone number associated with the call.\n\nThis matches one of the following:\n- `call.phoneNumber`,\n- `call.phoneNumberId`.", + "description": "This is the phone number that the message is associated with.", "oneOf": [ { "$ref": "#/components/schemas/CreateByoPhoneNumberDTO", @@ -34038,6 +37642,10 @@ { "$ref": "#/components/schemas/CreateVapiPhoneNumberDTO", "title": "VapiPhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateTelnyxPhoneNumberDTO", + "title": "TelnyxPhoneNumber" } ] }, @@ -34050,7 +37658,7 @@ }, "timestamp": { "type": "number", - "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." + "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.", @@ -34061,7 +37669,7 @@ ] }, "assistant": { - "description": "This is the assistant that is currently active. This is provided for convenience.\n\nThis matches one of the following:\n- `call.assistant`,\n- `call.assistantId`,\n- `call.squad[n].assistant`,\n- `call.squad[n].assistantId`,\n- `call.squadId->[n].assistant`,\n- `call.squadId->[n].assistantId`.", + "description": "This is the assistant that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -34069,7 +37677,7 @@ ] }, "customer": { - "description": "This is the customer associated with the call.\n\nThis matches one of the following:\n- `call.customer`,\n- `call.customerId`.", + "description": "This is the customer that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateCustomerDTO" @@ -34077,7 +37685,7 @@ ] }, "call": { - "description": "This is the call object.\n\nThis matches what was returned in POST /call.\n\nNote: This might get stale during the call. To get the latest call object, especially after the call is ended, use GET /call/:id.", + "description": "This is the call that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/Call" @@ -34098,7 +37706,7 @@ "type": "object", "properties": { "phoneNumber": { - "description": "This is the phone number associated with the call.\n\nThis matches one of the following:\n- `call.phoneNumber`,\n- `call.phoneNumberId`.", + "description": "This is the phone number that the message is associated with.", "oneOf": [ { "$ref": "#/components/schemas/CreateByoPhoneNumberDTO", @@ -34115,6 +37723,10 @@ { "$ref": "#/components/schemas/CreateVapiPhoneNumberDTO", "title": "VapiPhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateTelnyxPhoneNumberDTO", + "title": "TelnyxPhoneNumber" } ] }, @@ -34148,7 +37760,7 @@ }, "timestamp": { "type": "number", - "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." + "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.", @@ -34159,7 +37771,7 @@ ] }, "assistant": { - "description": "This is the assistant that is currently active. This is provided for convenience.\n\nThis matches one of the following:\n- `call.assistant`,\n- `call.assistantId`,\n- `call.squad[n].assistant`,\n- `call.squad[n].assistantId`,\n- `call.squadId->[n].assistant`,\n- `call.squadId->[n].assistantId`.", + "description": "This is the assistant that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -34167,7 +37779,7 @@ ] }, "customer": { - "description": "This is the customer associated with the call.\n\nThis matches one of the following:\n- `call.customer`,\n- `call.customerId`.", + "description": "This is the customer that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateCustomerDTO" @@ -34175,7 +37787,7 @@ ] }, "call": { - "description": "This is the call object.\n\nThis matches what was returned in POST /call.\n\nNote: This might get stale during the call. To get the latest call object, especially after the call is ended, use GET /call/:id.", + "description": "This is the call that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/Call" @@ -34192,7 +37804,7 @@ "type": "object", "properties": { "phoneNumber": { - "description": "This is the phone number associated with the call.\n\nThis matches one of the following:\n- `call.phoneNumber`,\n- `call.phoneNumberId`.", + "description": "This is the phone number that the message is associated with.", "oneOf": [ { "$ref": "#/components/schemas/CreateByoPhoneNumberDTO", @@ -34209,6 +37821,10 @@ { "$ref": "#/components/schemas/CreateVapiPhoneNumberDTO", "title": "VapiPhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateTelnyxPhoneNumberDTO", + "title": "TelnyxPhoneNumber" } ] }, @@ -34241,7 +37857,7 @@ }, "timestamp": { "type": "number", - "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." + "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.", @@ -34252,7 +37868,7 @@ ] }, "assistant": { - "description": "This is the assistant that is currently active. This is provided for convenience.\n\nThis matches one of the following:\n- `call.assistant`,\n- `call.assistantId`,\n- `call.squad[n].assistant`,\n- `call.squad[n].assistantId`,\n- `call.squadId->[n].assistant`,\n- `call.squadId->[n].assistantId`.", + "description": "This is the assistant that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -34260,7 +37876,7 @@ ] }, "customer": { - "description": "This is the customer associated with the call.\n\nThis matches one of the following:\n- `call.customer`,\n- `call.customerId`.", + "description": "This is the customer that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateCustomerDTO" @@ -34268,7 +37884,7 @@ ] }, "call": { - "description": "This is the call object.\n\nThis matches what was returned in POST /call.\n\nNote: This might get stale during the call. To get the latest call object, especially after the call is ended, use GET /call/:id.", + "description": "This is the call that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/Call" @@ -34286,7 +37902,7 @@ "type": "object", "properties": { "phoneNumber": { - "description": "This is the phone number associated with the call.\n\nThis matches one of the following:\n- `call.phoneNumber`,\n- `call.phoneNumberId`.", + "description": "This is the phone number that the message is associated with.", "oneOf": [ { "$ref": "#/components/schemas/CreateByoPhoneNumberDTO", @@ -34303,6 +37919,10 @@ { "$ref": "#/components/schemas/CreateVapiPhoneNumberDTO", "title": "VapiPhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateTelnyxPhoneNumberDTO", + "title": "TelnyxPhoneNumber" } ] }, @@ -34868,7 +38488,7 @@ }, "timestamp": { "type": "number", - "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." + "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.", @@ -34879,7 +38499,7 @@ ] }, "assistant": { - "description": "This is the assistant that is currently active. This is provided for convenience.\n\nThis matches one of the following:\n- `call.assistant`,\n- `call.assistantId`,\n- `call.squad[n].assistant`,\n- `call.squad[n].assistantId`,\n- `call.squadId->[n].assistant`,\n- `call.squadId->[n].assistantId`.", + "description": "This is the assistant that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -34887,7 +38507,7 @@ ] }, "customer": { - "description": "This is the customer associated with the call.\n\nThis matches one of the following:\n- `call.customer`,\n- `call.customerId`.", + "description": "This is the customer that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateCustomerDTO" @@ -34895,7 +38515,7 @@ ] }, "call": { - "description": "This is the call object.\n\nThis matches what was returned in POST /call.\n\nNote: This might get stale during the call. To get the latest call object, especially after the call is ended, use GET /call/:id.", + "description": "This is the call that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/Call" @@ -34924,7 +38544,7 @@ "type": "object", "properties": { "phoneNumber": { - "description": "This is the phone number associated with the call.\n\nThis matches one of the following:\n- `call.phoneNumber`,\n- `call.phoneNumberId`.", + "description": "This is the phone number that the message is associated with.", "oneOf": [ { "$ref": "#/components/schemas/CreateByoPhoneNumberDTO", @@ -34941,6 +38561,10 @@ { "$ref": "#/components/schemas/CreateVapiPhoneNumberDTO", "title": "VapiPhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateTelnyxPhoneNumberDTO", + "title": "TelnyxPhoneNumber" } ] }, @@ -34989,7 +38613,7 @@ }, "timestamp": { "type": "number", - "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." + "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.", @@ -35000,7 +38624,7 @@ ] }, "assistant": { - "description": "This is the assistant that is currently active. This is provided for convenience.\n\nThis matches one of the following:\n- `call.assistant`,\n- `call.assistantId`,\n- `call.squad[n].assistant`,\n- `call.squad[n].assistantId`,\n- `call.squadId->[n].assistant`,\n- `call.squadId->[n].assistantId`.", + "description": "This is the assistant that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -35008,7 +38632,7 @@ ] }, "customer": { - "description": "This is the customer associated with the call.\n\nThis matches one of the following:\n- `call.customer`,\n- `call.customerId`.", + "description": "This is the customer that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateCustomerDTO" @@ -35016,7 +38640,7 @@ ] }, "call": { - "description": "This is the call object.\n\nThis matches what was returned in POST /call.\n\nNote: This might get stale during the call. To get the latest call object, especially after the call is ended, use GET /call/:id.", + "description": "This is the call that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/Call" @@ -35040,7 +38664,7 @@ "type": "object", "properties": { "phoneNumber": { - "description": "This is the phone number associated with the call.\n\nThis matches one of the following:\n- `call.phoneNumber`,\n- `call.phoneNumberId`.", + "description": "This is the phone number that the message is associated with.", "oneOf": [ { "$ref": "#/components/schemas/CreateByoPhoneNumberDTO", @@ -35057,6 +38681,10 @@ { "$ref": "#/components/schemas/CreateVapiPhoneNumberDTO", "title": "VapiPhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateTelnyxPhoneNumberDTO", + "title": "TelnyxPhoneNumber" } ] }, @@ -35069,7 +38697,7 @@ }, "timestamp": { "type": "number", - "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." + "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.", @@ -35080,7 +38708,7 @@ ] }, "assistant": { - "description": "This is the assistant that is currently active. This is provided for convenience.\n\nThis matches one of the following:\n- `call.assistant`,\n- `call.assistantId`,\n- `call.squad[n].assistant`,\n- `call.squad[n].assistantId`,\n- `call.squadId->[n].assistant`,\n- `call.squadId->[n].assistantId`.", + "description": "This is the assistant that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -35088,7 +38716,7 @@ ] }, "customer": { - "description": "This is the customer associated with the call.\n\nThis matches one of the following:\n- `call.customer`,\n- `call.customerId`.", + "description": "This is the customer that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateCustomerDTO" @@ -35096,7 +38724,7 @@ ] }, "call": { - "description": "This is the call object.\n\nThis matches what was returned in POST /call.\n\nNote: This might get stale during the call. To get the latest call object, especially after the call is ended, use GET /call/:id.", + "description": "This is the call that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/Call" @@ -35112,7 +38740,7 @@ "type": "object", "properties": { "phoneNumber": { - "description": "This is the phone number associated with the call.\n\nThis matches one of the following:\n- `call.phoneNumber`,\n- `call.phoneNumberId`.", + "description": "This is the phone number that the message is associated with.", "oneOf": [ { "$ref": "#/components/schemas/CreateByoPhoneNumberDTO", @@ -35129,6 +38757,10 @@ { "$ref": "#/components/schemas/CreateVapiPhoneNumberDTO", "title": "VapiPhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateTelnyxPhoneNumberDTO", + "title": "TelnyxPhoneNumber" } ] }, @@ -35146,10 +38778,6 @@ "$ref": "#/components/schemas/TransferDestinationAssistant", "title": "Assistant" }, - { - "$ref": "#/components/schemas/TransferDestinationStep", - "title": "Step" - }, { "$ref": "#/components/schemas/TransferDestinationNumber", "title": "Number" @@ -35162,7 +38790,7 @@ }, "timestamp": { "type": "number", - "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." + "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.", @@ -35173,7 +38801,7 @@ ] }, "assistant": { - "description": "This is the assistant that is currently active. This is provided for convenience.\n\nThis matches one of the following:\n- `call.assistant`,\n- `call.assistantId`,\n- `call.squad[n].assistant`,\n- `call.squad[n].assistantId`,\n- `call.squadId->[n].assistant`,\n- `call.squadId->[n].assistantId`.", + "description": "This is the assistant that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -35181,7 +38809,7 @@ ] }, "customer": { - "description": "This is the customer associated with the call.\n\nThis matches one of the following:\n- `call.customer`,\n- `call.customerId`.", + "description": "This is the customer that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateCustomerDTO" @@ -35189,7 +38817,7 @@ ] }, "call": { - "description": "This is the call object.\n\nThis matches what was returned in POST /call.\n\nNote: This might get stale during the call. To get the latest call object, especially after the call is ended, use GET /call/:id.", + "description": "This is the call that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/Call" @@ -35229,7 +38857,7 @@ "type": "object", "properties": { "phoneNumber": { - "description": "This is the phone number associated with the call.\n\nThis matches one of the following:\n- `call.phoneNumber`,\n- `call.phoneNumberId`.", + "description": "This is the phone number that the message is associated with.", "oneOf": [ { "$ref": "#/components/schemas/CreateByoPhoneNumberDTO", @@ -35246,6 +38874,10 @@ { "$ref": "#/components/schemas/CreateVapiPhoneNumberDTO", "title": "VapiPhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateTelnyxPhoneNumberDTO", + "title": "TelnyxPhoneNumber" } ] }, @@ -35259,7 +38891,7 @@ }, "timestamp": { "type": "number", - "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." + "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.", @@ -35270,7 +38902,7 @@ ] }, "assistant": { - "description": "This is the assistant that is currently active. This is provided for convenience.\n\nThis matches one of the following:\n- `call.assistant`,\n- `call.assistantId`,\n- `call.squad[n].assistant`,\n- `call.squad[n].assistantId`,\n- `call.squadId->[n].assistant`,\n- `call.squadId->[n].assistantId`.", + "description": "This is the assistant that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -35278,7 +38910,7 @@ ] }, "customer": { - "description": "This is the customer associated with the call.\n\nThis matches one of the following:\n- `call.customer`,\n- `call.customerId`.", + "description": "This is the customer that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateCustomerDTO" @@ -35286,7 +38918,7 @@ ] }, "call": { - "description": "This is the call object.\n\nThis matches what was returned in POST /call.\n\nNote: This might get stale during the call. To get the latest call object, especially after the call is ended, use GET /call/:id.", + "description": "This is the call that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/Call" @@ -35325,7 +38957,7 @@ "type": "object", "properties": { "phoneNumber": { - "description": "This is the phone number associated with the call.\n\nThis matches one of the following:\n- `call.phoneNumber`,\n- `call.phoneNumberId`.", + "description": "This is the phone number that the message is associated with.", "oneOf": [ { "$ref": "#/components/schemas/CreateByoPhoneNumberDTO", @@ -35342,6 +38974,10 @@ { "$ref": "#/components/schemas/CreateVapiPhoneNumberDTO", "title": "VapiPhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateTelnyxPhoneNumberDTO", + "title": "TelnyxPhoneNumber" } ] }, @@ -35354,7 +38990,7 @@ }, "timestamp": { "type": "number", - "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." + "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.", @@ -35365,7 +39001,7 @@ ] }, "assistant": { - "description": "This is the assistant that is currently active. This is provided for convenience.\n\nThis matches one of the following:\n- `call.assistant`,\n- `call.assistantId`,\n- `call.squad[n].assistant`,\n- `call.squad[n].assistantId`,\n- `call.squadId->[n].assistant`,\n- `call.squadId->[n].assistantId`.", + "description": "This is the assistant that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -35373,7 +39009,7 @@ ] }, "customer": { - "description": "This is the customer associated with the call.\n\nThis matches one of the following:\n- `call.customer`,\n- `call.customerId`.", + "description": "This is the customer that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateCustomerDTO" @@ -35381,7 +39017,7 @@ ] }, "call": { - "description": "This is the call object.\n\nThis matches what was returned in POST /call.\n\nNote: This might get stale during the call. To get the latest call object, especially after the call is ended, use GET /call/:id.", + "description": "This is the call that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/Call" @@ -35397,7 +39033,7 @@ "type": "object", "properties": { "phoneNumber": { - "description": "This is the phone number associated with the call.\n\nThis matches one of the following:\n- `call.phoneNumber`,\n- `call.phoneNumberId`.", + "description": "This is the phone number that the message is associated with.", "oneOf": [ { "$ref": "#/components/schemas/CreateByoPhoneNumberDTO", @@ -35414,6 +39050,10 @@ { "$ref": "#/components/schemas/CreateVapiPhoneNumberDTO", "title": "VapiPhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateTelnyxPhoneNumberDTO", + "title": "TelnyxPhoneNumber" } ] }, @@ -35426,7 +39066,7 @@ }, "timestamp": { "type": "number", - "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." + "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.", @@ -35437,7 +39077,7 @@ ] }, "assistant": { - "description": "This is the assistant that is currently active. This is provided for convenience.\n\nThis matches one of the following:\n- `call.assistant`,\n- `call.assistantId`,\n- `call.squad[n].assistant`,\n- `call.squad[n].assistantId`,\n- `call.squadId->[n].assistant`,\n- `call.squadId->[n].assistantId`.", + "description": "This is the assistant that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -35445,7 +39085,7 @@ ] }, "customer": { - "description": "This is the customer associated with the call.\n\nThis matches one of the following:\n- `call.customer`,\n- `call.customerId`.", + "description": "This is the customer that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateCustomerDTO" @@ -35453,7 +39093,7 @@ ] }, "call": { - "description": "This is the call object.\n\nThis matches what was returned in POST /call.\n\nNote: This might get stale during the call. To get the latest call object, especially after the call is ended, use GET /call/:id.", + "description": "This is the call that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/Call" @@ -35474,7 +39114,7 @@ "type": "object", "properties": { "phoneNumber": { - "description": "This is the phone number associated with the call.\n\nThis matches one of the following:\n- `call.phoneNumber`,\n- `call.phoneNumberId`.", + "description": "This is the phone number that the message is associated with.", "oneOf": [ { "$ref": "#/components/schemas/CreateByoPhoneNumberDTO", @@ -35491,6 +39131,10 @@ { "$ref": "#/components/schemas/CreateVapiPhoneNumberDTO", "title": "VapiPhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateTelnyxPhoneNumberDTO", + "title": "TelnyxPhoneNumber" } ] }, @@ -35503,7 +39147,7 @@ }, "timestamp": { "type": "number", - "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." + "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.", @@ -35514,7 +39158,7 @@ ] }, "assistant": { - "description": "This is the assistant that is currently active. This is provided for convenience.\n\nThis matches one of the following:\n- `call.assistant`,\n- `call.assistantId`,\n- `call.squad[n].assistant`,\n- `call.squad[n].assistantId`,\n- `call.squadId->[n].assistant`,\n- `call.squadId->[n].assistantId`.", + "description": "This is the assistant that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -35522,7 +39166,7 @@ ] }, "customer": { - "description": "This is the customer associated with the call.\n\nThis matches one of the following:\n- `call.customer`,\n- `call.customerId`.", + "description": "This is the customer that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateCustomerDTO" @@ -35530,7 +39174,7 @@ ] }, "call": { - "description": "This is the call object.\n\nThis matches what was returned in POST /call.\n\nNote: This might get stale during the call. To get the latest call object, especially after the call is ended, use GET /call/:id.", + "description": "This is the call that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/Call" @@ -35551,7 +39195,7 @@ "type": "object", "properties": { "phoneNumber": { - "description": "This is the phone number associated with the call.\n\nThis matches one of the following:\n- `call.phoneNumber`,\n- `call.phoneNumberId`.", + "description": "This is the phone number that the message is associated with.", "oneOf": [ { "$ref": "#/components/schemas/CreateByoPhoneNumberDTO", @@ -35568,6 +39212,10 @@ { "$ref": "#/components/schemas/CreateVapiPhoneNumberDTO", "title": "VapiPhoneNumber" + }, + { + "$ref": "#/components/schemas/CreateTelnyxPhoneNumberDTO", + "title": "TelnyxPhoneNumber" } ] }, @@ -35580,7 +39228,7 @@ }, "timestamp": { "type": "number", - "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." + "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.", @@ -35591,7 +39239,7 @@ ] }, "assistant": { - "description": "This is the assistant that is currently active. This is provided for convenience.\n\nThis matches one of the following:\n- `call.assistant`,\n- `call.assistantId`,\n- `call.squad[n].assistant`,\n- `call.squad[n].assistantId`,\n- `call.squadId->[n].assistant`,\n- `call.squadId->[n].assistantId`.", + "description": "This is the assistant that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -35599,7 +39247,7 @@ ] }, "customer": { - "description": "This is the customer associated with the call.\n\nThis matches one of the following:\n- `call.customer`,\n- `call.customerId`.", + "description": "This is the customer that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/CreateCustomerDTO" @@ -35607,7 +39255,7 @@ ] }, "call": { - "description": "This is the call object.\n\nThis matches what was returned in POST /call.\n\nNote: This might get stale during the call. To get the latest call object, especially after the call is ended, use GET /call/:id.", + "description": "This is the call that the message is associated with.", "allOf": [ { "$ref": "#/components/schemas/Call" @@ -35728,11 +39376,10 @@ }, "assistantId": { "type": "string", - "nullable": true, - "description": "This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead." + "description": "This is the assistant ID that will be used for the call. To use a transient assistant, use `assistant` instead.\n\nTo start a call with:\n- Assistant, use `assistantId` or `assistant`\n- Squad, use `squadId` or `squad`\n- Workflow, use `workflowId` or `workflow`" }, "assistant": { - "description": "This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.\n\nIf you're unsure why you're getting an invalid assistant, try logging your response and send the JSON blob to POST /assistant which will return the validation errors.", + "description": "This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.\n\nTo start a call with:\n- Assistant, use `assistant`\n- Squad, use `squad`\n- Workflow, use `workflow`", "allOf": [ { "$ref": "#/components/schemas/CreateAssistantDTO" @@ -35749,16 +39396,28 @@ }, "squadId": { "type": "string", - "description": "This is the squad that will be used for the call. To use a transient squad, use `squad` instead." + "description": "This is the squad that will be used for the call. To use a transient squad, use `squad` instead.\n\nTo start a call with:\n- Assistant, use `assistant` or `assistantId`\n- Squad, use `squad` or `squadId`\n- Workflow, use `workflow` or `workflowId`" }, "squad": { - "description": "This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.", + "description": "This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.\n\nTo start a call with:\n- Assistant, use `assistant` or `assistantId`\n- Squad, use `squad` or `squadId`\n- Workflow, use `workflow` or `workflowId`", "allOf": [ { "$ref": "#/components/schemas/CreateSquadDTO" } ] }, + "workflowId": { + "type": "string", + "description": "[BETA] This feature is in active development. The API and behavior are subject to change as we refine it based on user feedback.\n\nThis is the workflow that will be used for the call. To use a transient workflow, use `workflow` instead.\n\nTo start a call with:\n- Assistant, use `assistant` or `assistantId`\n- Squad, use `squad` or `squadId`\n- Workflow, use `workflow` or `workflowId`" + }, + "workflow": { + "description": "[BETA] This feature is in active development. The API and behavior are subject to change as we refine it based on user feedback.\n\nThis is a workflow that will be used for the call. To use an existing workflow, use `workflowId` instead.\n\nTo start a call with:\n- Assistant, use `assistant` or `assistantId`\n- Squad, use `squad` or `squadId`\n- Workflow, use `workflow` or `workflowId`", + "allOf": [ + { + "$ref": "#/components/schemas/CreateWorkflowDTO" + } + ] + }, "error": { "type": "string", "description": "This is the error if the call shouldn't be accepted. This is spoken to the customer.\n\nIf this is sent, `assistantId`, `assistant`, `squadId`, `squad`, and `destination` are ignored." @@ -35810,20 +39469,17 @@ "type": "object", "properties": { "message": { - "type": "array", "description": "This is the message that will be spoken to the user.\n\nIf this is not returned, assistant will speak:\n1. a `request-complete` or `request-failed` message from `tool.messages`, if it exists\n2. a response generated by the model, if not", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/ToolMessageComplete", - "title": "ToolMessageComplete" - }, - { - "$ref": "#/components/schemas/ToolMessageFailed", - "title": "ToolMessageFailed" - } - ] - } + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + } + ] }, "name": { "type": "string", @@ -35840,6 +39496,10 @@ "error": { "type": "string", "description": "This is the error if the tool call was not successful. This is added to the conversation history.\n\nFurther, if this is returned, assistant will speak:\n1. the `message`, if it exists and is of type `request-failed`\n2. a `request-failed` message from `tool.messages`, if it exists\n3. a response generated by the model, if neither exist" + }, + "metadata": { + "type": "object", + "description": "This is optional metadata for the tool call result to be sent to the client." } }, "required": [ @@ -35873,10 +39533,6 @@ "$ref": "#/components/schemas/TransferDestinationAssistant", "title": "Assistant" }, - { - "$ref": "#/components/schemas/TransferDestinationStep", - "title": "Step" - }, { "$ref": "#/components/schemas/TransferDestinationNumber", "title": "Number" @@ -36260,6 +39916,10 @@ "secondsFromStart": { "type": "number", "description": "The number of seconds from the start of the conversation." + }, + "metadata": { + "type": "object", + "description": "The metadata for the tool call result." } }, "required": [ @@ -36498,7 +40158,8 @@ "enum": [ "twilio", "google", - "openai" + "openai", + "vapi" ] }, "promptTextTokens": { @@ -36533,6 +40194,41 @@ "cost" ] }, + "KnowledgeBaseCost": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "This is the type of cost, always 'knowledge-base' for this class.", + "enum": [ + "knowledge-base" + ] + }, + "model": { + "type": "object", + "description": "This is the model that was used for processing the knowledge base." + }, + "promptTokens": { + "type": "number", + "description": "This is the number of prompt tokens used in the knowledge base query." + }, + "completionTokens": { + "type": "number", + "description": "This is the number of completion tokens generated in the knowledge base query." + }, + "cost": { + "type": "number", + "description": "This is the cost of the component in USD." + } + }, + "required": [ + "type", + "model", + "promptTokens", + "completionTokens", + "cost" + ] + }, "FunctionToolWithToolCall": { "type": "object", "properties": { @@ -36568,13 +40264,148 @@ "type": { "type": "string", "enum": [ - "function" + "function" + ], + "description": "The type of tool. \"function\" for Function tool." + }, + "toolCall": { + "$ref": "#/components/schemas/ToolCall" + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type", + "toolCall" + ] + }, + "GhlToolWithToolCall": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "ghl" + ], + "description": "The type of tool. \"ghl\" for GHL tool." + }, + "toolCall": { + "$ref": "#/components/schemas/ToolCall" + }, + "metadata": { + "$ref": "#/components/schemas/GhlToolMetadata" + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type", + "toolCall", + "metadata" + ] + }, + "MakeToolWithToolCall": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "make" ], - "description": "The type of tool. \"function\" for Function tool." + "description": "The type of tool. \"make\" for Make tool." }, "toolCall": { "$ref": "#/components/schemas/ToolCall" }, + "metadata": { + "$ref": "#/components/schemas/MakeToolMetadata" + }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", "allOf": [ @@ -36594,10 +40425,11 @@ }, "required": [ "type", - "toolCall" + "toolCall", + "metadata" ] }, - "GhlToolWithToolCall": { + "BashToolWithToolCall": { "type": "object", "properties": { "async": { @@ -36632,15 +40464,27 @@ "type": { "type": "string", "enum": [ - "ghl" + "bash" ], - "description": "The type of tool. \"ghl\" for GHL tool." + "description": "The type of tool. \"bash\" for Bash tool." + }, + "subType": { + "type": "string", + "enum": [ + "bash_20241022" + ], + "description": "The sub type of tool." }, "toolCall": { "$ref": "#/components/schemas/ToolCall" }, - "metadata": { - "$ref": "#/components/schemas/GhlToolMetadata" + "name": { + "type": "string", + "description": "The name of the tool, fixed to 'bash'", + "default": "bash", + "enum": [ + "bash" + ] }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", @@ -36661,11 +40505,12 @@ }, "required": [ "type", + "subType", "toolCall", - "metadata" + "name" ] }, - "MakeToolWithToolCall": { + "ComputerToolWithToolCall": { "type": "object", "properties": { "async": { @@ -36700,15 +40545,39 @@ "type": { "type": "string", "enum": [ - "make" + "computer" ], - "description": "The type of tool. \"make\" for Make tool." + "description": "The type of tool. \"computer\" for Computer tool." + }, + "subType": { + "type": "string", + "enum": [ + "computer_20241022" + ], + "description": "The sub type of tool." }, "toolCall": { "$ref": "#/components/schemas/ToolCall" }, - "metadata": { - "$ref": "#/components/schemas/MakeToolMetadata" + "name": { + "type": "string", + "description": "The name of the tool, fixed to 'computer'", + "default": "computer", + "enum": [ + "computer" + ] + }, + "displayWidthPx": { + "type": "number", + "description": "The display width in pixels" + }, + "displayHeightPx": { + "type": "number", + "description": "The display height in pixels" + }, + "displayNumber": { + "type": "number", + "description": "Optional display number" }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", @@ -36729,11 +40598,14 @@ }, "required": [ "type", + "subType", "toolCall", - "metadata" + "name", + "displayWidthPx", + "displayHeightPx" ] }, - "BashToolWithToolCall": { + "TextEditorToolWithToolCall": { "type": "object", "properties": { "async": { @@ -36768,14 +40640,14 @@ "type": { "type": "string", "enum": [ - "bash" + "textEditor" ], - "description": "The type of tool. \"bash\" for Bash tool." + "description": "The type of tool. \"textEditor\" for Text Editor tool." }, "subType": { "type": "string", "enum": [ - "bash_20241022" + "text_editor_20241022" ], "description": "The sub type of tool." }, @@ -36784,10 +40656,10 @@ }, "name": { "type": "string", - "description": "The name of the tool, fixed to 'bash'", - "default": "bash", + "description": "The name of the tool, fixed to 'str_replace_editor'", + "default": "str_replace_editor", "enum": [ - "bash" + "str_replace_editor" ] }, "function": { @@ -36814,7 +40686,7 @@ "name" ] }, - "ComputerToolWithToolCall": { + "GoogleCalendarCreateEventToolWithToolCall": { "type": "object", "properties": { "async": { @@ -36849,39 +40721,76 @@ "type": { "type": "string", "enum": [ - "computer" - ], - "description": "The type of tool. \"computer\" for Computer tool." - }, - "subType": { - "type": "string", - "enum": [ - "computer_20241022" + "google.calendar.event.create" ], - "description": "The sub type of tool." + "description": "The type of tool. \"google.calendar.event.create\" for Google Calendar tool." }, "toolCall": { "$ref": "#/components/schemas/ToolCall" }, - "name": { - "type": "string", - "description": "The name of the tool, fixed to 'computer'", - "default": "computer", - "enum": [ - "computer" + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } ] }, - "displayWidthPx": { - "type": "number", - "description": "The display width in pixels" + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type", + "toolCall" + ] + }, + "GoogleSheetsRowAppendToolWithToolCall": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false }, - "displayHeightPx": { - "type": "number", - "description": "The display height in pixels" + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } }, - "displayNumber": { - "type": "number", - "description": "Optional display number" + "type": { + "type": "string", + "enum": [ + "google.sheets.row.append" + ], + "description": "The type of tool. \"google.sheets.row.append\" for Google Sheets tool." + }, + "toolCall": { + "$ref": "#/components/schemas/ToolCall" }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", @@ -36902,14 +40811,10 @@ }, "required": [ "type", - "subType", - "toolCall", - "name", - "displayWidthPx", - "displayHeightPx" + "toolCall" ] }, - "TextEditorToolWithToolCall": { + "GoHighLevelCalendarAvailabilityToolWithToolCall": { "type": "object", "properties": { "async": { @@ -36944,28 +40849,77 @@ "type": { "type": "string", "enum": [ - "textEditor" + "gohighlevel.calendar.availability.check" ], - "description": "The type of tool. \"textEditor\" for Text Editor tool." + "description": "The type of tool. \"gohighlevel.calendar.availability.check\" for GoHighLevel Calendar availability check tool." }, - "subType": { + "toolCall": { + "$ref": "#/components/schemas/ToolCall" + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type", + "toolCall" + ] + }, + "GoHighLevelCalendarEventCreateToolWithToolCall": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { "type": "string", "enum": [ - "text_editor_20241022" + "gohighlevel.calendar.event.create" ], - "description": "The sub type of tool." + "description": "The type of tool. \"gohighlevel.calendar.event.create\" for GoHighLevel Calendar event create tool." }, "toolCall": { "$ref": "#/components/schemas/ToolCall" }, - "name": { - "type": "string", - "description": "The name of the tool, fixed to 'str_replace_editor'", - "default": "str_replace_editor", - "enum": [ - "str_replace_editor" - ] - }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", "allOf": [ @@ -36985,12 +40939,10 @@ }, "required": [ "type", - "subType", - "toolCall", - "name" + "toolCall" ] }, - "GoogleCalendarCreateEventToolWithToolCall": { + "GoHighLevelContactCreateToolWithToolCall": { "type": "object", "properties": { "async": { @@ -37025,9 +40977,9 @@ "type": { "type": "string", "enum": [ - "google.calendar.event.create" + "gohighlevel.contact.create" ], - "description": "The type of tool. \"google.calendar.event.create\" for Google Calendar tool." + "description": "The type of tool. \"gohighlevel.contact.create\" for GoHighLevel contact create tool." }, "toolCall": { "$ref": "#/components/schemas/ToolCall" @@ -37054,7 +41006,7 @@ "toolCall" ] }, - "GoogleSheetsRowAppendToolWithToolCall": { + "GoHighLevelContactGetToolWithToolCall": { "type": "object", "properties": { "async": { @@ -37089,9 +41041,9 @@ "type": { "type": "string", "enum": [ - "google.sheets.row.append" + "gohighlevel.contact.get" ], - "description": "The type of tool. \"google.sheets.row.append\" for Google Sheets tool." + "description": "The type of tool. \"gohighlevel.contact.get\" for GoHighLevel contact get tool." }, "toolCall": { "$ref": "#/components/schemas/ToolCall"